Kleene's recursion theorem: Difference between revisions

Content deleted Content added
Tags: Mobile edit Mobile web edit Advanced mobile edit
Gantegi (talk | contribs)
Link suggestions feature: 3 links added.
 
(13 intermediate revisions by 9 users not shown)
Line 1:
{{Short description|Theorem in computability theory}}
{{distinguish|text=[[Kleene's theorem]] for regular languages}}
{{Use shortened footnotes|date=May 2021}}
Line 11 ⟶ 12:
 
== Rogers's fixed-point theorem ==
Given a function <math>F</math>, a '''fixed point''' of <math>F</math> is an index <math>e</math> such that <math>\varphi_e \simeq \varphi_{F(e)}</math>. RogersNote describesthat the followingcomparison resultof asin- "aand simpleroutputs version"here is not in terms of Kleene'snumerical (second)values, recursionbut theorem.{{sfn|Rogers|1967|loc=§11in terms of their associated functions.2}}
 
Rogers describes the following result as "a simpler version" of Kleene's (second) recursion theorem.{{sfn|Rogers|1967|loc=§11.2}}
:'''{{math theorem | name = Rogers's fixed-point theorem'''. | math_statement = If <math>F</math> is a total computable function, it has a fixed point in the above sense.}}
 
This essentially means that if we apply an [[Effectiveness|effective]] transformation to programs (say, replace instructions such as successor, jump, remove lines), there will always be a program whose behaviour is not altered by the transformation. This theorem can therefore be interpreted in the following manner: “given any effective procedure to transform programs, there is always a program that, when modified by the procedure, does exactly what it did before”, or: “it’s impossible to write a program that changes the extensional behaviour of all programs”.
 
=== Proof of the fixed-point theorem ===
 
The proof uses a particular total computable function <math>h</math>, defined as follows. Given a natural number <math>x</math>, the function <math>h</math> outputs the index of the partial computable function that performs the following computation:
:Given an input <math>y</math>, first attempt to compute <math>\varphi_{x}(x)</math>. If that computation returns an output <math>e</math>, then compute <math>\varphi_e(y)</math> and return its value, if any.
Thus, for all indices <math>x</math> of partial computable functions, if <math>\varphi_x(x)</math> is defined, then <math>\varphi_{h(x)} \simeq \varphi_{\varphi_x(x)}</math>. If <math>\varphi_x(x)</math> is not defined, then <math>\varphi_{h(x)}</math> is a function that is nowhere defined. The function <math>h</math> can be constructed from the partial computable function <math>g(x,y)</math> described above and the [[s-m-n theorem]]: for each <math>x</math>, <math>h(x)</math> is the index of a program which computes the function <math>y \mapsto g(x,y)</math>.
 
Line 34 ⟶ 38:
:'''The second recursion theorem'''. For any partial recursive function <math>Q(x,y)</math> there is an index <math>p</math> such that <math>\varphi_p \simeq \lambda y.Q(p,y)</math>.
 
The theorem can be proved from Rogers's theorem by letting <math>F(p)</math> be a function such that <math>\varphi_{F(p)}(y) = Q(p,y)</math> (a construction described by the [[Smn theorem|S-m-n theorem]]). One can then verify that a fixed-point of this <math>F</math> is an index <math>p</math> as required. The theorem is constructive in the sense that a fixed computable function maps an index for ''<math>Q''</math> into the index ''<math>p''</math>.
 
=== Comparison to Rogers's theorem ===
Line 81 ⟶ 85:
 
== The first recursion theorem ==
While the second recursion theorem is about fixed points of computable functions, the first recursion theorem is related to fixed points determined by enumeration operators, which are a computable analogue of inductive definitions. An '''enumeration operator''' is a set of pairs (''A'',''n'') where ''A'' is a ([[Gödel number|code]] for a) finite set of numbers and ''n'' is a single [[natural number]]. Often, ''n'' will be viewed as a code for an ordered pair of natural numbers, particularly when functions are defined via enumeration operators. Enumeration operators are of central importance in the study of [[enumeration reducibility]].
 
Each enumeration operator Φ determines a function from sets of naturals to sets of naturals given by
Line 92 ⟶ 96:
:# For any computable enumeration operator Φ there is a recursively enumerable set ''F'' such that Φ(''F'') = ''F'' and ''F'' is the smallest set with this property.
:# For any recursive operator Ψ there is a partial computable function φ such that Ψ(φ) = φ and φ is the smallest partial computable function with this property.
The first recursion theorem is also called Fixed point theorem (of recursion theory).<ref>{{Cite book |last=Cutland |first=Nigel |title=Computability: an introduction to recursive function theory}}</ref> There is also a definition which can be applied to [[Primitive recursive functional|recursive functionals]] as follows:
 
Let <math>\Phi: \mathbb{F}(\mathbb{N}^k) \rightarrow (\mathbb{N}^k)</math> be a recursive functional. Then <math>\Phi</math> has a least fixed point <math>f_{\Phi}: \mathbb{N}^k \rightarrow \mathbb{N}</math> which is computable i.e.
=== Example ===
Like the second recursion theorem, the first recursion theorem can be used to obtain functions satisfying systems of recursion equations. To apply the first recursion theorem, the recursion equations must first be recast as a recursive operator.
 
1) <math>f\Phi(0f_{\phi})=1f_{\Phi}</math>
Consider the recursion equations for the [[factorial]] function ''f'':
 
2) <math>\forall g \in \mathbb{F}(\mathbb{N}^k)</math> such that <math>\Phi(g)=g</math> it holds that <math>f_{\Phi}\subseteq g</math>
<math>f(0)=1</math>
 
3) <math>f(n+1) = (n + 1) f_{\cdot f(n)Phi}</math> is computable
 
=== Example ===
The corresponding recursive operator Φ will have information that tells how to get to the next value of ''f'' from the previous value. However, the recursive operator will actually define the graph of ''f''. First, Φ will contain the pair <math>( \varnothing, (0, 1))</math>. This indicates that ''f''(0) is unequivocally 1, and thus the pair (0,1) is in the graph of ''f''.
Like the second recursion theorem, the first recursion theorem can be used to obtain functions satisfying systems of recursion equations. To apply the first recursion theorem, the recursion equations must first be recast as a recursive operator.
 
Next, for each ''n'' and ''m'', Φ will contain the pair <math>( \{ (n, m) \}, (n+1, (n+1)\cdot m))</math>. This indicates that, if ''f''(''n'') is ''m'', then ''f''(''n''&nbsp;+&nbsp;1) is (''n''&nbsp;+&nbsp;1)''m'', so that the pair (''n''&nbsp;+&nbsp;1,&nbsp;(''n''&nbsp;+&nbsp;1)''m'') is in the graph of ''f''. Unlike the base case ''f''(0)&nbsp;=&nbsp;1, the recursive operator requires some information about ''f''(''n'') before it defines a value of ''f''(''n''&nbsp;+&nbsp;1).
 
The first recursion theorem (in particular, part 1) states that there is a set ''F'' such that Φ(''F'') = F. The set ''F'' will consist entirely of ordered pairs of natural numbers, and will be the graph of the factorial function ''f'', as desired.
 
Consider the recursion equations for the [[factorial]] function ''f'':<math display="block">\begin{align}
The restriction to recursion equations that can be recast as recursive operators ensures that the recursion equations actually define a least fixed point. For example, consider the set of recursion equations:
&f(0) = 1 \\
&f(n+1) = (n + 1) \cdot f(n)
\end{align}</math>The corresponding recursive operator Φ will have information that tells how to get to the next value of ''f'' from the previous value. However, the recursive operator will actually define the graph of ''f''. First, Φ will contain the pair <math>( \varnothing, (0, 1))</math>. This indicates that ''f''(0) is unequivocally 1, and thus the pair (0,1) is in the graph of ''f''.
 
<math>g(0) = 1</math>
 
Next, for each ''n'' and ''m'', Φ will contain the pair <math>( \{ (n, m) \}, (n+1, (n+1)\cdot m))</math>. This indicates that, if ''f''(''n'') is ''m'', then {{nowrap|''f''(''n''&nbsp; +&nbsp; 1)}} is {{nowrap|(''n''&nbsp; +&nbsp; 1)''m''}}, so that the pair {{nowrap|(''n''&nbsp; +&nbsp; 1,&nbsp; (''n''&nbsp; +&nbsp; 1)''m'')}} is in the graph of ''f''. Unlike the base case {{nowrap|1=''f''(0)&nbsp; =&nbsp; 1}}, the recursive operator requires some information about ''f''(''n'') before it defines a value of {{nowrap|''f''(''n''&nbsp; +&nbsp; 1)}}.
<math>g(n + 1) = 1</math>
 
The first recursion theorem (in particular, part 1) states that there is a set ''F'' such that {{nowrap|1=Φ(''F'') = F}}. The set ''F'' will consist entirely of ordered pairs of natural numbers, and will be the graph of the factorial function ''f'', as desired.
<math>g(2n) = 0</math>
 
The restriction to recursion equations that can be recast as recursive operators ensures that the recursion equations actually define a [[least fixed point]]. For example, consider the set of recursion equations:<math display="block">\begin{align}
There is no function ''g'' satisfying these equations, because they imply ''g''(2) = 1 and also imply ''g''(2) = 0. Thus there is no fixed point ''g'' satisfying these recursion equations. It is possible to make an enumeration operator corresponding to these equations, but it will not be a recursive operator.
&g(0) = 1\\
<math>&g(n + 1) = 1</math>\\
<math>&g(2n) = 0</math>
\end{align}</math>There is no function ''g'' satisfying these equations, because they imply ''g''(2) = 1 and also imply ''g''(2) = 0. Thus there is no fixed point ''g'' satisfying these recursion equations. It is possible to make an enumeration operator corresponding to these equations, but it will not be a recursive operator.
 
=== Proof sketch for the first recursion theorem ===
The proof of part 1 of the first recursion theorem is obtained by iterating the enumeration operator Φ beginning with the [[empty set]]. First, a sequence ''F''<sub>''k''</sub> is constructed, for <math>k = 0, 1, \ldots</math>. Let ''F''<sub>0</sub> be the empty set. Proceeding inductively, for each ''k'', let ''F''<sub>''k'' + 1</sub> be <math>F_k \cup \Phi(F_k)</math>. Finally, ''F'' is taken to be <math display="inline">\bigcup F_k</math>. The remainder of the proof consists of a verification that ''F'' is recursively enumerable and is the least fixed point of Φ. The sequence ''F''<sub>''k''</sub> used in this proof corresponds to the Kleene chain in the proof of the [[Kleene fixed-point theorem]].
 
The second part of the first recursion theorem follows from the first part. The assumption that Φ is a recursive operator is used to show that the fixed point of Φ is the graph of a partial function. The key point is that if the fixed point ''F'' is not the graph of a function, then there is some ''k'' such that ''F''<sub>''k''</sub> is not the graph of a function.
Line 140 ⟶ 147:
* [[Denotational semantics]], where another least fixed point theorem is used for the same purpose as the first recursion theorem.
* [[Fixed-point combinator]]s, which are used in [[lambda calculus]] for the same purpose as the first recursion theorem.
* [[Diagonal lemma]] a closely related result in mathematical logic.
 
== References ==
* {{Cite book |last=Ershov |first=Yuri L. |author-link=Yury Yershov |date=1999 |chapter=Part 4: Mathematics and Computability Theory. 14. Theory of numbering |editor-last=Griffor |editor-first=Edward R. |title=Handbook of Computability Theory |series=Studies in logic and the foundations of mathematics |volume=140 |___location=Amsterdam |publisher=[[Elsevier]] |pppages=473–503 |isbn=9780444898821 |oclc=162130533 |access-date=6 May 2020 |url=https://books.google.com/books?id=KqeXZ4pPd5QC
}}
* {{Cite book |last=Jones |first=Neil D. |author-link=Neil D. Jones |date=1997 |title=Computability and complexity: From a Programming Perspective |___location=[[Cambridge, Massachusetts]] |publisher=[[MIT Press]] |isbn=9780262100649 |oclc=981293265
Line 153 ⟶ 160:
'''Footnotes'''
{{reflist|refs=
<ref name=Kleene1938>{{Cite journal |last=Kleene |first=Stephen C. |author-link=Stephen Cole Kleene |date=1938 |title=On notation for ordinal numbers |journal=[[Journal of Symbolic Logic]] |volume=3 |issue=4 |pppages=150–155 |issn=0022-4812 |doi=10.2307/2267778 |jstor=2267778 |s2cid=34314018 |access-date=6 May 2020 |url=http://www.thatmarcusfamily.org/philosophy/Course_Websites/Readings/Kleene%20-%20Ordinals.pdf}}</ref>
 
<ref name=Soare1987_88>{{Cite book |last=Soare |first=R.I. |author-link=Robert I. Soare |date=1987 |title=Recursively Enumerable Sets and Degrees: A Study of Computable Functions and Computably Generated Sets|series=Perspectives in Mathematical Logic |___location=Berlin and New York City |publisher=[[Springer-Verlag]] |ppage=88 |isbn=9780387152998 |oclc=318368332}}</ref>
 
<ref name=Cutland1980_204>{{Cite book |last=Cutland |first=Nigel J. |author-link=Nigel Cutland |date=1980 |title=Computability: An Introduction to Recursive Function Theory |publisher=[[Cambridge University Press]] |at=[https://books.google.com/books?id=wAstOUE36kcC&pg=PA204 p. 204] |isbn=9781139935609 |doi=10.1017/cbo9781139171496 |oclc=488175597 |access-date=6 May 2020 |url=https://books.google.com/books?id=wAstOUE36kcC}}</ref>
 
<ref name=BarendregtTerwijn2019_1151>{{Cite journal |last1=Barendregt |first1=Henk |author-link1=Henk Barendregt |last2=Terwijn |first2=Sebastiaan A. |date=2019 |title=Fixed point theorems for precomplete numberings |journal=Annals of Pure and Applied Logic |volume=170 |issue=10 |pppages=1151–1161 |issn=0168-0072 |doi=10.1016/j.apal.2019.04.013 |hdl=2066/205967 |hdl-access=free |s2cid=52289429 |access-date=6 May 2020 |url-access=subscription |url=http://www.sciencedirect.com/science/article/pii/S016800721930048X }} p. 1151.</ref>
}}
 
==Further reading==
* {{Cite journal |last1=Jockusch |first1=C. G. |author-link1=Carl Jockusch |last2=Lerman |first2=M. |last3=Soare |first3=R.I. |author-link3=Robert I. Soare |last4=Solovay |first4=R.M. |author-link4=Robert M. Solovay |date=1989 |title=Recursively enumerable sets modulo iterated jumps and extensions of Arslanov's completeness criterion |journal=[[The Journal of Symbolic Logic]] |volume=54 |issue=4 |pppages=1288–1323 |issn=0022-4812 |doi=10.1017/S0022481200041104 |jstor=2274816|s2cid=32203705 }}
 
== External links ==