<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=General_recursive_function</id>
	<title>General recursive function - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.sarg.dev/index.php?action=history&amp;feed=atom&amp;title=General_recursive_function"/>
	<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=General_recursive_function&amp;action=history"/>
	<updated>2026-04-06T08:38:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.sarg.dev/index.php?title=General_recursive_function&amp;diff=17277&amp;oldid=prev</id>
		<title>imported&gt;LakshitSinghBishtTM: Changed plain text to latex for formulas in section &quot;Symbolism&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.sarg.dev/index.php?title=General_recursive_function&amp;diff=17277&amp;oldid=prev"/>
		<updated>2025-11-14T13:13:04Z</updated>

		<summary type="html">&lt;p&gt;Changed plain text to latex for formulas in section &amp;quot;Symbolism&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|One of several equivalent definitions of a computable function}}&lt;br /&gt;
In [[mathematical logic]] and [[computer science]], a &amp;#039;&amp;#039;&amp;#039;general recursive function&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;partial recursive function&amp;#039;&amp;#039;&amp;#039;, or &amp;#039;&amp;#039;&amp;#039;μ-recursive function&amp;#039;&amp;#039;&amp;#039; is a [[partial function]] from [[natural number]]s to natural numbers that is &amp;quot;computable&amp;quot; in an intuitive sense – as well as in a [[computable function|formal one]]. If the function is [[Total function|total]], it is also called a &amp;#039;&amp;#039;&amp;#039;total recursive function&amp;#039;&amp;#039;&amp;#039; (sometimes shortened to &amp;#039;&amp;#039;&amp;#039;recursive function&amp;#039;&amp;#039;&amp;#039;).&amp;lt;ref&amp;gt;{{Cite book|chapter-url=https://plato.stanford.edu/entries/recursive-functions/#PartRecuFuncPartRecuFuncREC|title = The Stanford Encyclopedia of Philosophy|chapter = Recursive Functions|year = 2021|publisher = Metaphysics Research Lab, Stanford University}}&amp;lt;/ref&amp;gt; In [[Computability theory (computation)|computability theory]], it is shown that the μ-recursive functions are precisely the functions that can be computed by [[Turing machine]]s&amp;lt;ref&amp;gt;[[Stanford Encyclopedia of Philosophy]], Entry [http://plato.stanford.edu/entries/recursive-functions Recursive Functions], Sect.1.7: &amp;quot;[The class of μ-recursive functions] &amp;#039;&amp;#039;turns out to coincide with the class of the Turing-computable functions introduced by Alan Turing as well as with the class of the λ-definable functions introduced by Alonzo Church.&amp;#039;&amp;#039;&amp;quot;&amp;lt;/ref&amp;gt;{{#tag:ref|{{cite journal | jstor=2268280 |first=Alan Mathison |last=Turing | author-link=Alan Turing | title=Computability and λ-Definability | journal=[[Journal of Symbolic Logic]] | volume=2 | number=4 | pages=153–163 | date=Dec 1937 |doi=10.2307/2268280 |s2cid=2317046 }} Proof outline on p.153: &amp;lt;math&amp;gt;\lambda\mbox{-definable}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\stackrel{triv}{\implies}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\lambda\mbox{-}K\mbox{-definable}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\stackrel{160}{\implies}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\mbox{Turing computable}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\stackrel{161}{\implies}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\mu\mbox{-recursive}&amp;lt;/math&amp;gt; &amp;lt;math&amp;gt;\stackrel{Kleene}{\implies}&amp;lt;/math&amp;gt;&amp;lt;ref&amp;gt;{{cite journal | url=https://projecteuclid.org/euclid.dmj/1077489488 |first=Stephen C. |last=Kleene | author-link=Stephen C. Kleene | title=λ-definability and recursiveness | journal=[[Duke Mathematical Journal]] | volume=2 | number=2 | pages=340–352 |year=1936 | doi=10.1215/s0012-7094-36-00227-2| url-access=subscription }}&amp;lt;/ref&amp;gt; &amp;lt;math&amp;gt;\lambda\mbox{-definable}&amp;lt;/math&amp;gt;}} (this is one of the theorems that supports the [[Church–Turing thesis]]).  The μ-recursive functions are closely related to [[primitive recursive function]]s, and their inductive definition (below) builds upon that of the primitive recursive functions. However, not every total recursive function is a primitive recursive function&amp;amp;mdash;the most famous example is the [[Ackermann function]].&lt;br /&gt;
&lt;br /&gt;
Other equivalent classes of functions are the functions of [[lambda calculus]] and the functions that can be computed by [[Markov algorithm]]s.&lt;br /&gt;
&lt;br /&gt;
The subset of all &amp;#039;&amp;#039;total&amp;#039;&amp;#039; recursive functions with values in {{math|{{mset|0,1}}}} is known in [[computational complexity theory]] as the [[R (complexity)|complexity class R]].&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;μ-recursive functions&amp;#039;&amp;#039;&amp;#039; (or &amp;#039;&amp;#039;&amp;#039;general recursive functions&amp;#039;&amp;#039;&amp;#039;) are partial functions that take finite tuples of natural numbers and return a single natural number.  They are the smallest class of partial functions that includes the initial functions and is closed under composition, primitive recursion, and the [[μ operator|minimization operator {{mvar|μ}}]].&lt;br /&gt;
&lt;br /&gt;
The smallest class of functions including the initial functions and closed under composition and primitive recursion (i.e. without minimisation) is the class of [[primitive recursive functions]].  While all primitive recursive functions are total, this is not true of partial recursive functions; for example, the minimisation of the successor function is undefined. The primitive recursive functions are a subset of the total recursive functions, which are a subset of the partial recursive functions. For example, the [[Ackermann function]] can be proven to be total recursive, and to be non-primitive.&lt;br /&gt;
&lt;br /&gt;
Primitive or &amp;quot;basic&amp;quot; functions:&lt;br /&gt;
#&amp;#039;&amp;#039;Constant functions {{mvar|C{{su|b=n|p=k}}}}&amp;#039;&amp;#039;: For each natural number {{mvar|n}} and every {{mvar|k}}&lt;br /&gt;
#::&amp;lt;math&amp;gt;C_n^k(x_1,\ldots,x_k) \ \stackrel{\mathrm{def}}{=}\  n&amp;lt;/math&amp;gt;&lt;br /&gt;
#:Alternative definitions use instead a &amp;#039;&amp;#039;zero function&amp;#039;&amp;#039; as a primitive function that always returns zero, and build the constant functions from the zero function, the successor function and the composition operator.&lt;br /&gt;
# &amp;#039;&amp;#039;Successor function S:&amp;#039;&amp;#039;&lt;br /&gt;
#::&amp;lt;math&amp;gt;S(x) \ \stackrel{\mathrm{def}}{=}\  x + 1\,&amp;lt;/math&amp;gt;&lt;br /&gt;
# &amp;#039;&amp;#039;Projection function&amp;#039;&amp;#039; &amp;lt;math&amp;gt;P_i^k&amp;lt;/math&amp;gt; (also called the &amp;#039;&amp;#039;Identity function&amp;#039;&amp;#039;): For all natural numbers &amp;lt;math&amp;gt;i, k&amp;lt;/math&amp;gt; such that &amp;lt;math&amp;gt;1\le i\le k&amp;lt;/math&amp;gt;:&lt;br /&gt;
#::&amp;lt;math&amp;gt;P_i^k(x_1,\ldots,x_k) \ \stackrel{\mathrm{def}}{=}\  x_i \, .&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Operators (the [[domain of a function]] defined by an operator is the set of the values of the arguments such that every [[function application]] that must be done during the computation provides a well-defined result):&lt;br /&gt;
#  &amp;#039;&amp;#039;Composition operator&amp;#039;&amp;#039; &amp;lt;math&amp;gt;\circ\,&amp;lt;/math&amp;gt; (also called the &amp;#039;&amp;#039;substitution operator&amp;#039;&amp;#039;): Given an m-ary function &amp;lt;math&amp;gt;h(x_1,\ldots,x_m)\,&amp;lt;/math&amp;gt; and m k-ary functions &amp;lt;math&amp;gt;g_1(x_1,\ldots,x_k),\ldots,g_m(x_1,\ldots, x_k)&amp;lt;/math&amp;gt;:&lt;br /&gt;
#::&amp;lt;math&amp;gt;h \circ (g_1, \ldots, g_m) \ \stackrel{\mathrm{def}}{=}\  f, \quad\text{where}\quad f(x_1,\ldots,x_k) = h(g_1(x_1,\ldots,x_k),\ldots,g_m(x_1,\ldots,x_k)).&amp;lt;/math&amp;gt;&lt;br /&gt;
#:This means that &amp;lt;math&amp;gt;f(x_1,\ldots,x_k)&amp;lt;/math&amp;gt; is defined only if &amp;lt;math&amp;gt;g_1(x_1,\ldots,x_k),\ldots, g_m(x_1,\ldots,x_k),&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;h(g_1(x_1,\ldots,x_k),\ldots,g_m(x_1,\ldots,x_k))&amp;lt;/math&amp;gt; are all defined.&lt;br /&gt;
# &amp;#039;&amp;#039;Primitive recursion operator&amp;#039;&amp;#039; {{mvar|&amp;amp;rho;}}: Given the &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-ary function &amp;lt;math&amp;gt;g(x_1,\ldots,x_k)\,&amp;lt;/math&amp;gt; and &amp;#039;&amp;#039;k&amp;#039;&amp;#039;+2 -ary function &amp;lt;math&amp;gt;h(y,z,x_1,\ldots,x_k)\,&amp;lt;/math&amp;gt;:&lt;br /&gt;
#::&amp;lt;math&amp;gt;\begin{align} &lt;br /&gt;
             \rho(g, h) &amp;amp;\ \stackrel{\mathrm{def}}{=}\  f \quad\text{where the k+1 -ary function } f \text{ is defined by}\\&lt;br /&gt;
    f(0,x_1,\ldots,x_k) &amp;amp;= g(x_1,\ldots,x_k) \\&lt;br /&gt;
  f(S(y),x_1,\ldots,x_k) &amp;amp;= h(y,f(y,x_1,\ldots,x_k),x_1,\ldots,x_k)\,.\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
#:This means that &amp;lt;math&amp;gt;f(y,x_1,\ldots,x_k)&amp;lt;/math&amp;gt; is defined only if &amp;lt;math&amp;gt;g(x_1,\ldots,x_k)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;h(z,f(z,x_1,\ldots,x_k),x_1,\ldots,x_k)&amp;lt;/math&amp;gt; are defined for all &amp;lt;math&amp;gt;z&amp;lt;y.&amp;lt;/math&amp;gt;&lt;br /&gt;
#&amp;#039;&amp;#039;Minimization operator&amp;#039;&amp;#039;  {{mvar|&amp;amp;mu;}}: Given a (&amp;#039;&amp;#039;k&amp;#039;&amp;#039;+1)-ary function &amp;lt;math&amp;gt;f(y, x_1, \ldots, x_k)\,&amp;lt;/math&amp;gt;, the &amp;#039;&amp;#039;k&amp;#039;&amp;#039;-ary function &amp;lt;math&amp;gt;\mu(f)&amp;lt;/math&amp;gt; is defined by:&lt;br /&gt;
#::&amp;lt;math&amp;gt;\begin{align}&lt;br /&gt;
          \mu(f)(x_1, \ldots, x_k) = z \stackrel{\mathrm{def}}{\iff}\ f(i, x_1, \ldots, x_k)&amp;amp;&amp;gt;0 \quad \text{for}\quad i=0, \ldots, z-1 \quad\text{and}\\&lt;br /&gt;
         f(z, x_1, \ldots, x_k)&amp;amp;=0\quad&lt;br /&gt;
\end{align}&amp;lt;/math&amp;gt;&lt;br /&gt;
Intuitively, minimisation seeks—beginning the search from 0 and proceeding upwards—the smallest argument that causes the function to return zero; if there is no such argument, or if one encounters an argument for which {{mvar|f}} is not defined, then the search never terminates, and &amp;lt;math&amp;gt; \mu(f)&amp;lt;/math&amp;gt; is not defined for the argument &amp;lt;math&amp;gt;(x_1, \ldots, x_k).&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
While some textbooks use the μ-operator as defined here,&amp;lt;ref name=&amp;quot;Enderton.1972&amp;quot;&amp;gt;Enderton, H. B., A Mathematical Introduction to Logic, Academic Press, 1972&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Boolos.Burgess.Jeffrey.2007&amp;quot;&amp;gt;Boolos, G. S., Burgess, J. P., Jeffrey, R. C., Computability and Logic, Cambridge University Press, 2007&amp;lt;/ref&amp;gt; others&amp;lt;ref name=&amp;quot;Jones.1997&amp;quot;&amp;gt;Jones, N. D., Computability and Complexity: From a Programming Perspective, The MIT Press, Cambridge, Massachusetts, London, England, 1997&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;Kfoury, A. J., R. N. Moll, and M. A. Arbib, A Programming Approach to Computability, 2nd ed., Springer-Verlag, Berlin, Heidelberg, New York, 1982&amp;lt;/ref&amp;gt; demand that the μ-operator is applied to &amp;#039;&amp;#039;total&amp;#039;&amp;#039; functions {{mvar|f}} only. Although this restricts the μ-operator as compared to the definition given here, the class of μ-recursive functions remains the same, which follows from Kleene&amp;#039;s Normal Form Theorem (see [[#Normal form theorem|below]]).&amp;lt;ref name=&amp;quot;Enderton.1972&amp;quot;/&amp;gt;&amp;lt;ref name=&amp;quot;Boolos.Burgess.Jeffrey.2007&amp;quot;/&amp;gt; The only difference is, that it becomes undecidable whether a specific function definition defines a μ-recursive function, as it is undecidable whether a computable (i.e. μ-recursive) function is total.&amp;lt;ref name=&amp;quot;Jones.1997&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;[[strong equality]]&amp;#039;&amp;#039; relation &amp;lt;math&amp;gt;\simeq&amp;lt;/math&amp;gt; can be used to compare partial μ-recursive functions.  This is defined for all partial functions &amp;#039;&amp;#039;f&amp;#039;&amp;#039; and &amp;#039;&amp;#039;g&amp;#039;&amp;#039; so that&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x_1,\ldots,x_k) \simeq g(x_1,\ldots,x_l)&amp;lt;/math&amp;gt; &lt;br /&gt;
holds [[if and only if]] for any choice of arguments either both functions are defined and their values are equal or both functions are undefined.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Examples not involving the minimization operator can be found at [[Primitive recursive function#Examples]].&lt;br /&gt;
&lt;br /&gt;
The following examples are intended just to demonstrate the use of the minimization operator;  they could also be defined without it, albeit in a more complicated way, since they are all primitive recursive.&lt;br /&gt;
{{unordered list&lt;br /&gt;
|The [[integer square root]] of {{mvar|x}} can be defined as the least {{mvar|z}} such that &amp;lt;math&amp;gt;(z+1)^2 &amp;gt; x&amp;lt;/math&amp;gt;. Using the minimization operator, a general recursive definition is &amp;lt;math&amp;gt;\operatorname{Isqrt} = \mu(\operatorname{Not} \circ \operatorname{Gt} \circ (\operatorname{Mul} \circ (S \circ P_1^2,S \circ P_1^2), P_2^2))&amp;lt;/math&amp;gt;, where {{math|Not}}, {{math|Gt}}, and {{math|Mul}} are [[logical negation]], greater-than, and multiplication,&amp;lt;ref&amp;gt;defined in [[Primitive recursive function#Junctors]], [[Primitive recursive function#Equality predicate]], and [[Primitive recursive function#Multiplication]]&amp;lt;/ref&amp;gt; respectively. In fact, &amp;lt;math&amp;gt;(\operatorname{Not} \circ \operatorname{Gt} \circ (\operatorname{Mul} \circ (S \circ P_1^2,S \circ P_1^2), P_2^2)) \; (z,x) = (\lnot S(z)*S(z) &amp;gt; x)&amp;lt;/math&amp;gt; is {{val|0}} if, and only if, &amp;lt;math&amp;gt;S(z)*S(z) &amp;gt; x&amp;lt;/math&amp;gt; holds. Hence &amp;lt;math&amp;gt;\operatorname{Isqrt}(x)&amp;lt;/math&amp;gt; is the least {{mvar|z}} such that &amp;lt;math&amp;gt;S(z)*S(z) &amp;gt; x&amp;lt;/math&amp;gt; holds. The negation [[junctor]] {{math|Not}} is needed since {{math|Gt}} encodes truth by {{val|1}}, while {{mvar|&amp;amp;mu;}} seeks for {{val|0}}.&lt;br /&gt;
}}&lt;br /&gt;
The following examples define general recursive functions that are not primitive recursive; hence they cannot avoid using the minimization operator.&lt;br /&gt;
{{unordered list&lt;br /&gt;
|{{example needed|date=November 2021}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Total recursive function ==&lt;br /&gt;
A general recursive function is called &amp;#039;&amp;#039;&amp;#039;total recursive function&amp;#039;&amp;#039;&amp;#039; if it is defined for every input, or, equivalently, if it can be computed by a [[total Turing machine]]. There is no way to computably tell if a given general recursive function is total - see &amp;#039;&amp;#039;[[Halting problem]]&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Equivalence with other models of computability ==&lt;br /&gt;
&lt;br /&gt;
{{Expand section|date=February 2010}}&lt;br /&gt;
&lt;br /&gt;
In the [[Church&amp;#039;s thesis|equivalence of models of computability]], a parallel is drawn between [[Turing machine]]s that do not terminate for certain inputs and an undefined result for that input in the corresponding partial recursive function.&lt;br /&gt;
The unbounded search operator is not definable by the rules of primitive recursion as those do not provide a mechanism for &amp;quot;infinite loops&amp;quot; (undefined values).&lt;br /&gt;
&lt;br /&gt;
== Normal form theorem ==&lt;br /&gt;
&lt;br /&gt;
A [[Kleene&amp;#039;s T predicate#Normal form theorem|normal form theorem]] due to Kleene says that for each &amp;#039;&amp;#039;k&amp;#039;&amp;#039; there are primitive recursive functions &amp;lt;math&amp;gt;U(y)\!&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;T(y,e,x_1,\ldots,x_k)\!&amp;lt;/math&amp;gt; such that for any μ-recursive function &amp;lt;math&amp;gt;f(x_1,\ldots,x_k)\!&amp;lt;/math&amp;gt; with &amp;#039;&amp;#039;k&amp;#039;&amp;#039; free variables there is an &amp;#039;&amp;#039;e&amp;#039;&amp;#039; such that&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x_1,\ldots,x_k) \simeq U(\mu(T)(e,x_1,\ldots,x_k))&amp;lt;/math&amp;gt;.&lt;br /&gt;
The number &amp;#039;&amp;#039;e&amp;#039;&amp;#039; is called an &amp;#039;&amp;#039;index&amp;#039;&amp;#039; or &amp;#039;&amp;#039;[[Gödel number]]&amp;#039;&amp;#039; for the function &amp;#039;&amp;#039;f&amp;#039;&amp;#039;.&amp;lt;ref&amp;gt;{{cite journal | doi=10.1090/S0002-9947-1943-0007371-8 | url=https://www.ams.org/journals/tran/1943-053-01/S0002-9947-1943-0007371-8/S0002-9947-1943-0007371-8.pdf | author=Stephen Cole Kleene | title=Recursive predicates and quantifiers | journal=Transactions of the American Mathematical Society | volume=53 | number=1 | pages=41&amp;amp;ndash;73 | date=Jan 1943 | doi-access=free }}&amp;lt;/ref&amp;gt;{{rp|52–53}}  A consequence of this result is that any μ-recursive function can be defined using a single instance of the μ operator applied to a (total) primitive recursive function.&lt;br /&gt;
&lt;br /&gt;
[[Marvin Minsky|Minsky]] observes the &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; defined above is in essence the μ-recursive equivalent of the [[universal Turing machine]]:&lt;br /&gt;
{{blockquote |text=To construct U is to write down the definition of a general-recursive function U(n, x) that correctly interprets the number n and computes the appropriate function of x. to construct U directly would involve essentially the same amount of effort, &amp;#039;&amp;#039;and essentially the same ideas&amp;#039;&amp;#039;, as we have invested in constructing the universal Turing machine {{sfn|Minsky|1972|pp=189}}}}&lt;br /&gt;
&lt;br /&gt;
== Symbolism ==&lt;br /&gt;
A number of different symbolisms are used in the literature. An advantage to using the symbolism is a derivation of a function by &amp;quot;nesting&amp;quot; of the operators one inside the other is easier to write in a compact form. In the following the string of parameters &amp;lt;math&amp;gt;x_1, x_2, \ldots, x_n&amp;lt;/math&amp;gt; is abbreviated as &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Constant function&amp;#039;&amp;#039;: Kleene uses &amp;quot;&amp;lt;math&amp;gt;C^n_q(x) = q&amp;lt;/math&amp;gt;&amp;quot; and Boolos-Burgess-Jeffrey (2002) (B-B-J) use the abbreviation &amp;quot;&amp;lt;math&amp;gt;\mathrm{const}^n(x) = n&amp;lt;/math&amp;gt;&amp;quot;:&lt;br /&gt;
:: e.g. &amp;lt;math&amp;gt;C^{7}_{13}(r, s, t, u, v, w, x) = 13&amp;lt;/math&amp;gt;&lt;br /&gt;
:: e.g. &amp;lt;math&amp;gt;\mathrm{const}^{13}(r, s, t, u, v, w, x) = 13&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Successor function&amp;#039;&amp;#039;: Kleene uses &amp;lt;math&amp;gt;x&amp;#039;&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; for &amp;quot;Successor&amp;quot;. As &amp;quot;successor&amp;quot; is considered to be primitive, most texts use the apostrophe as follows: &lt;br /&gt;
:: &amp;lt;math&amp;gt;S(a) = a + 1 ;\overset{\mathrm{def}}{=}; a&amp;#039;&amp;lt;/math&amp;gt;, where&lt;br /&gt;
: &amp;lt;math&amp;gt;1 \overset{\mathrm{def}}{=} 0&amp;#039;&amp;lt;/math&amp;gt;,&lt;br /&gt;
: &amp;lt;math&amp;gt;2 \overset{\mathrm{def}}{=} 0&amp;#039;&amp;#039;&amp;lt;/math&amp;gt;, etc.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Identity function&amp;#039;&amp;#039;: Kleene (1952) uses &amp;lt;math&amp;gt;U^n_i&amp;lt;/math&amp;gt; to indicate the [[identity function]] over the variables &amp;lt;math&amp;gt;x_i&amp;lt;/math&amp;gt;; B-B-J use the identity function &amp;lt;math&amp;gt;\mathrm{id}^n_i&amp;lt;/math&amp;gt; over the variables &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; to &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;:&lt;br /&gt;
: &amp;lt;math&amp;gt;U^n_i(x) = \mathrm{id}^n_i(x) = x_i&amp;lt;/math&amp;gt; &lt;br /&gt;
: e.g. &amp;lt;math&amp;gt;U^7_3(r, s, t, u, v, w, x) = \mathrm{id}^7_3(r,s,t,u,v,w,x) = t&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Composition (Substitution) operator&amp;#039;&amp;#039;: Kleene uses a bold-face &amp;lt;math&amp;gt;\mathbf{S}^n_m&amp;lt;/math&amp;gt; (not to be confused with his &amp;lt;math&amp;gt;S&amp;lt;/math&amp;gt; for &amp;quot;successor&amp;quot;!). The superscript &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; refers to the &amp;lt;math&amp;gt;m^{th}&amp;lt;/math&amp;gt; function &amp;lt;math&amp;gt;f_m&amp;lt;/math&amp;gt;, whereas the subscript &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; refers to the &amp;lt;math&amp;gt;n^{th}&amp;lt;/math&amp;gt; variable &amp;lt;math&amp;gt;x_n&amp;lt;/math&amp;gt;:&lt;br /&gt;
:If we are given&lt;br /&gt;
: &amp;lt;math&amp;gt;h(x) = g(f_1(x), \ldots, f_m(x))&amp;lt;/math&amp;gt;&lt;br /&gt;
: then&lt;br /&gt;
: &amp;lt;math&amp;gt;h(x) = \mathbf{S}^n_m(g, f_1, \ldots, f_m)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:In a similar manner, but without the sub- and superscripts, B-B-J write: &lt;br /&gt;
:: &amp;lt;math&amp;gt;h(x&amp;#039;) = Cg, f_1, \ldots, f_m&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;Primitive Recursion&amp;#039;&amp;#039;: Kleene uses the symbol &amp;lt;math&amp;gt;R^n(\text{base step}, \text{induction step})&amp;lt;/math&amp;gt; where n indicates the number of variables; B-B-J use &amp;lt;math&amp;gt;\Pr(\text{base step}, \text{induction step})(x)&amp;lt;/math&amp;gt;. Given:&lt;br /&gt;
:* base step: &amp;lt;math&amp;gt;h(0, x) = f(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
:* induction step: &amp;lt;math&amp;gt;h(y+1, x) = g(y, h(y,x), x)&amp;lt;/math&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
: Example: primitive recursion definition of &amp;lt;math&amp;gt;a + b&amp;lt;/math&amp;gt;&lt;br /&gt;
::* base step: &amp;lt;math&amp;gt;f(0, a) = a = U^1_1(a)&amp;lt;/math&amp;gt;U{{su|b=1|p=1}}(a)&lt;br /&gt;
::* induction step:&amp;lt;math&amp;gt;f(b&amp;#039;, a) = (f(b, a))&amp;#039; = g(b, f(b,a), a) = g(b, c, a) = c&amp;#039; = S(U^3_2(b, c, a))&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::  &amp;lt;math&amp;gt;R^2\left( U^1_1(a),; S(U^3_2(b, c, a)) \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::  &amp;lt;math&amp;gt;\Pr\left( U^1_1(a),; S(U^3_2(b, c, a)) \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;Example&amp;#039;&amp;#039;: Kleene gives an example of how to perform the recursive derivation of &amp;lt;math&amp;gt;f(b,a) = b + a&amp;lt;/math&amp;gt; (notice reversal of variables &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;). He starts with &amp;lt;math&amp;gt;3&amp;lt;/math&amp;gt; initial functions &lt;br /&gt;
:# &amp;lt;math&amp;gt;S(a) = a&amp;#039;&amp;lt;/math&amp;gt;&lt;br /&gt;
:# &amp;lt;math&amp;gt;U^1_1(a) = a&amp;lt;/math&amp;gt;&lt;br /&gt;
:# &amp;lt;math&amp;gt;U^3_2(b, c, a) = c&amp;lt;/math&amp;gt;&lt;br /&gt;
:# &amp;lt;math&amp;gt;g(b, c, a) = S(U^3_2(b, c, a)) = c&amp;#039;&amp;lt;/math&amp;gt;&lt;br /&gt;
:# base step: &amp;lt;math&amp;gt;h(0, a) = U^1_1(a)&amp;lt;/math&amp;gt;&lt;br /&gt;
:: induction step: &amp;lt;math&amp;gt;h(b&amp;#039;, a) = g(b, h(b,a), a)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
He arrives at:&lt;br /&gt;
:: &amp;lt;math&amp;gt;a + b = R^2\left( U^1_1,; S^3_1(S, U^3_2) \right)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
* [[Fibonacci number]]&lt;br /&gt;
* [[McCarthy 91 function]]&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Recursion theory]]&lt;br /&gt;
* [[Recursion]]&lt;br /&gt;
* [[Recursion (computer science)]]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
{{Refbegin}}&lt;br /&gt;
*{{cite book |author-link=Stephen Kleene |first=Stephen |last=Kleene |title=Introduction to Metamathematics |publisher=Walters-Noordhoff &amp;amp; North-Holland |orig-year=1952 |year=1991 |isbn=0-7204-2103-9 }} &lt;br /&gt;
*{{cite book |first=R. |last=Soare |title=Recursively enumerable sets and degrees: A Study of Computable Functions and Computably Generated Sets |publisher=Springer-Verlag |orig-year=1987 |year=1999 |isbn=9783540152996 |url=https://books.google.com/books?id=9I7Pl00LU5gC&amp;amp;pg=PP1}}&lt;br /&gt;
*{{cite book|author-link=Marvin L. Minsky  |first=Marvin L. |last=Minsky  |title=Computation: Finite and Infinite Machines |publisher=Prentice-Hall |orig-year=1967 |year=1972 |pages=210–5 |isbn=9780131654495}}&lt;br /&gt;
:On pages 210-215 Minsky shows how to create the μ-operator using the [[register machine]] model, thus demonstrating its equivalence to the general recursive functions.&lt;br /&gt;
*{{cite book |author-link=George Boolos |first1=George |last1=Boolos |author2-link=John P. Burgess |first2=John |last2=Burgess |author3-link=Richard Jeffrey |first3=Richard |last3=Jeffrey |title=Computability and Logic |publisher=Cambridge University Press |edition=4th |year=2002 |isbn=9780521007580 |pages=70–71 |chapter=6.2 Minimization |chapter-url=https://books.google.com/books?id=0LpsXQV2kXAC&amp;amp;pg=PA70}}&lt;br /&gt;
{{Refend}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[http://plato.stanford.edu/entries/recursive-functions/ Stanford Encyclopedia of Philosophy entry]&lt;br /&gt;
*[http://people.irisa.fr/Francois.Schwarzentruber/recursive_functions_to_turing_machines/ A compiler for transforming a recursive function into an equivalent Turing machine]&lt;br /&gt;
&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Mu-Recursive Function}}&lt;br /&gt;
[[Category:Computability theory]]&lt;br /&gt;
[[Category:Theory of computation]]&lt;br /&gt;
&lt;br /&gt;
[[ru:Рекурсивная функция (теория вычислимости)#Частично рекурсивная функция]]&lt;/div&gt;</summary>
		<author><name>imported&gt;LakshitSinghBishtTM</name></author>
	</entry>
</feed>