<?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</id>
	<title>Lean theorem prover - 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"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=Lean_theorem_prover&amp;action=history"/>
	<updated>2026-10-21T11:18:51Z</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&amp;diff=6751&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&amp;diff=6751&amp;oldid=prev"/>
		<updated>2026-10-15T19:34:18Z</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:34, 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:Lean theorem prover}}&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:Lean theorem prover}}&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;&amp;lt;templatestyles src=&amp;quot;Principia Machina/styles.css&amp;quot; /&amp;gt;&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;&amp;lt;templatestyles src=&amp;quot;Principia Machina/styles.css&amp;quot; /&amp;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;&amp;#039;&amp;#039;&amp;#039;Lean&amp;#039;&amp;#039;&amp;#039; is a proof assistant and a programming language. A person writes definitions,&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;&amp;#039;&amp;#039;&amp;#039;Lean&amp;#039;&amp;#039;&amp;#039; is a proof assistant and a programming language. A person writes definitions,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PMA Publisher</name></author>
	</entry>
	<entry>
		<id>https://invarians.org/index.php?title=Lean_theorem_prover&amp;diff=6544&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&amp;diff=6544&amp;oldid=prev"/>
		<updated>2026-10-14T18:00:43Z</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:Lean theorem prover}}&lt;br /&gt;
&amp;lt;templatestyles src=&amp;quot;Principia Machina/styles.css&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Lean&amp;#039;&amp;#039;&amp;#039; is a proof assistant and a programming language. A person writes definitions,&lt;br /&gt;
statements and proofs in Lean&amp;#039;s formal language, and Lean checks each proof against the&lt;br /&gt;
rules of its logic before it accepts the statement as a theorem. The same language is used to&lt;br /&gt;
write programs that run, and a definition used by a program can also be the subject of a&lt;br /&gt;
theorem.&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,&lt;br /&gt;
2026, section 1, &amp;quot;Introduction&amp;quot;. https://lean-lang.org/doc/reference/4.34.0/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lean was begun in 2013 by Leonardo de Moura at Microsoft Research. Its fourth version,&lt;br /&gt;
Lean 4, is written largely in Lean itself. Since 2023 it has been developed by the Lean&lt;br /&gt;
Focused Research Organization, a non-profit, with a new version about every month, and its&lt;br /&gt;
users maintain Mathlib, a library of mathematics checked by Lean.&lt;br /&gt;
&lt;br /&gt;
This edition describes Lean: what it checks and how, the type theory behind it, how the&lt;br /&gt;
program is built, where it came from, and what it is used for. It is written for two readers&lt;br /&gt;
at once: one with no logic or programming who wants to know what a checked proof is, and one&lt;br /&gt;
who wants the rules. Its Lean code was checked with Lean 4.34.1, and its statements about the&lt;br /&gt;
state of things are dated October 2026.&lt;br /&gt;
&lt;br /&gt;
== What Lean checks ==&lt;br /&gt;
&lt;br /&gt;
In Lean a statement is a &amp;#039;&amp;#039;&amp;#039;type&amp;#039;&amp;#039;&amp;#039;, and a proof of it is a &amp;#039;&amp;#039;&amp;#039;term&amp;#039;&amp;#039;&amp;#039; of that type: an&lt;br /&gt;
expression built by the rules of the logic. Checking a proof is then checking that a term has&lt;br /&gt;
the type claimed for it, the operation a compiler performs on a program. This is the idea&lt;br /&gt;
called [[Lean theorem prover/Explainers/Propositions as types|propositions as types]]. The&lt;br /&gt;
logic is a dependent type theory, in which a type may depend on a value. It belongs to the&lt;br /&gt;
family of the Calculus of Inductive Constructions: propositions form a universe of their own,&lt;br /&gt;
and almost every type, from the natural numbers to equality, is built from a few&lt;br /&gt;
constructors.&lt;br /&gt;
&lt;br /&gt;
One part of Lean makes the check: the &amp;#039;&amp;#039;&amp;#039;Lean kernel&amp;#039;&amp;#039;&amp;#039;, a small type checker written in C++.&lt;br /&gt;
Everything else, the parser, the elaborator that fills in what a person leaves out, the&lt;br /&gt;
tactics that construct a proof step by step, the automation that searches for one, only proposes&lt;br /&gt;
terms, and the Lean kernel accepts or refuses each of them. A fault in a tactic can stop a&lt;br /&gt;
proof from being found, but a wrong term it produces is refused.&amp;lt;ref name=&amp;quot;refman&amp;quot; /&amp;gt; Code&lt;br /&gt;
that goes around the Lean kernel on purpose is a separate matter, taken up at&lt;br /&gt;
[[Lean theorem prover/System/Proof export and independent checkers|Proof export and independent checkers]].&lt;br /&gt;
&lt;br /&gt;
A theorem Lean accepts follows, as written, from the rules of Lean&amp;#039;s logic and from the&lt;br /&gt;
axioms its proof uses. Lean provides three axioms, propositional extensionality, the&lt;br /&gt;
soundness of quotients and a principle of choice, and it lists on request the axioms any&lt;br /&gt;
theorem depends on. The rest of what an accepted proof rests on is a short list: that the&lt;br /&gt;
Lean kernel is correct, that the logic is consistent, and that the machine runs the Lean&lt;br /&gt;
kernel faithfully. The consistency of the logic is known relative to set theory with&lt;br /&gt;
inaccessible cardinals, and was proved for the type theory of Lean 3.&lt;br /&gt;
[[Lean theorem prover/Explainers/What has to be trusted|What has to be trusted]] gives the&lt;br /&gt;
list in full.&lt;br /&gt;
&lt;br /&gt;
The check does not establish two things. It does not establish that a statement says what its&lt;br /&gt;
author meant: a theorem with a mistyped hypothesis can be true and say nothing&lt;br /&gt;
([[Lean theorem prover/Explainers/Stating the right thing|Stating the right thing]]). And a&lt;br /&gt;
theorem about a model of the world is a theorem about the model; whether the world fits the&lt;br /&gt;
model is a question for experiment&lt;br /&gt;
([[Lean theorem prover/Explainers/Lean and physics|Lean and physics]]).&lt;br /&gt;
&lt;br /&gt;
== Where Lean came from, and what it is used for ==&lt;br /&gt;
&lt;br /&gt;
Lean draws on fifty years of work. Automath, designed by N. G. de Bruijn from the late 1960s,&lt;br /&gt;
was the first working system for checking mathematics by computer. Robin Milner&amp;#039;s LCF, begun&lt;br /&gt;
at Stanford in 1972 and redesigned at Edinburgh, introduced tactics. Per Martin-Löf made&lt;br /&gt;
propositions as types the foundation of a theory of mathematics, and the Calculus of Constructions of Thierry Coquand and Gérard Huet began the&lt;br /&gt;
family of theories to which Lean&amp;#039;s logic belongs. Lean&amp;#039;s own history runs from its first&lt;br /&gt;
versions to Lean 4, whose first stable version appeared in September 2023.&lt;br /&gt;
&lt;br /&gt;
Lean is used to formalise research mathematics, in one case within a month of a proof&amp;#039;s&lt;br /&gt;
appearance; to verify software in industry; to teach proof; to check proofs written by&lt;br /&gt;
machine-learning systems; and, so far on a small scale, for physics. The Applications pages&lt;br /&gt;
describe each use together with what it did not establish.&lt;br /&gt;
&lt;br /&gt;
== What this edition is not ==&lt;br /&gt;
&lt;br /&gt;
It is not a tutorial. It does not teach how to write Lean; a reader who wants to learn will&lt;br /&gt;
find the free books on [[Lean theorem prover/Further reading|Further reading]] more useful.&lt;br /&gt;
&lt;br /&gt;
It is not Lean&amp;#039;s documentation. The authority on Lean is its documentation, chiefly &amp;#039;&amp;#039;The&lt;br /&gt;
Lean Language Reference&amp;#039;&amp;#039;, which describes itself as a reference work rather than a tutorial,&lt;br /&gt;
and its source code.&amp;lt;ref name=&amp;quot;refman&amp;quot; /&amp;gt; The pages here cite both. Every block of Lean code on&lt;br /&gt;
them was compiled with Lean 4.34.1, without Mathlib unless a page says otherwise, and every&lt;br /&gt;
message quoted is the one that version prints, so a reader can run the code and see.&lt;br /&gt;
&lt;br /&gt;
== Three levels of reading ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;pma-fig&amp;quot; style=&amp;quot;text-align: center; overflow-x: auto; margin: 0.6em 0 0.2em 0;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;graphviz&amp;gt;&lt;br /&gt;
digraph levels {&lt;br /&gt;
  rankdir=TB; bgcolor=&amp;quot;transparent&amp;quot;; nodesep=0.3; ranksep=0.35; size=&amp;quot;7.2,5&amp;quot;;&lt;br /&gt;
  node [shape=box, style=&amp;quot;rounded,filled&amp;quot;, fontname=&amp;quot;Helvetica&amp;quot;, fontsize=10, color=&amp;quot;#a2a9b1&amp;quot;, fillcolor=&amp;quot;#eaecf0&amp;quot;, fontcolor=&amp;quot;#202122&amp;quot;, margin=&amp;quot;0.14,0.07&amp;quot;];&lt;br /&gt;
  edge [color=&amp;quot;#54595d&amp;quot;, fontname=&amp;quot;Helvetica&amp;quot;, fontsize=9, fontcolor=&amp;quot;#202122&amp;quot;, arrowsize=0.7];&lt;br /&gt;
  hub [label=&amp;quot;Level 1\nThis page: what Lean is and what it checks&amp;quot;, fillcolor=&amp;quot;#ffedad&amp;quot;, color=&amp;quot;#ac6600&amp;quot;];&lt;br /&gt;
  exp [label=&amp;quot;Level 2\nExplainers (22)\nplain language&amp;quot;, fillcolor=&amp;quot;#cedff2&amp;quot;, color=&amp;quot;#6a8fbf&amp;quot;];&lt;br /&gt;
  his [label=&amp;quot;History (9)\nat the explainers&amp;#039; level&amp;quot;, fillcolor=&amp;quot;#cedff2&amp;quot;, color=&amp;quot;#6a8fbf&amp;quot;];&lt;br /&gt;
  app [label=&amp;quot;Applications (9)\nat the explainers&amp;#039; level&amp;quot;, fillcolor=&amp;quot;#cedff2&amp;quot;, color=&amp;quot;#6a8fbf&amp;quot;];&lt;br /&gt;
  fnd [label=&amp;quot;Level 3\nFoundations (12)\nthe type theory&amp;quot;, fillcolor=&amp;quot;#cef2e0&amp;quot;, color=&amp;quot;#14866d&amp;quot;];&lt;br /&gt;
  sys [label=&amp;quot;Level 3\nSystem (12)\nhow Lean works&amp;quot;, fillcolor=&amp;quot;#cef2e0&amp;quot;, color=&amp;quot;#14866d&amp;quot;];&lt;br /&gt;
  ref [label=&amp;quot;Reference pages\nChronology, Glossary, Notation,\nSources, Bibliography, Further reading&amp;quot;];&lt;br /&gt;
  { rank=same; exp; his; app; }&lt;br /&gt;
  { rank=same; fnd; sys; }&lt;br /&gt;
  hub -&amp;gt; exp;&lt;br /&gt;
  exp:s -&amp;gt; fnd:n;&lt;br /&gt;
  fnd -&amp;gt; sys;&lt;br /&gt;
  sys -&amp;gt; his [constraint=false];&lt;br /&gt;
  his -&amp;gt; app;&lt;br /&gt;
  app -&amp;gt; ref;&lt;br /&gt;
  sys -&amp;gt; ref [style=invis];&lt;br /&gt;
  exp:se -&amp;gt; fnd:ne [style=dashed, dir=none, label=&amp;quot; paired&amp;quot;];&lt;br /&gt;
  exp:e -&amp;gt; sys:n [style=dashed, dir=none, label=&amp;quot; paired&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graphviz&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 0.88em; color: #54595d;&amp;quot;&amp;gt;The three levels of the edition. Solid arrows follow the reading order that each page&amp;#039;s &amp;#039;&amp;#039;Next&amp;#039;&amp;#039; section continues; dashed lines join each explainer to the technical pages named at the head of both.&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The edition is written at three levels.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;This page&amp;#039;&amp;#039;&amp;#039;: what Lean is and what it checks, and a map of the rest.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;The explainers&amp;#039;&amp;#039;&amp;#039;: twenty-two pages in plain language, for a reader with no logic or programming. They use no notation beyond a short line of Lean where one shows the point better than words.&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;The technical pages&amp;#039;&amp;#039;&amp;#039;, in two sections. The twelve &amp;#039;&amp;#039;&amp;#039;Foundations&amp;#039;&amp;#039;&amp;#039; pages set out the type theory, with its rules written as formulas and Lean code that compiles. The twelve &amp;#039;&amp;#039;&amp;#039;System&amp;#039;&amp;#039;&amp;#039; pages describe how Lean works, from elaboration to the compiler, with Lean&amp;#039;s own output.&lt;br /&gt;
&lt;br /&gt;
Each explainer but the last, on physics, is paired with the technical pages that treat its&lt;br /&gt;
subject in full, and the pairing is shown at the head of both: an explainer carries a line headed &amp;#039;&amp;#039;Technical&lt;br /&gt;
version&amp;#039;&amp;#039;, a technical page a line headed &amp;#039;&amp;#039;Plain-language version&amp;#039;&amp;#039;. A reader can enter at&lt;br /&gt;
either level and cross at any point. The History and Applications pages sit beside the&lt;br /&gt;
explainers and are written at their level. Six reference pages close the edition.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;How to read it.&amp;#039;&amp;#039;&amp;#039; Every page ends with a section headed &amp;#039;&amp;#039;Next&amp;#039;&amp;#039;, whose first link&lt;br /&gt;
continues one reading order: this page, the explainers, the Foundations pages, the System&lt;br /&gt;
pages, the History, the Applications, and the reference pages; a second link, where there is&lt;br /&gt;
one, leads sideways. A reader who wants the idea without the formalism can read the&lt;br /&gt;
explainers, the History and the Applications. A reader who knows some logic can start at&lt;br /&gt;
[[Lean theorem prover/Foundations/Terms, types and judgments|Terms, types and judgments]]&lt;br /&gt;
and use the explainers as summaries. [[Lean theorem prover/Notation|Notation]] sets the&lt;br /&gt;
formulas of the Foundations pages beside Lean&amp;#039;s own syntax for the same things, and the&lt;br /&gt;
[[Lean theorem prover/Glossary|Glossary]] defines the terms.&lt;br /&gt;
&lt;br /&gt;
== The pages ==&lt;br /&gt;
&lt;br /&gt;
=== Explainers ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Explainer !! Technical pages&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/What a proof assistant does|What a proof assistant does]] || [[Lean theorem prover/System/Elaboration|Elaboration]], [[Lean theorem prover/System/The Lean kernel|The Lean kernel]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Checking instead of convincing|Checking instead of convincing]] || [[Lean theorem prover/Foundations/Terms, types and judgments|Terms, types and judgments]], [[Lean theorem prover/System/The Lean kernel|The Lean kernel]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Propositions as types|Propositions as types]] || [[Lean theorem prover/Foundations/Terms, types and judgments|Terms, types and judgments]], [[Lean theorem prover/Foundations/Dependent function types|Dependent function types]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Types as specifications|Types as specifications]] || [[Lean theorem prover/Foundations/Dependent function types|Dependent function types]], [[Lean theorem prover/Foundations/Inductive types and recursors|Inductive types and recursors]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Why there is no type of all types|Why there is no type of all types]] || [[Lean theorem prover/Foundations/Universes and Prop|Universes and Prop]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/What the axioms are|What the axioms are]] || [[Lean theorem prover/Foundations/The three axioms|The three axioms]], [[Lean theorem prover/Foundations/Classical logic from choice|Classical logic from choice]], [[Lean theorem prover/Foundations/Quotient types|Quotient types]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Two kinds of equality|Two kinds of equality]] || [[Lean theorem prover/Foundations/Definitional equality|Definitional equality]], [[Lean theorem prover/Foundations/Propositional equality|Propositional equality]], [[Lean theorem prover/Foundations/Proof irrelevance and subsingleton elimination|Proof irrelevance and subsingleton elimination]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Functions that always finish|Functions that always finish]] || [[Lean theorem prover/Foundations/Structural and well-founded recursion|Structural and well-founded recursion]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Building things from constructors|Building things from constructors]] || [[Lean theorem prover/Foundations/Inductive types and recursors|Inductive types and recursors]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Induction, as the machine sees it|Induction, as the machine sees it]] || [[Lean theorem prover/Foundations/Inductive types and recursors|Inductive types and recursors]], [[Lean theorem prover/Foundations/Structural and well-founded recursion|Structural and well-founded recursion]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Tactics|Tactics]] || [[Lean theorem prover/System/The tactic framework|The tactic framework]], [[Lean theorem prover/System/Metaprogramming in Lean|Metaprogramming in Lean]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Holes and goals|Holes and goals]] || [[Lean theorem prover/System/Metavariables and unification|Metavariables and unification]], [[Lean theorem prover/System/The tactic framework|The tactic framework]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Automation and its limits|Automation and its limits]] || [[Lean theorem prover/System/Decision procedures|Decision procedures]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/When Lean says no|When Lean says no]] || [[Lean theorem prover/System/Elaboration|Elaboration]], [[Lean theorem prover/System/Metavariables and unification|Metavariables and unification]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Computation inside proofs|Computation inside proofs]] || [[Lean theorem prover/Foundations/Definitional equality|Definitional equality]], [[Lean theorem prover/System/Decision procedures|Decision procedures]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/The small trusted core|The small trusted core]] || [[Lean theorem prover/System/The Lean kernel|The Lean kernel]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/What has to be trusted|What has to be trusted]] || [[Lean theorem prover/System/The Lean kernel|The Lean kernel]], [[Lean theorem prover/Foundations/Consistency and the metatheory|Consistency and the metatheory]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Checking a proof again later|Checking a proof again later]] || [[Lean theorem prover/System/Proof export and independent checkers|Proof export and independent checkers]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Stating the right thing|Stating the right thing]] || [[Lean theorem prover/Foundations/Terms, types and judgments|Terms, types and judgments]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Programs and proofs in one language|Programs and proofs in one language]] || [[Lean theorem prover/System/The compiler and runtime|The compiler and runtime]], [[Lean theorem prover/System/Monads and do-notation|Monads and do-notation]], [[Lean theorem prover/System/Syntax extension and hygienic macros|Syntax extension and hygienic macros]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/A library of mathematics|A library of mathematics]] || [[Lean theorem prover/System/Type classes and instance resolution|Type classes and instance resolution]], [[Lean theorem prover/System/Lake and Lean projects|Lake and Lean projects]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Lean theorem prover/Explainers/Lean and physics|Lean and physics]] || none; it leads to [[Lean theorem prover/Applications/Physics in Lean|Physics in Lean]] and [[Lean theorem prover/Applications/Principia Machina|Principia Machina]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foundations ===&lt;br /&gt;
&lt;br /&gt;
* [[Lean theorem prover/Foundations/Terms, types and judgments|Terms, types and judgments]]: the typing judgment, contexts, and the small term language the Lean kernel receives.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Dependent function types|Dependent function types]]: the one function type, of which implication and &amp;quot;for all&amp;quot; are cases.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Universes and Prop|Universes and Prop]]: the hierarchy of types of types, and the universe of propositions.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Inductive types and recursors|Inductive types and recursors]]: types given by constructors, and the recursor derived from them.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Structural and well-founded recursion|Structural and well-founded recursion]]: how recursive definitions reach the Lean kernel, and why they terminate.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Definitional equality|Definitional equality]]: equality by computation, its rules and its limits.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Propositional equality|Propositional equality]]: equality as a proposition, and what follows from its single constructor.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Quotient types|Quotient types]]: types made by identifying related elements.&lt;br /&gt;
* [[Lean theorem prover/Foundations/The three axioms|The three axioms]]: what each says, and how a theorem&amp;#039;s dependence on them is audited.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Classical logic from choice|Classical logic from choice]]: excluded middle as a theorem.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Proof irrelevance and subsingleton elimination|Proof irrelevance and subsingleton elimination]]: why the content of a proof never matters, and what that costs.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Consistency and the metatheory|Consistency and the metatheory]]: what is known about Lean&amp;#039;s consistency.&lt;br /&gt;
&lt;br /&gt;
=== System ===&lt;br /&gt;
&lt;br /&gt;
* [[Lean theorem prover/System/Elaboration|Elaboration]]: from typed text to a fully explicit term.&lt;br /&gt;
* [[Lean theorem prover/System/The Lean kernel|The Lean kernel]]: what the checker checks, and where its trust ends.&lt;br /&gt;
* [[Lean theorem prover/System/Metavariables and unification|Metavariables and unification]]: holes in terms, and how Lean fills them.&lt;br /&gt;
* [[Lean theorem prover/System/Type classes and instance resolution|Type classes and instance resolution]]: values Lean finds by itself.&lt;br /&gt;
* [[Lean theorem prover/System/The tactic framework|The tactic framework]]: goals, the tactic monad, and a tactic in three lines.&lt;br /&gt;
* [[Lean theorem prover/System/Decision procedures|Decision procedures]]: five automatic tactics, and what each asks to be trusted.&lt;br /&gt;
* [[Lean theorem prover/System/Syntax extension and hygienic macros|Syntax extension and hygienic macros]]: new notation, and names that cannot be captured.&lt;br /&gt;
* [[Lean theorem prover/System/Metaprogramming in Lean|Metaprogramming in Lean]]: programs whose data is Lean itself.&lt;br /&gt;
* [[Lean theorem prover/System/The compiler and runtime|The compiler and runtime]]: from a definition to machine code.&lt;br /&gt;
* [[Lean theorem prover/System/Lake and Lean projects|Lake and Lean projects]]: Lake, Lean&amp;#039;s tool for compiling projects, and how a project fixes its version of Lean.&lt;br /&gt;
* [[Lean theorem prover/System/Proof export and independent checkers|Proof export and independent checkers]]: checking a proof again, with other programs.&lt;br /&gt;
* [[Lean theorem prover/System/Monads and do-notation|Monads and do-notation]]: effects as values in a pure language.&lt;br /&gt;
&lt;br /&gt;
=== History ===&lt;br /&gt;
&lt;br /&gt;
* [[Lean theorem prover/History/Automath|Automath]]: the first system for checking mathematics by computer.&lt;br /&gt;
* [[Lean theorem prover/History/LCF and the tactic idea|LCF and the tactic idea]]: protected theorems and programmable tactics.&lt;br /&gt;
* [[Lean theorem prover/History/Martin-Löf type theory|Martin-Löf type theory]]: propositions as types made a foundation.&lt;br /&gt;
* [[Lean theorem prover/History/The Calculus of Constructions|The Calculus of Constructions]]: Coquand and Huet&amp;#039;s theory, Coq, and Lean&amp;#039;s place in the family.&lt;br /&gt;
* [[Lean theorem prover/History/Lean 1 to Lean 3|Lean 1 to Lean 3]]: the first versions, from 2013.&lt;br /&gt;
* [[Lean theorem prover/History/Lean 4|Lean 4]]: the rewrite in Lean, and the move of the mathematical library.&lt;br /&gt;
* [[Lean theorem prover/History/Mathlib and its community|Mathlib and its community]]: the library, its review and its size.&lt;br /&gt;
* [[Lean theorem prover/History/The Liquid Tensor Experiment|The Liquid Tensor Experiment]]: a challenge from research mathematics, 2020 to 2022.&lt;br /&gt;
* [[Lean theorem prover/History/Lean since 2023|Lean since 2023]]: a version every month, new automation, and two flaws found in the Lean kernel.&lt;br /&gt;
&lt;br /&gt;
=== Applications ===&lt;br /&gt;
&lt;br /&gt;
* [[Lean theorem prover/Applications/Research mathematics|Research mathematics]]: formalised results, and why mathematicians formalise.&lt;br /&gt;
* [[Lean theorem prover/Applications/The polynomial Freiman-Ruzsa conjecture|The polynomial Freiman-Ruzsa conjecture]]: a new theorem checked in three weeks.&lt;br /&gt;
* [[Lean theorem prover/Applications/The Fermat&amp;#039;s Last Theorem project|The Fermat&amp;#039;s Last Theorem project]]: a funded project, and a machine-written proof.&lt;br /&gt;
* [[Lean theorem prover/Applications/The equational theories project|The equational theories project]]: twenty-two million implications, with Lean as referee.&lt;br /&gt;
* [[Lean theorem prover/Applications/Software verification|Software verification]]: three industrial uses, and what &amp;quot;verified&amp;quot; covers in each.&lt;br /&gt;
* [[Lean theorem prover/Applications/Teaching with Lean|Teaching with Lean]]: a game, textbooks and courses.&lt;br /&gt;
* [[Lean theorem prover/Applications/Machine learning and theorem proving|Machine learning and theorem proving]]: Lean as the checker of machine-written proofs.&lt;br /&gt;
* [[Lean theorem prover/Applications/Physics in Lean|Physics in Lean]]: a library for physics, and what a theorem about a model says.&lt;br /&gt;
* [[Lean theorem prover/Applications/Principia Machina|Principia Machina]]: this wiki&amp;#039;s framework for testing physical hypotheses, restated in Lean.&lt;br /&gt;
&lt;br /&gt;
=== Reference pages ===&lt;br /&gt;
&lt;br /&gt;
* [[Lean theorem prover/Chronology|Chronology]]: dated events, from Automath to October 2026.&lt;br /&gt;
* [[Lean theorem prover/Glossary|Glossary]]: the edition&amp;#039;s terms, defined.&lt;br /&gt;
* [[Lean theorem prover/Notation|Notation]]: the formulas beside Lean&amp;#039;s syntax.&lt;br /&gt;
* [[Lean theorem prover/Sources|Sources]]: what was read for the edition, and what was not.&lt;br /&gt;
* [[Lean theorem prover/Bibliography|Bibliography]]: the works the edition cites.&lt;br /&gt;
* [[Lean theorem prover/Further reading|Further reading]]: books, a game and papers for a reader who wants more.&lt;br /&gt;
&lt;br /&gt;
== Next ==&lt;br /&gt;
&lt;br /&gt;
[[Lean theorem prover/Explainers/What a proof assistant does|What a proof assistant does]], the&lt;br /&gt;
first explainer. A reader who wants the rules first can begin at&lt;br /&gt;
[[Lean theorem prover/Foundations/Terms, types and judgments|Terms, types and judgments]].&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>