Ramkumar Ramachandra
artagnon.com · Personal blog · on HN since 2010
Ramkumar Ramachandra writes about compilers, LLVM internals, programming language history, proof assistants, and open source.
What HN saysHN commenters use his Lean versus Coq post as a starting point for talking about proof assistants and learning advanced math.
16HN people shared it
4linked it in comments
32stories submitted
262story points
3 months agolast shared
2010people per year2026
Most-shared posts
- 1Inside a register allocator2 people · 33 points · first shared 2016 · 1 comments on HN
- 2A tour of the LLVM back end2 people · 5 points · first shared 2024 · discussion on HN
- 3ReMarkable: The Perfect Tablet for Academics2 people · 5 points · first shared 2019 · discussion on HN
- 4An introduction to auto-vectorization with LLVM2 people · 3 points · first shared 2024 · discussion on HN
- 5Lean versus Coq: The Cultural Chasm2 people · 3 points · first shared 2020 · discussion on HN
- 6An opinionated history of programming languages1 people · 104 points · first shared 2020 · 133 comments on HN
- 7Low-hanging fruit1 people · 24 points · first shared 2024 · 21 comments on HN
- 8Modern Thoughts on Open Source1 people · 22 points · first shared 2010 · 9 comments on HN
- 9An Opinionated Comparison of Cities1 people · 12 points · first shared 2024 · 6 comments on HN
- 10Is Open Source really Sustainable?1 people · 10 points · first shared 2010 · 13 comments on HN
- 11The Capitalist Wet Dream1 people · 6 points · first shared 2025 · 1 comments on HN
- 12Incrementally updating the Dominator1 people · 4 points · first shared 2016 · discussion on HN
- 13Deficiencies in LLVM's LoopVectorize1 people · 4 points · first shared 2024 · discussion on HN
- 14No, the Singularity isn't coming – machine learning and common sense1 people · 4 points · first shared 2020 · 1 comments on HN
- 15The Git Sequencer1 people · 4 points · first shared 2012 · discussion on HN
What HN people wrote when they linked it
artagnon · 2020-10-26
I've self-taught myself undergraduate-level Mathematics, and am currently enrolled in an advanced Masters program specialized in higher category theory at Université de Paris. Here are some thoughts:
First, the amount I learnt on a day-to-day basis from self-studying in my free time pales in comparison to the amount I learnt from a structured course ending with an exam, in which you have to commit to studying 2~4 hours of math every single day.
Second, classroom lectures mainly act as a structured table-of-contents for working through various textbooks. The problem sheets they distribute in the tutorials are very helpful, as is the discussion of problems that some students might have got stuck in.
Graduate-level math textbooks are fantastic, and the authors have poured 10+ years of their lives writing them. No online course with cute interactive video can substitute them. Having said that, there are some video lectures that can act as good motivation for studying a subject. For instance, Wildberger's lectures on algebraic topology (find them on YouTube) are a great starting point for the subject.
You first have to decide on what you want to learn, by looking through various fields, and narrow your scope. Mathematics is a huge discipline, and you have to decide what you like, and work through the prerequisites in a disciplined manner.
I cannot emphasize the importance of working through exercises enough. All mathematics textbooks have exercises at the end of each…
xvilka · 2026-02-21
Lean is a great idea, especially the 4th version, a huge level up from the 3rd one, but its core still deficient[1] in some particular scenarious (see an interesting discussion[2] in the Rock (formerly Coq) issue tracker). Not sure if it might hinder the automation with the AI.
[1] https://artagnon.com/logic/leancoq
[2] https://github.com/rocq-prover/rocq/issues/10871
sadfev · 2021-08-11
I am still very new to proof theory. So please take this with a mountain of salt.
At the core all these proof assistants, is a dependent total functional programming language.
Total means all functions must be obviously be terminating.
Dependent means types can dependent on values or more generally you can have quantifiers (sigma and pi).
Both Coq and Lean have variants of a dependent type theory called “Calculus of Inductive Constructions”.
Coq and Lean have tactics which can be thought of an embedded “proof language”. It’s an useful fiction because underneath it is just functions and inductive definitions.
Agda and Idris doesn’t have tactics, so the proofs have to be done through computation (by defining and apply functions and data types)
Lean and Coq differ in how they encode mathematical objects. Lean makes it much easier to make use of classical axioms. (Defining axioms is easy in both Lean and Coq)
From a more practical POV, Coq has the best documentation, books and development tools.
Lean has the WORST development tools of all 4. However has extensive libraries for mathematics. ( It is very painful to use )
Agda and Idris are about the same (set up is a pain otherwise about as good as Haskell development)
Even though Idris is marketed for “practical programming” it doesn’t have partial functions!!
I am not sure if Agda supports partial functions.
A more thorough comparison can be found here : https://artagnon.com/articles/leancoq
newusertoday · 2024-01-24
probably chinese https://artagnon.com/art/xi