<?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%2FBuilding_things_from_constructors</id>
	<title>Lean theorem prover/Explainers/Building things from constructors - 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%2FBuilding_things_from_constructors"/>
	<link rel="alternate" type="text/html" href="https://invarians.org/index.php?title=Lean_theorem_prover/Explainers/Building_things_from_constructors&amp;action=history"/>
	<updated>2026-10-21T08:14:12Z</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/Building_things_from_constructors&amp;diff=6760&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/Building_things_from_constructors&amp;diff=6760&amp;oldid=prev"/>
		<updated>2026-10-15T19:34:29Z</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:Building things from constructors}}&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:Building things from constructors}}&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/Foundations/Inductive types and recursors}}&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/Foundations/Inductive types and recursors}}&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;Most of the things Lean reasons about (numbers, lists, trees, true and false) are made in&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;Most of the things Lean reasons about (numbers, lists, trees, true and false) are made in&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/Explainers/Building_things_from_constructors&amp;diff=6553&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/Building_things_from_constructors&amp;diff=6553&amp;oldid=prev"/>
		<updated>2026-10-14T18:00:50Z</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:Building things from constructors}}&lt;br /&gt;
{{Technical|Lean theorem prover/Foundations/Inductive types and recursors}}&lt;br /&gt;
&lt;br /&gt;
Most of the things Lean reasons about (numbers, lists, trees, true and false) are made in&lt;br /&gt;
one way: by naming a few rules for making values and declaring that nothing else counts.&lt;br /&gt;
This page explains that idea, how Lean takes such values apart again, and the principle of&lt;br /&gt;
recursion that Lean derives from the rules.&lt;br /&gt;
&lt;br /&gt;
== A type given by its rules ==&lt;br /&gt;
&lt;br /&gt;
The natural numbers 0, 1, 2, 3, ... can be described by two rules. Zero is a natural&lt;br /&gt;
number. If n is a natural number, so is the next one after n, its &amp;#039;&amp;#039;&amp;#039;successor&amp;#039;&amp;#039;&amp;#039;. Every&lt;br /&gt;
natural number is reached from zero by applying the second rule some finite number of&lt;br /&gt;
times, and nothing else is a natural number.&lt;br /&gt;
&lt;br /&gt;
Lean&amp;#039;s own definition says exactly this. Asked to print it,&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;
#print Nat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lean 4.34.1 answers:&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;
inductive Nat : Type&lt;br /&gt;
number of parameters: 0&lt;br /&gt;
constructors:&lt;br /&gt;
Nat.zero : Nat&lt;br /&gt;
Nat.succ : Nat → Nat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A type defined this way is an &amp;#039;&amp;#039;&amp;#039;inductive type&amp;#039;&amp;#039;&amp;#039;. Its rules are its &amp;#039;&amp;#039;&amp;#039;constructors&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
here &amp;lt;code&amp;gt;Nat.zero&amp;lt;/code&amp;gt;, which needs nothing, and &amp;lt;code&amp;gt;Nat.succ&amp;lt;/code&amp;gt;, which takes one&lt;br /&gt;
natural number and makes the next. Three is &amp;lt;code&amp;gt;Nat.succ (Nat.succ (Nat.succ&lt;br /&gt;
Nat.zero))&amp;lt;/code&amp;gt;, and the numeral 3 names the same number. The values of an&lt;br /&gt;
inductive type are exactly the ones its constructors make; it has no others.&amp;lt;ref name=&amp;quot;tpil-ind&amp;quot;&amp;gt;Jeremy&lt;br /&gt;
Avigad, Leonardo de Moura, Soonho Kong and Sebastian Ullrich, &amp;#039;&amp;#039;Theorem Proving in Lean 4&amp;#039;&amp;#039;&lt;br /&gt;
(online edition for Lean 4.33.0, lean-lang.org), chapter 7, &amp;quot;Inductive Types&amp;quot;.&lt;br /&gt;
https://lean-lang.org/theorem_proving_in_lean4/Inductive-Types/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is not one device among many. Functions, universes and quotient types are built into&lt;br /&gt;
Lean; every other type is an inductive type or is defined from functions, universes and&lt;br /&gt;
inductive types.&amp;lt;ref name=&amp;quot;ref-ind&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), section 4.4,&lt;br /&gt;
&amp;quot;Inductive Types&amp;quot;. https://lean-lang.org/doc/reference/4.34.0/The-Type-System/Inductive-Types/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Lists and trees ==&lt;br /&gt;
&lt;br /&gt;
The same pattern makes a list. A list is either empty, or a first item followed by a list.&lt;br /&gt;
Asked for &amp;lt;code&amp;gt;#print List&amp;lt;/code&amp;gt;, Lean shows its own definition of lists in the same form:&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;
inductive List.{u} : Type u → Type u&lt;br /&gt;
number of parameters: 1&lt;br /&gt;
constructors:&lt;br /&gt;
List.nil : {α : Type u} → List α&lt;br /&gt;
List.cons : {α : Type u} → α → List α → List α&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The letter α stands for the type of the items, so the one definition gives lists of numbers,&lt;br /&gt;
lists of words and lists of lists. The list &amp;lt;code&amp;gt;[1, 2]&amp;lt;/code&amp;gt; is &amp;lt;code&amp;gt;cons&amp;lt;/code&amp;gt; of 1&lt;br /&gt;
onto &amp;lt;code&amp;gt;cons&amp;lt;/code&amp;gt; of 2 onto the empty list &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
A tree with numbers at its branch points takes two rules of the same kind, and the size of a&lt;br /&gt;
tree is a short definition on top of them:&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;
inductive Tree where&lt;br /&gt;
  | leaf : Tree&lt;br /&gt;
  | node : Tree → Nat → Tree → Tree&lt;br /&gt;
&lt;br /&gt;
def Tree.size : Tree → Nat&lt;br /&gt;
  | leaf       =&amp;gt; 0&lt;br /&gt;
  | node l _ r =&amp;gt; l.size + 1 + r.size&lt;br /&gt;
&lt;br /&gt;
#eval (Tree.node (Tree.node Tree.leaf 5 Tree.leaf) 7 Tree.leaf).size&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A leaf carries nothing. A node carries a left tree, a number and a right tree. Because a&lt;br /&gt;
constructor may take values of the very type being defined, a few lines describe trees of&lt;br /&gt;
every finite size. The &amp;lt;code&amp;gt;#eval&amp;lt;/code&amp;gt; line asks for the size of a tree with two nodes,&lt;br /&gt;
and Lean prints &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Taking values apart ==&lt;br /&gt;
&lt;br /&gt;
To use a value of an inductive type, a definition asks which constructor made it and what&lt;br /&gt;
was put into it. This is &amp;#039;&amp;#039;&amp;#039;pattern matching&amp;#039;&amp;#039;&amp;#039;. The definition of &amp;lt;code&amp;gt;Tree.size&amp;lt;/code&amp;gt;&lt;br /&gt;
above has one line per constructor: a leaf has size zero, and a node has the sizes of its&lt;br /&gt;
two subtrees plus one for itself.&lt;br /&gt;
&lt;br /&gt;
Lean checks that every constructor is covered. A definition that forgets one is refused:&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;
def isZero : Nat → Bool&lt;br /&gt;
  | 0 =&amp;gt; true&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lean answers &amp;lt;code&amp;gt;Missing cases:&amp;lt;/code&amp;gt; and shows the shape left unhandled,&lt;br /&gt;
&amp;lt;code&amp;gt;(Nat.succ _)&amp;lt;/code&amp;gt;: a number made by the successor rule, with anything at all inside.&lt;br /&gt;
The check is possible because a natural number can only have come from one of the two rules.&lt;br /&gt;
A definition that handles both handles every number.&lt;br /&gt;
&lt;br /&gt;
== The recursion principle ==&lt;br /&gt;
&lt;br /&gt;
From the constructors alone, Lean derives one more thing: a &amp;#039;&amp;#039;&amp;#039;recursion principle&amp;#039;&amp;#039;&amp;#039;, also&lt;br /&gt;
called the type&amp;#039;s &amp;#039;&amp;#039;&amp;#039;recursor&amp;#039;&amp;#039;&amp;#039;. For the natural numbers, &amp;lt;code&amp;gt;#check Nat.rec&amp;lt;/code&amp;gt; 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;
Nat.rec.{u} {motive : Nat → Sort u} (zero : motive Nat.zero) (succ : (n : Nat) → motive n → motive n.succ) (t : Nat) :&lt;br /&gt;
  motive t&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In plain words: to produce something for every natural number &amp;lt;code&amp;gt;t&amp;lt;/code&amp;gt;, supply what it&lt;br /&gt;
is for zero, and a way to obtain it for the successor of &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt; from &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;&lt;br /&gt;
and from what it is for &amp;lt;code&amp;gt;n&amp;lt;/code&amp;gt;. The word &amp;#039;&amp;#039;motive&amp;#039;&amp;#039; names the thing being produced,&lt;br /&gt;
which may be different for each number. The recursor then delivers it for every number,&lt;br /&gt;
because every number is zero followed by finitely many successors.&lt;br /&gt;
&lt;br /&gt;
The recursion principle does two jobs, and the Lean Language Reference describes it in both&lt;br /&gt;
roles.&amp;lt;ref name=&amp;quot;ref-ind&amp;quot; /&amp;gt; As computation, it defines functions: Lean translates the&lt;br /&gt;
structurally recursive functions of [[Lean theorem prover/Explainers/Functions that always&lt;br /&gt;
finish|functions that always finish]] into uses of it, and that is how the Lean kernel knows&lt;br /&gt;
they end. As logic, where the thing produced for each number is a proof, it is proof by&lt;br /&gt;
induction: prove a statement for zero, show that it passes from each number to the next, and&lt;br /&gt;
it holds for all of them.&amp;lt;ref name=&amp;quot;tpil-ind&amp;quot; /&amp;gt;&lt;br /&gt;
[[Lean theorem prover/Explainers/Induction, as the machine sees it|Induction, as the machine&lt;br /&gt;
sees it]] follows that second job.&lt;br /&gt;
&lt;br /&gt;
Every inductive type has a recursor, with one case per constructor. The type&lt;br /&gt;
&amp;lt;code&amp;gt;Bool&amp;lt;/code&amp;gt; of true and false has two constructors that take nothing, and&lt;br /&gt;
&amp;lt;code&amp;gt;#check Bool.rec&amp;lt;/code&amp;gt; shows that its recursor asks for one answer for&lt;br /&gt;
&amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; and one for &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;. That is a choice between two cases and&lt;br /&gt;
nothing more.&lt;br /&gt;
&lt;br /&gt;
== Structures: the one-constructor case ==&lt;br /&gt;
&lt;br /&gt;
Often a value is several things kept together: a point is an x and a y. A &amp;#039;&amp;#039;&amp;#039;structure&amp;#039;&amp;#039;&amp;#039; is&lt;br /&gt;
an inductive type with exactly one constructor, whose arguments are called its&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;fields&amp;#039;&amp;#039;&amp;#039;.&amp;lt;ref name=&amp;quot;ref-ind&amp;quot; /&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;
structure Point where&lt;br /&gt;
  x : Nat&lt;br /&gt;
  y : Nat&lt;br /&gt;
&lt;br /&gt;
#eval (Point.mk 3 4).y&lt;br /&gt;
#print Point&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;#eval&amp;lt;/code&amp;gt; line prints &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;#print&amp;lt;/code&amp;gt; line lists the&lt;br /&gt;
fields &amp;lt;code&amp;gt;Point.x&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Point.y&amp;lt;/code&amp;gt; and the single constructor&lt;br /&gt;
&amp;lt;code&amp;gt;Point.mk (x y : Nat) : Point&amp;lt;/code&amp;gt;. For structures, Lean adds conveniences: a function&lt;br /&gt;
that reads each field, a way to write values by field name, and a way to extend one&lt;br /&gt;
structure with another. These add no power. Everything a structure does could be done with a&lt;br /&gt;
one-constructor inductive type, and the reference manual says so.&amp;lt;ref name=&amp;quot;ref-ind&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== What the idea gives ==&lt;br /&gt;
&lt;br /&gt;
Defining a type by its constructors fixes three things at once. How to make its values is&lt;br /&gt;
the list of constructors. How to take them apart is pattern matching, which Lean checks for&lt;br /&gt;
completeness. How to reason about all of them is the recursion principle, which Lean derives&lt;br /&gt;
without being told, and which serves both to define functions and as the principle of&lt;br /&gt;
induction.&lt;br /&gt;
&lt;br /&gt;
== Next ==&lt;br /&gt;
&lt;br /&gt;
* [[Lean theorem prover/Explainers/Induction, as the machine sees it|Induction, as the machine sees it]]: the recursion principle used for proofs.&lt;br /&gt;
* [[Lean theorem prover/Foundations/Inductive types and recursors|Inductive types and recursors]]: 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>