<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=Lean_theorem_prover%2FFurther_reading</id>
	<title>Lean theorem prover/Further reading - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://invarians.org/index.php?action=history&amp;feed=atom&amp;title=Lean_theorem_prover%2FFurther_reading"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=Lean_theorem_prover/Further_reading&amp;action=history"/>
	<updated>2026-10-21T07:33:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://invarians.org/index.php?title=Lean_theorem_prover/Further_reading&amp;diff=6821&amp;oldid=prev</id>
		<title>PMA Publisher: Published from the Principia Machina source</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=Lean_theorem_prover/Further_reading&amp;diff=6821&amp;oldid=prev"/>
		<updated>2026-10-15T19:35:54Z</updated>

		<summary type="html">&lt;p&gt;Published from the Principia Machina source&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw-interface=&quot;&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 19:35, 15 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{DISPLAYTITLE:Further reading}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{DISPLAYTITLE:Further reading}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Lean theorem prover map}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This edition describes Lean; it does not teach it. The works below do, and all of them can be&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;This edition describes Lean; it does not teach it. The works below do, and all of them can be&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;read free of charge online. Each line says what the work is for; the link is in its&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;read free of charge online. Each line says what the work is for; the link is in its&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key pma_cutover_20261020t051351z-soft_:diff:1.41:old-6614:rev-6821:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>PMA Publisher</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=Lean_theorem_prover/Further_reading&amp;diff=6614&amp;oldid=prev</id>
		<title>PMA Publisher: Published from the Principia Machina source</title>
		<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=Lean_theorem_prover/Further_reading&amp;diff=6614&amp;oldid=prev"/>
		<updated>2026-10-14T18:01:23Z</updated>

		<summary type="html">&lt;p&gt;Published from the Principia Machina source&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{DISPLAYTITLE:Further reading}}&lt;br /&gt;
This edition describes Lean; it does not teach it. The works below do, and all of them can be&lt;br /&gt;
read free of charge online. Each line says what the work is for; the link is in its&lt;br /&gt;
reference. Most are cited on the edition&amp;#039;s pages, which are named where they draw on a work.&lt;br /&gt;
&lt;br /&gt;
== Books and manuals ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Theorem Proving in Lean 4&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by Jeremy Avigad, Leonardo de Moura, Soonho Kong and Sebastian Ullrich: Lean&amp;#039;s logic from the inside, from dependent type theory and propositions to tactics, inductive types, type classes and the axioms; the companion to the [[Lean theorem prover/Foundations/Terms, types and judgments|Foundations]] pages.&amp;lt;ref name=&amp;quot;tpil&amp;quot;&amp;gt;Jeremy Avigad, Leonardo de Moura, Soonho Kong and Sebastian Ullrich, with contributions from the Lean community, &amp;#039;&amp;#039;Theorem Proving in Lean 4&amp;#039;&amp;#039;, online book, lean-lang.org. https://lean-lang.org/theorem_proving_in_lean4/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Functional Programming in Lean&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by David Thrane Christiansen: Lean as a programming language, from its basics through type classes and monads to dependent types and proofs about programs; the companion to [[Lean theorem prover/System/Monads and do-notation|Monads and do-notation]].&amp;lt;ref name=&amp;quot;fpil&amp;quot;&amp;gt;David Thrane Christiansen, &amp;#039;&amp;#039;Functional Programming in Lean&amp;#039;&amp;#039;, online book, lean-lang.org. https://lean-lang.org/functional_programming_in_lean/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Mathematics in Lean&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by Jeremy Avigad and Patrick Massot: doing mathematics with Mathlib, from basic logic and number theory to topology, calculus and measure theory.&amp;lt;ref name=&amp;quot;mil&amp;quot;&amp;gt;Jeremy Avigad and Patrick Massot, &amp;#039;&amp;#039;Mathematics in Lean&amp;#039;&amp;#039;, online book. https://leanprover-community.github.io/mathematics_in_lean/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;The Lean Language Reference&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by the Lean developers: the precise description of the language, a reference work rather than a tutorial, with an edition for each version of Lean; this edition cites the one for Lean 4.34.0.&amp;lt;ref name=&amp;quot;refman&amp;quot;&amp;gt;&amp;#039;&amp;#039;The Lean Language Reference&amp;#039;&amp;#039;, for Lean 4.34.0, lean-lang.org, 2026. https://lean-lang.org/doc/reference/4.34.0/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Metaprogramming in Lean 4&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by Arthur Paulino and others: how to write new notation, commands and tactics in Lean; the companion to [[Lean theorem prover/System/Metaprogramming in Lean|Metaprogramming in Lean]].&amp;lt;ref name=&amp;quot;mpb&amp;quot;&amp;gt;Arthur Paulino, Damiano Testa, Edward Ayers, Evgenia Karunus, Henrik Böving, Jannis Limperg, Siddhartha Gadgil and Siddharth Bhat, &amp;#039;&amp;#039;Metaprogramming in Lean 4&amp;#039;&amp;#039;, online book, Lean community. https://leanprover-community.github.io/lean4-metaprogramming-book/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Logic and Proof&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by J. Avigad, R. Y. Lewis and F. van Doorn, adapted to Lean 4 by J. Hua: an introduction to symbolic logic and to writing proofs, with Lean.&amp;lt;ref name=&amp;quot;lap&amp;quot;&amp;gt;J. Avigad, J. Hua, R. Y. Lewis and F. van Doorn, &amp;#039;&amp;#039;Logic and Proof&amp;#039;&amp;#039;, online textbook, Lean 4 edition. https://leanprover-community.github.io/logic_and_proof/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;The Mechanics of Proof&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by Heather Macbeth: a first university course in writing careful proofs, with Lean beside the text.&amp;lt;ref name=&amp;quot;mop&amp;quot;&amp;gt;Heather Macbeth, &amp;#039;&amp;#039;The Mechanics of Proof&amp;#039;&amp;#039;, online book for Math 2001, Fordham University, 2022–2024. https://hrmacbeth.github.io/math2001/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Formalising Mathematics&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;, by Kevin Buzzard: the handbook of a course for mathematics students who want to formalise with Mathlib.&amp;lt;ref name=&amp;quot;fm&amp;quot;&amp;gt;Kevin Buzzard, &amp;#039;&amp;#039;Formalising Mathematics&amp;#039;&amp;#039;, course handbook, Imperial College London, 2024 edition. https://www.ma.imperial.ac.uk/~buzzard/xena/formalising-mathematics-2024/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Lean theorem prover/Applications/Teaching with Lean|Teaching with Lean]] describes several of these books and the courses built on them.&lt;br /&gt;
&lt;br /&gt;
== A game ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;The Natural Number Game&amp;#039;&amp;#039;&amp;#039;, by Kevin Buzzard, Jon Eugster and others: played in a web browser, it constructs the natural numbers from zero and the next number and proves their facts one level at a time.&amp;lt;ref name=&amp;quot;nng&amp;quot;&amp;gt;Kevin Buzzard, Jon Eugster et al., &amp;#039;&amp;#039;Natural Number Game&amp;#039;&amp;#039;, Lean 4 version, on the Lean Game Server: https://adam.math.hhu.de/#/g/leanprover-community/nng4 (source and credits: https://github.com/leanprover-community/NNG4)&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Papers ==&lt;br /&gt;
&lt;br /&gt;
* The first description of Lean, by Leonardo de Moura and four colleagues (2015).&amp;lt;ref name=&amp;quot;lean2015&amp;quot;&amp;gt;Leonardo de Moura, Soonho Kong, Jeremy Avigad, Floris van Doorn and Jakob von Raumer, &amp;quot;The Lean Theorem Prover (system description)&amp;quot;, in &amp;#039;&amp;#039;Automated Deduction – CADE-25&amp;#039;&amp;#039;, Lecture Notes in Computer Science 9195, Springer, 2015, pp. 378–388. doi:10.1007/978-3-319-21401-6_26. Author&amp;#039;s copy: https://lean-lang.org/papers/system.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Tactics written in Lean itself, in Lean 3 (2017).&amp;lt;ref name=&amp;quot;ebner2017&amp;quot;&amp;gt;Gabriel Ebner, Sebastian Ullrich, Jared Roesch, Jeremy Avigad and Leonardo de Moura, &amp;quot;A metaprogramming framework for formal verification&amp;quot;, &amp;#039;&amp;#039;Proceedings of the ACM on Programming Languages&amp;#039;&amp;#039; 1 (ICFP), article 34, 2017. doi:10.1145/3110278. Author&amp;#039;s copy: https://lean-lang.org/papers/tactic.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
* The design of Lean 4, by de Moura and Ullrich (2021).&amp;lt;ref name=&amp;quot;lean4&amp;quot;&amp;gt;Leonardo de Moura and Sebastian Ullrich, &amp;quot;The Lean 4 Theorem Prover and Programming Language (System Description)&amp;quot;, in &amp;#039;&amp;#039;Automated Deduction – CADE 28&amp;#039;&amp;#039;, Lecture Notes in Computer Science 12699, Springer, 2021, pp. 625–635. doi:10.1007/978-3-030-79876-5_37. Author&amp;#039;s copy: https://lean-lang.org/papers/lean4.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Mathlib&amp;#039;s own account of itself (2020).&amp;lt;ref name=&amp;quot;cpp2020&amp;quot;&amp;gt;The mathlib Community, &amp;quot;The Lean Mathematical Library&amp;quot;, in &amp;#039;&amp;#039;Proceedings of the 9th ACM SIGPLAN International Conference on Certified Programs and Proofs (CPP 2020)&amp;#039;&amp;#039;, ACM, 2020, pp. 367–381. doi:10.1145/3372885.3373824. Preprint: https://arxiv.org/abs/1910.09336&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Lean&amp;#039;s type theory written out rule by rule, with a proof of its consistency relative to set theory, for Lean 3 (2019).&amp;lt;ref name=&amp;quot;carneiro2019&amp;quot;&amp;gt;Mario Carneiro, &amp;#039;&amp;#039;The Type Theory of Lean&amp;#039;&amp;#039;, MSc thesis, Carnegie Mellon University, 2019. https://github.com/digama0/lean-type-theory/releases/tag/v1.0&amp;lt;/ref&amp;gt;&lt;br /&gt;
* A complete type checker for Lean 4 written in Lean, and work towards proving it correct (2026).&amp;lt;ref name=&amp;quot;lean4lean&amp;quot;&amp;gt;Mario Carneiro, &amp;quot;Lean4Lean: Verifying a Typechecker for Lean, in Lean&amp;quot;, in &amp;#039;&amp;#039;31st International Conference on Types for Proofs and Programs (TYPES 2025)&amp;#039;&amp;#039;, LIPIcs vol. 384, pp. 2:1–2:23, 2026. https://doi.org/10.4230/LIPIcs.TYPES.2025.2&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Lean&amp;#039;s hygienic macros (2022).&amp;lt;ref name=&amp;quot;bn&amp;quot;&amp;gt;Sebastian Ullrich and Leonardo de Moura, &amp;quot;Beyond Notations: Hygienic Macro Expansion for Theorem Proving Languages&amp;quot;, &amp;#039;&amp;#039;Logical Methods in Computer Science&amp;#039;&amp;#039; 18 (2), 2022, article 1. https://doi.org/10.46298/lmcs-18(2:1)2022&amp;lt;/ref&amp;gt;&lt;br /&gt;
* The reference counting behind Lean&amp;#039;s runtime (2019).&amp;lt;ref name=&amp;quot;beans&amp;quot;&amp;gt;Sebastian Ullrich and Leonardo de Moura, &amp;quot;Counting Immutable Beans: Reference Counting Optimized for Purely Functional Programming&amp;quot;, in &amp;#039;&amp;#039;Proceedings of the 31st Symposium on Implementation and Application of Functional Languages (IFL 2019)&amp;#039;&amp;#039;, ACM, 2019. doi:10.1145/3412932.3412935. Preprint: https://arxiv.org/abs/1908.05647&amp;lt;/ref&amp;gt;&lt;br /&gt;
* The search behind Lean 4&amp;#039;s type classes (2020).&amp;lt;ref name=&amp;quot;selsam&amp;quot;&amp;gt;Daniel Selsam, Sebastian Ullrich and Leonardo de Moura, &amp;quot;Tabled Typeclass Resolution&amp;quot;, arXiv:2001.04301, 2020. https://arxiv.org/abs/2001.04301&amp;lt;/ref&amp;gt;&lt;br /&gt;
* Why mathematics might be checked by machine, and the de Bruijn criterion (2005).&amp;lt;ref name=&amp;quot;bw2005&amp;quot;&amp;gt;Henk Barendregt and Freek Wiedijk, &amp;quot;The challenge of computer mathematics&amp;quot;, &amp;#039;&amp;#039;Philosophical Transactions of the Royal Society A&amp;#039;&amp;#039; 363 (1835), 2005, pp. 2351–2375. doi:10.1098/rsta.2005.1650. Author&amp;#039;s copy: https://www.cs.ru.nl/~freek/pubs/rspaper.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
* What it takes to believe a proof a machine has checked (1998).&amp;lt;ref name=&amp;quot;pollack&amp;quot;&amp;gt;R. Pollack, &amp;quot;How to believe a machine-checked proof&amp;quot;, in G. Sambin and J. M. Smith (eds), &amp;#039;&amp;#039;Twenty Five Years of Constructive Type Theory&amp;#039;&amp;#039;, Oxford University Press, 1998; first issued as BRICS Report RS-97-18, Aarhus University, 1997. https://doi.org/10.7146/brics.v4i18.18945&amp;lt;/ref&amp;gt;&lt;br /&gt;
* The history of LCF and its descendants, by a participant (2000).&amp;lt;ref name=&amp;quot;gordon2000&amp;quot;&amp;gt;Mike Gordon, &amp;quot;From LCF to HOL: a short history&amp;quot;, in G. Plotkin, C. Stirling and M. Tofte (eds), &amp;#039;&amp;#039;Proof, Language, and Interaction: Essays in Honour of Robin Milner&amp;#039;&amp;#039;, MIT Press, 2000. Author&amp;#039;s copy: https://www.cl.cam.ac.uk/~mjcg/papers/HolHistory.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every work cited in the edition is listed in the [[Lean theorem prover/Bibliography|Bibliography]].&lt;br /&gt;
&lt;br /&gt;
== Next ==&lt;br /&gt;
&lt;br /&gt;
[[Lean theorem prover|Lean theorem prover]], the start of the edition.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PMA Publisher</name></author>
	</entry>
</feed>