<?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%2FHistory%2FAutomath</id>
	<title>Lean theorem prover/History/Automath - 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%2FHistory%2FAutomath"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=Lean_theorem_prover/History/Automath&amp;action=history"/>
	<updated>2026-10-21T06:37:04Z</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/History/Automath&amp;diff=6798&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/History/Automath&amp;diff=6798&amp;oldid=prev"/>
		<updated>2026-10-15T19:35:23Z</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:Automath}}&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:Automath}}&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;Automath was the first working system for checking mathematics by computer.&amp;lt;ref name=&amp;quot;gn2022&amp;quot; /&amp;gt; N. G. de Bruijn designed it at Eindhoven in the late 1960s, and his group used it through the 1970s. This page states what the project set out to do, what its languages were, what its largest text showed, and which of its ideas Lean still uses.&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;Automath was the first working system for checking mathematics by computer.&amp;lt;ref name=&amp;quot;gn2022&amp;quot; /&amp;gt; N. G. de Bruijn designed it at Eindhoven in the late 1960s, and his group used it through the 1970s. This page states what the project set out to do, what its languages were, what its largest text showed, and which of its ideas Lean still uses.&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;br&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;br&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/History/Automath&amp;diff=6591&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/History/Automath&amp;diff=6591&amp;oldid=prev"/>
		<updated>2026-10-14T18:01:11Z</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:Automath}}&lt;br /&gt;
Automath was the first working system for checking mathematics by computer.&amp;lt;ref name=&amp;quot;gn2022&amp;quot; /&amp;gt; N. G. de Bruijn designed it at Eindhoven in the late 1960s, and his group used it through the 1970s. This page states what the project set out to do, what its languages were, what its largest text showed, and which of its ideas Lean still uses.&lt;br /&gt;
&lt;br /&gt;
== A language for whole books ==&lt;br /&gt;
&lt;br /&gt;
De Bruijn&amp;#039;s own survey of 1980 says the project &amp;quot;was conceived in 1966&amp;quot; and that the first report was written in 1968.&amp;lt;ref name=&amp;quot;survey&amp;quot;&amp;gt;N. G. de Bruijn, &amp;quot;A survey of the project Automath&amp;quot;, in J. P. Seldin and J. R. Hindley (eds.), &amp;#039;&amp;#039;To H. B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism&amp;#039;&amp;#039;, Academic Press, 1980, pp. 579–606; reprinted in Nederpelt, Geuvers and de Vrijer (eds.), &amp;#039;&amp;#039;Selected Papers on Automath&amp;#039;&amp;#039; (1994), pp. 141–161. Scan in the Automath Archive: https://automath.win.tue.nl/archive/pdf/aut072.pdf&amp;lt;/ref&amp;gt; His preface to van Benthem Jutting&amp;#039;s book of 1979 gives early 1967 instead, and the Automath Archive at Eindhoven dates the first ideas to around 1967 and the large-scale work to roughly 1970–1975.&amp;lt;ref name=&amp;quot;cwi&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;archive&amp;quot;&amp;gt;The Automath Archive, Eindhoven University of Technology, &amp;quot;About Automath&amp;quot;. https://automath.win.tue.nl/aboutautomath.htm&amp;lt;/ref&amp;gt; An early published account is de Bruijn&amp;#039;s paper to the Symposium on Automatic Demonstration at Versailles in December 1968, printed in 1970, which says that the language was developed in 1967 and 1968.&amp;lt;ref name=&amp;quot;aut1970&amp;quot;&amp;gt;N. G. de Bruijn, &amp;quot;The mathematical language AUTOMATH, its usage, and some of its extensions&amp;quot;, in &amp;#039;&amp;#039;Symposium on Automatic Demonstration&amp;#039;&amp;#039;, Lecture Notes in Mathematics 125, Springer, 1970, pp. 29–61. doi:10.1007/BFb0060623. Scan in the Automath Archive: https://automath.win.tue.nl/archive/pdf/aut002.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The aim was a way of writing entire mathematical theories so precisely that their correctness could be checked by formal operations on the text, without any appeal to meaning. If the checking is formal, a computer can do it.&amp;lt;ref name=&amp;quot;survey&amp;quot; /&amp;gt; The name means mathematics aided by an automaton.&amp;lt;ref name=&amp;quot;gn2022&amp;quot;&amp;gt;Herman Geuvers and Rob Nederpelt, &amp;quot;Characteristics of de Bruijn&amp;#039;s early proof checker Automath&amp;quot;, &amp;#039;&amp;#039;Fundamenta Informaticae&amp;#039;&amp;#039; 185 (4), 2022, pp. 313–336. doi:10.3233/FI-222112. Preprint: https://arxiv.org/abs/2203.01173&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
An Automath text is a &amp;#039;&amp;#039;&amp;#039;book&amp;#039;&amp;#039;&amp;#039;: a sequence of lines, each checked against the lines before it. A line either opens an assumption (a variable of a stated type), makes a definition (a name for an expression of a stated type), or introduces a primitive notion, which is how axioms enter. A theorem is a definition whose type is the proposition and whose body is the proof. Contexts are named by their last variable, so a later line can return to an earlier context without repeating it.&amp;lt;ref name=&amp;quot;gn2022&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Propositions as types ==&lt;br /&gt;
&lt;br /&gt;
Automath treated a proof of a proposition as an object whose type is that proposition. De Bruijn&amp;#039;s survey traces this idea to Curry and Feys (1958) and to Howard (1969), and states that it appeared in his own 1968 work independently of them.&amp;lt;ref name=&amp;quot;survey&amp;quot; /&amp;gt; In the same survey he records the name &amp;#039;&amp;#039;&amp;#039;proof irrelevance&amp;#039;&amp;#039;&amp;#039; for the rule that any two proofs of one proposition are definitionally equal, introduced in a report of 1974.&amp;lt;ref name=&amp;quot;survey&amp;quot; /&amp;gt; Both ideas are part of Lean&amp;#039;s logic: see [[Lean theorem prover/Explainers/Propositions as types|Propositions as types]] and [[Lean theorem prover/Foundations/Proof irrelevance and subsingleton elimination|Proof irrelevance and subsingleton elimination]].&lt;br /&gt;
&lt;br /&gt;
== The languages ==&lt;br /&gt;
&lt;br /&gt;
Automath was a family of languages, not one. The survey presents them in stages. A simple base language, PAL, admits typed variables and definitions; adding lambda abstraction gives &amp;#039;&amp;#039;&amp;#039;AUT-68&amp;#039;&amp;#039;&amp;#039;, long called simply Automath; a slightly stronger variant is &amp;#039;&amp;#039;&amp;#039;AUT-QE&amp;#039;&amp;#039;&amp;#039;. J. Zucker&amp;#039;s &amp;#039;&amp;#039;&amp;#039;AUT-PI&amp;#039;&amp;#039;&amp;#039; extended AUT-68 in another direction and was easier to write. &amp;#039;&amp;#039;&amp;#039;AUT-SL&amp;#039;&amp;#039;&amp;#039; (&amp;quot;single line&amp;quot;) removed the restrictions on abstraction so that a whole book could be written as one expression, mainly to give the theory a clean form.&amp;lt;ref name=&amp;quot;survey&amp;quot; /&amp;gt; AUT-68 and AUT-QE were the languages most used.&amp;lt;ref name=&amp;quot;gn2022&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The survey reports that for these languages checking is decidable: a machine can always settle whether a line is correct. Doing so efficiently was harder, since the naive method of reducing expressions to normal form could repeat a great deal of work. Most of the work on the checking programs was done by I. Zandleven between 1971 and 1976.&amp;lt;ref name=&amp;quot;survey&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Landau&amp;#039;s &amp;#039;&amp;#039;Grundlagen&amp;#039;&amp;#039; ==&lt;br /&gt;
&lt;br /&gt;
The test of the system was a whole textbook. L. S. van Benthem Jutting translated Edmund Landau&amp;#039;s &amp;#039;&amp;#039;Grundlagen der Analysis&amp;#039;&amp;#039; (1930), which constructs the number systems from the natural numbers up to the complex numbers, line by line into AUT-QE. A five-volume report of the translation appeared in 1976, and his experiences are in his doctoral thesis, written under de Bruijn and W. Peremans and completed at Eindhoven in 1977.&amp;lt;ref name=&amp;quot;survey&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;wiedijk2002&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;mgp&amp;quot;&amp;gt;Mathematics Genealogy Project, entry for Lambert S. van Benthem Jutting: Ph.D., Technische Universiteit Eindhoven, 1977, dissertation &amp;quot;Checking Landau&amp;#039;s &amp;#039;Grundlagen&amp;#039; in the Automath System&amp;quot;, advisors N. G. de Bruijn and W. Peremans. https://www.mathgenealogy.org/id.php?id=63580&amp;lt;/ref&amp;gt; The thesis was published in 1979 as Mathematical Centre Tracts 83.&amp;lt;ref name=&amp;quot;cwi&amp;quot;&amp;gt;L. S. van Benthem Jutting, &amp;#039;&amp;#039;Checking Landau&amp;#039;s &amp;quot;Grundlagen&amp;quot; in the Automath System&amp;#039;&amp;#039;, Mathematical Centre Tracts 83, Mathematisch Centrum, Amsterdam, 1979. ISBN 90-6196-147-5. Record and scan: https://ir.cwi.nl/pub/13104&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De Bruijn explained the choice of book: Landau&amp;#039;s steps do not grow larger towards the end, and the group wanted to show that Automath could handle mathematics written without it in mind, rather than mathematics rewritten to suit it.&amp;lt;ref name=&amp;quot;survey&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The files outlived the machines. By the early 1990s the original checkers no longer ran, because the language they were written in and the computer they ran on no longer existed, and the copies of the translation had become corrupted. Freek Wiedijk repaired them from the printed 1976 report and wrote a new checker for AUT-68 and AUT-QE. By his count the translation has 10,702 lines and is about 3.9 times the size of the German original, or 3.7 times when both files are compressed; he had earlier named that compressed ratio the &amp;#039;&amp;#039;&amp;#039;de Bruijn factor&amp;#039;&amp;#039;&amp;#039;. He reports that the two checkers of the 1970s took about 35 and 69 minutes over it, and his own 0.6 seconds on a 1 GHz machine.&amp;lt;ref name=&amp;quot;wiedijk2002&amp;quot;&amp;gt;Freek Wiedijk, &amp;quot;A new implementation of Automath&amp;quot;, &amp;#039;&amp;#039;Journal of Automated Reasoning&amp;#039;&amp;#039; 29 (3–4), 2002, pp. 365–387. doi:10.1023/A:1021983302516. Author&amp;#039;s copy: https://www.cs.ru.nl/~freek/aut/aut.pdf&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What it did not have ==&lt;br /&gt;
&lt;br /&gt;
Automath had no automation. Every proof term was written by hand, and the checker only confirmed it.&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; It had no inductive types, so basic types had to be introduced by axioms; and the large texts of the 1970s used classical logic.&amp;lt;ref name=&amp;quot;wiedijk-page&amp;quot;&amp;gt;Freek Wiedijk, &amp;quot;Automath&amp;quot; (notes accompanying the aut checker). https://www.cs.ru.nl/~freek/aut/&amp;lt;/ref&amp;gt; Wiedijk writes that the project was very active in the 1970s and ended when its funding stopped.&amp;lt;ref name=&amp;quot;wiedijk2002&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What lasted ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;De Bruijn indices.&amp;#039;&amp;#039;&amp;#039; In 1972 de Bruijn proposed writing a bound variable not by a name but by a number counting how many binders lie between the variable and the one that binds it. Renaming bound variables causes considerable trouble in programs that manipulate formulas, and with this notation it never arises. The paper claims that its notation is good for machines and for reasoning about the calculus, but not that it is easy for human readers, and a section of it applies the notation to Automath.&amp;lt;ref name=&amp;quot;nameless&amp;quot;&amp;gt;N. G. de Bruijn, &amp;quot;Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem&amp;quot;, &amp;#039;&amp;#039;Indagationes Mathematicae&amp;#039;&amp;#039; 34 (= &amp;#039;&amp;#039;Proceedings KNAW&amp;#039;&amp;#039; A 75), 1972, pp. 381–392. doi:10.1016/1385-7258(72)90034-0. Reprint from &amp;#039;&amp;#039;Selected Papers on Automath&amp;#039;&amp;#039; in the Eindhoven repository: https://alexandria.tue.nl/repository/freearticles/597619.pdf&amp;lt;/ref&amp;gt; Lean represents a bound variable in exactly this way: in its type of expressions, the constructor for a bound variable carries a de Bruijn index.&amp;lt;ref name=&amp;quot;leanexpr&amp;quot;&amp;gt;Lean 4 source, &amp;lt;code&amp;gt;src/Lean/Expr.lean&amp;lt;/code&amp;gt;, documentation of &amp;lt;code&amp;gt;Expr.bvar&amp;lt;/code&amp;gt;, version 4.34.1. https://github.com/leanprover/lean4/blob/v4.34.1/src/Lean/Expr.lean&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The de Bruijn criterion.&amp;#039;&amp;#039;&amp;#039; A proof may run to megabytes, yet the program that checks it can be small enough for a person to inspect. Barendregt and Wiedijk call a system that allows its proofs to be checked independently by such a small program one that satisfies the &amp;#039;&amp;#039;&amp;#039;de Bruijn criterion&amp;#039;&amp;#039;&amp;#039;.&amp;lt;ref name=&amp;quot;bw2005&amp;quot; /&amp;gt; The name is later than Automath; the practice it names is Automath&amp;#039;s. Lean&amp;#039;s version of it is described at [[Lean theorem prover/Explainers/The small trusted core|The small trusted core]] and [[Lean theorem prover/System/Proof export and independent checkers|Proof export and independent checkers]].&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;The line to the Calculus of Constructions.&amp;#039;&amp;#039;&amp;#039; Geuvers and Nederpelt state that Automath&amp;#039;s goals and syntactic ideas inspired Thierry Coquand and Gérard Huet to develop the Calculus of Constructions, the ancestor of the logic Lean uses.&amp;lt;ref name=&amp;quot;gn2022&amp;quot; /&amp;gt; That line is followed at [[Lean theorem prover/History/The Calculus of Constructions|The Calculus of Constructions]].&lt;br /&gt;
&lt;br /&gt;
The standard collection of the project&amp;#039;s papers, including parts of van Benthem Jutting&amp;#039;s thesis and de Bruijn&amp;#039;s survey, is &amp;#039;&amp;#039;Selected Papers on Automath&amp;#039;&amp;#039; (1994).&amp;lt;ref name=&amp;quot;sp1994&amp;quot;&amp;gt;R. P. Nederpelt, J. H. Geuvers and R. C. de Vrijer (eds.), &amp;#039;&amp;#039;Selected Papers on Automath&amp;#039;&amp;#039;, Studies in Logic and the Foundations of Mathematics 133, North-Holland, Amsterdam, 1994. ISBN 0-444-89822-0. Publisher&amp;#039;s page with contents: https://shop.elsevier.com/books/selected-papers-on-automath/nederpelt/978-0-444-89822-7&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Provenance: de Bruijn&amp;#039;s 1980 survey, Wiedijk&amp;#039;s 2002 paper, Barendregt and Wiedijk&amp;#039;s 2005 paper and Geuvers and Nederpelt&amp;#039;s 2022 paper were read for this page; the 1970 and 1972 papers were read in their opening pages only, in scans. The published form of van Benthem Jutting&amp;#039;s thesis was read in its title page, contents, de Bruijn&amp;#039;s preface and introduction. The 1994 collection was not opened; its details come from the publisher&amp;#039;s record.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Next ==&lt;br /&gt;
&lt;br /&gt;
[[Lean theorem prover/History/LCF and the tactic idea|LCF and the tactic idea]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;/div&gt;</summary>
		<author><name>PMA Publisher</name></author>
	</entry>
</feed>