<?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%2FExplainers%2FHoles_and_goals</id>
	<title>Lean theorem prover/Explainers/Holes and goals - 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%2FExplainers%2FHoles_and_goals"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=Lean_theorem_prover/Explainers/Holes_and_goals&amp;action=history"/>
	<updated>2026-10-21T06:37:05Z</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/Explainers/Holes_and_goals&amp;diff=6763&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/Explainers/Holes_and_goals&amp;diff=6763&amp;oldid=prev"/>
		<updated>2026-10-15T19:34:32Z</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:Holes and goals}}&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:Holes and goals}}&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;{{Technical|Lean theorem prover/System/Metavariables and unification|Lean theorem prover/System/The tactic framework}}&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;{{Technical|Lean theorem prover/System/Metavariables and unification|Lean theorem prover/System/The tactic framework}}&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;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;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;While a proof is being written, parts of it are still missing. Lean keeps track of each&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;While a proof is being written, parts of it are still missing. Lean keeps track of each&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key pma_cutover_20261020t051351z-soft_:diff:1.41:old-6556:rev-6763: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/Explainers/Holes_and_goals&amp;diff=6556&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/Explainers/Holes_and_goals&amp;diff=6556&amp;oldid=prev"/>
		<updated>2026-10-14T18:00:51Z</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:Holes and goals}}&lt;br /&gt;
{{Technical|Lean theorem prover/System/Metavariables and unification|Lean theorem prover/System/The tactic framework}}&lt;br /&gt;
&lt;br /&gt;
While a proof is being written, parts of it are still missing. Lean keeps track of each&lt;br /&gt;
missing part as a &amp;#039;&amp;#039;&amp;#039;goal&amp;#039;&amp;#039;&amp;#039;: a statement still to be proved, together with what may be used&lt;br /&gt;
to prove it. This page describes how goals are shown, how a hole can be left on purpose, why&lt;br /&gt;
finished work refuses such holes, and how the same idea lets Lean fill in details by itself.&lt;br /&gt;
&lt;br /&gt;
== The proof state ==&lt;br /&gt;
&lt;br /&gt;
A tactic proof begins with one goal, the statement of the theorem. Each tactic changes the&lt;br /&gt;
list of goals: it closes some, splits others, or fails. The list at any moment is the&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;proof state&amp;#039;&amp;#039;&amp;#039;, and the proof is complete when the list is empty.&amp;lt;ref name=&amp;quot;ref-tactics&amp;quot;&amp;gt;&amp;#039;&amp;#039;The&lt;br /&gt;
Lean Language Reference&amp;#039;&amp;#039;, version for Lean 4.34.0 (lean-lang.org, 2026), chapter 14,&lt;br /&gt;
&amp;quot;Tactic Proofs&amp;quot;, with section 14.2, &amp;quot;Reading Proof States&amp;quot;.&lt;br /&gt;
https://lean-lang.org/doc/reference/4.34.0/Tactic-Proofs/&amp;lt;/ref&amp;gt; The command&lt;br /&gt;
&amp;lt;code&amp;gt;trace_state&amp;lt;/code&amp;gt; prints the state at the point where it stands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lean&amp;quot; style=&amp;quot;background: #f8f9fa; border: 1px solid #c8ccd1; padding: 0.6em; margin: 0.3em 0; font-size: 0.85em; line-height: 1.35; overflow-x: auto; white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
theorem two_parts (p q : Prop) (hp : p) (hq : q) : p ∧ q := by&lt;br /&gt;
  constructor&lt;br /&gt;
  trace_state&lt;br /&gt;
  · exact hp&lt;br /&gt;
  · exact hq&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lean 4.34.1 prints:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lean-output&amp;quot; style=&amp;quot;background: #ffffff; border: 1px dashed #a2a9b1; padding: 0.6em; margin: 0.3em 0; font-size: 0.85em; line-height: 1.35; overflow-x: auto; white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
case left&lt;br /&gt;
p q : Prop&lt;br /&gt;
hp : p&lt;br /&gt;
hq : q&lt;br /&gt;
⊢ p&lt;br /&gt;
&lt;br /&gt;
case right&lt;br /&gt;
p q : Prop&lt;br /&gt;
hp : p&lt;br /&gt;
hq : q&lt;br /&gt;
⊢ q&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal &amp;quot;p and q&amp;quot; has become two goals, one for each half. Each dot that follows takes one&lt;br /&gt;
goal in hand, and &amp;lt;code&amp;gt;exact&amp;lt;/code&amp;gt; closes it. Lean records the proof state at every step&lt;br /&gt;
for its interactive features,&amp;lt;ref name=&amp;quot;ref-elab&amp;quot;&amp;gt;&amp;#039;&amp;#039;The Lean Language Reference&amp;#039;&amp;#039;, version&lt;br /&gt;
for Lean 4.34.0 (lean-lang.org, 2026), chapter 2, &amp;quot;Elaboration and Compilation&amp;quot;, with section&lt;br /&gt;
2.3, &amp;quot;The Kernel&amp;quot;. https://lean-lang.org/doc/reference/4.34.0/Elaboration-and-Compilation/&amp;lt;/ref&amp;gt;&lt;br /&gt;
so an editor connected to Lean shows the same display for the place where the cursor rests,&lt;br /&gt;
and the display changes as the cursor moves from one tactic to the next.&lt;br /&gt;
&lt;br /&gt;
== Reading a goal ==&lt;br /&gt;
&lt;br /&gt;
Each goal has the same layout. The lines above the symbol ⊢ are the &amp;#039;&amp;#039;&amp;#039;hypotheses&amp;#039;&amp;#039;&amp;#039;: what&lt;br /&gt;
may be used. Each has a name and a type. Some name things: &amp;lt;code&amp;gt;p q : Prop&amp;lt;/code&amp;gt; says that p&lt;br /&gt;
and q are propositions. Others name facts: &amp;lt;code&amp;gt;hp : p&amp;lt;/code&amp;gt; says that hp is a proof of p.&lt;br /&gt;
The line after ⊢ is what must be proved. The label at the top, such as &amp;lt;code&amp;gt;case&lt;br /&gt;
left&amp;lt;/code&amp;gt;, names the goal; here the names come from the two parts of &amp;quot;and&amp;quot;.&amp;lt;ref name=&amp;quot;ref-tactics&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some names carry a dagger. For the proof obligation of the halving function on the page&lt;br /&gt;
about [[Lean theorem prover/Explainers/Functions that always finish|functions that always&lt;br /&gt;
finish]], Lean&amp;#039;s display includes &amp;lt;code&amp;gt;h✝ : ¬n &amp;amp;lt; 2&amp;lt;/code&amp;gt;, the fact that n is&lt;br /&gt;
not less than 2. Such a hypothesis is still there, and on that page the arithmetic tactic&lt;br /&gt;
&amp;lt;code&amp;gt;omega&amp;lt;/code&amp;gt; makes use of it, but it cannot be referred to by name: Lean created it&lt;br /&gt;
without a name the author chose, or a later name hides it.&amp;lt;ref name=&amp;quot;ref-tactics&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the tactics run out while goals remain, Lean refuses the proof and shows what is left:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lean lean-fails&amp;quot; style=&amp;quot;background: #f8f9fa; border: 1px solid #c8ccd1; padding: 0.6em; margin: 0.3em 0; font-size: 0.85em; line-height: 1.35; overflow-x: auto; white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
theorem two_parts (p q : Prop) (hp : p) (hq : q) : p ∧ q := by&lt;br /&gt;
  constructor&lt;br /&gt;
  exact hp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The answer begins &amp;lt;code&amp;gt;unsolved goals&amp;lt;/code&amp;gt; and then shows the goal &amp;lt;code&amp;gt;case right&amp;lt;/code&amp;gt;,&lt;br /&gt;
with its hypotheses and &amp;lt;code&amp;gt;⊢ q&amp;lt;/code&amp;gt;, exactly as in the display above.&lt;br /&gt;
&lt;br /&gt;
== Leaving a hole on purpose ==&lt;br /&gt;
&lt;br /&gt;
Sometimes an author wants to set out the shape of a proof before filling in every part. The&lt;br /&gt;
word &amp;lt;code&amp;gt;sorry&amp;lt;/code&amp;gt; closes any goal at once:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lean&amp;quot; style=&amp;quot;background: #f8f9fa; border: 1px solid #c8ccd1; padding: 0.6em; margin: 0.3em 0; font-size: 0.85em; line-height: 1.35; overflow-x: auto; white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
theorem unfinished (n : Nat) : 0 + n = n := by&lt;br /&gt;
  sorry&lt;br /&gt;
&lt;br /&gt;
#print axioms unfinished&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lean accepts the file, with the warning &amp;lt;code&amp;gt;declaration uses `sorry`&amp;lt;/code&amp;gt;. The last line&lt;br /&gt;
asks what the theorem rests on, and the answer is &amp;lt;code&amp;gt;&amp;#039;unfinished&amp;#039; depends on axioms:&lt;br /&gt;
[sorryAx]&amp;lt;/code&amp;gt;. &amp;lt;code&amp;gt;sorry&amp;lt;/code&amp;gt; works by appeal to &amp;lt;code&amp;gt;sorryAx&amp;lt;/code&amp;gt;, an axiom that&lt;br /&gt;
would supply a proof of anything at all.&amp;lt;ref name=&amp;quot;ref-tacref&amp;quot;&amp;gt;&amp;#039;&amp;#039;The Lean Language&lt;br /&gt;
Reference&amp;#039;&amp;#039;, version for Lean 4.34.0 (lean-lang.org, 2026), section 14.5, &amp;quot;Tactic&lt;br /&gt;
Reference&amp;quot;: entry for &amp;lt;code&amp;gt;sorry&amp;lt;/code&amp;gt;.&lt;br /&gt;
https://lean-lang.org/doc/reference/4.34.0/Tactic-Proofs/Tactic-Reference/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That is why finished work refuses it. A theorem that depends on &amp;lt;code&amp;gt;sorryAx&amp;lt;/code&amp;gt; has not&lt;br /&gt;
been proved; it has been assumed. The marks an editor shows beside a theorem accepted by Lean&lt;br /&gt;
appear even when &amp;lt;code&amp;gt;sorry&amp;lt;/code&amp;gt; is used somewhere among the results it depends on, so the&lt;br /&gt;
reliable test is &amp;lt;code&amp;gt;#print axioms&amp;lt;/code&amp;gt;.&amp;lt;ref name=&amp;quot;ref-validating&amp;quot;&amp;gt;&amp;#039;&amp;#039;The Lean Language&lt;br /&gt;
Reference&amp;#039;&amp;#039;, version for Lean 4.34.0 (lean-lang.org, 2026), &amp;quot;Validating a Lean Proof&amp;quot;.&lt;br /&gt;
https://lean-lang.org/doc/reference/4.34.0/ValidatingProofs/&amp;lt;/ref&amp;gt; The project this wiki&lt;br /&gt;
records goes further: its proof gate accepts nothing that contains &amp;lt;code&amp;gt;sorry&amp;lt;/code&amp;gt; (see&lt;br /&gt;
[[Principia Machina/Lean transition|the transition page]]).&lt;br /&gt;
&lt;br /&gt;
== Holes that Lean fills itself ==&lt;br /&gt;
&lt;br /&gt;
Inside Lean, every goal is a hole in the proof term under construction. Such a hole is called&lt;br /&gt;
a &amp;#039;&amp;#039;&amp;#039;metavariable&amp;#039;&amp;#039;&amp;#039;, and closing a goal means filling the hole with a&lt;br /&gt;
term.&amp;lt;ref name=&amp;quot;metabook&amp;quot;&amp;gt;Arthur Paulino, Damiano Testa, Edward Ayers, Evgenia Karunus,&lt;br /&gt;
Henrik Böving, Jannis Limperg, Siddhartha Gadgil and Siddharth Bhat, &amp;#039;&amp;#039;Metaprogramming in&lt;br /&gt;
Lean 4&amp;#039;&amp;#039; (online book, Lean community, consulted October 2026), chapter &amp;quot;MetaM&amp;quot;.&lt;br /&gt;
https://leanprover-community.github.io/lean4-metaprogramming-book/main/04_metam.html&amp;lt;/ref&amp;gt;&lt;br /&gt;
An author can make such a hole directly with &amp;lt;code&amp;gt;?_&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lean&amp;quot; style=&amp;quot;background: #f8f9fa; border: 1px solid #c8ccd1; padding: 0.6em; margin: 0.3em 0; font-size: 0.85em; line-height: 1.35; overflow-x: auto; white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
theorem with_hole (p q : Prop) (hp : p) (hq : q) : p ∧ q := by&lt;br /&gt;
  refine ⟨?_, hq⟩&lt;br /&gt;
  trace_state&lt;br /&gt;
  exact hp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here the second half of the pair is given and the first is left as a hole. The printed state&lt;br /&gt;
is a single goal, &amp;lt;code&amp;gt;⊢ p&amp;lt;/code&amp;gt;, with the same hypotheses as before, and&lt;br /&gt;
&amp;lt;code&amp;gt;exact hp&amp;lt;/code&amp;gt; fills it.&lt;br /&gt;
&lt;br /&gt;
Lean also makes holes of its own, for details the author leaves out, and fills them by&lt;br /&gt;
matching types. This matching is called &amp;#039;&amp;#039;&amp;#039;unification&amp;#039;&amp;#039;&amp;#039;. When it fails, the unfilled holes&lt;br /&gt;
appear in the error message under names such as &amp;lt;code&amp;gt;?m.9&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre class=&amp;quot;lean lean-fails&amp;quot; style=&amp;quot;background: #f8f9fa; border: 1px solid #c8ccd1; padding: 0.6em; margin: 0.3em 0; font-size: 0.85em; line-height: 1.35; overflow-x: auto; white-space: pre;&amp;quot;&amp;gt;&lt;br /&gt;
example (n : Nat) : 0 + n = n := rfl&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lean answers &amp;lt;code&amp;gt;Type mismatch&amp;lt;/code&amp;gt;: &amp;lt;code&amp;gt;rfl&amp;lt;/code&amp;gt; &amp;quot;has type&amp;quot;&lt;br /&gt;
&amp;lt;code&amp;gt;?m.9 = ?m.9&amp;lt;/code&amp;gt; &amp;quot;but is expected to have type&amp;quot; &amp;lt;code&amp;gt;0 + n = n&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;code&amp;gt;rfl&amp;lt;/code&amp;gt; proves that some value equals itself, and Lean could find no value to put in&lt;br /&gt;
the hole &amp;lt;code&amp;gt;?m.9&amp;lt;/code&amp;gt; that makes both sides of 0 + n = n that same value. Why not is&lt;br /&gt;
explained in&lt;br /&gt;
[[Lean theorem prover/Explainers/Induction, as the machine sees it|induction, as the machine&lt;br /&gt;
sees it]].&lt;br /&gt;
&lt;br /&gt;
== Why the Lean kernel never sees a hole ==&lt;br /&gt;
&lt;br /&gt;
Holes belong to the stage before checking. Unification is the work of the elaborator, the&lt;br /&gt;
part of Lean that turns what the author writes into a term. The Lean kernel does no&lt;br /&gt;
unification and checks only finished terms.&amp;lt;ref name=&amp;quot;ref-elab&amp;quot; /&amp;gt; A proof therefore reaches&lt;br /&gt;
it only when every goal is closed and every hole filled. A hole filled with&lt;br /&gt;
&amp;lt;code&amp;gt;sorry&amp;lt;/code&amp;gt; leaves a finished term, but one that rests on &amp;lt;code&amp;gt;sorryAx&amp;lt;/code&amp;gt;, and&lt;br /&gt;
&amp;lt;code&amp;gt;#print axioms&amp;lt;/code&amp;gt; says so.&lt;br /&gt;
&lt;br /&gt;
== Next ==&lt;br /&gt;
&lt;br /&gt;
* [[Lean theorem prover/Explainers/Automation and its limits|Automation and its limits]]: tactics that close goals by search.&lt;br /&gt;
* [[Lean theorem prover/System/Metavariables and unification|Metavariables and unification]]: the technical treatment.&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>