Fact-checked by Grok 2 weeks ago

General recursive function

In , a general recursive function (also called a μ-recursive function or partial recursive function) is a from the natural numbers to the natural numbers that can be generated from the basic functions of zero, successor, and by means of the operations of , primitive , and minimization (the μ-operator). This class of functions provides a precise for algorithmic , encompassing all functions that can be effectively calculated by a finite mechanical procedure. Introduced by in his 1934 lectures on undecidable propositions, the concept was formalized and expanded by and Stephen C. Kleene in the mid-1930s as part of efforts to resolve foundational questions in mathematics, such as the posed by . The general recursive functions are foundational to the Church-Turing thesis, which conjectures that they coincide exactly with the intuitively computable functions, a hypothesis first proposed by in 1936 and independently supported by Alan Turing's analysis of mechanical computation the same year. Kleene's 1936 paper provided a rigorous schema for their construction, proving closure under the defining operations and establishing their role in representing arithmetic predicates. Key properties include the existence of a universal general recursive function capable of simulating any other in the class (Kleene's normal form theorem) and their equivalence to functions computable by Turing machines, as demonstrated by Turing in 1937. These functions distinguish computable from non-computable problems, such as the , which Gödel and showed to be undecidable in formal systems. Historically, the development bridged earlier notions of primitive recursive functions (limited to total functions, as in Skolem 1923 and Gödel 1931) with broader models of partial computability, influencing modern .

Background and Prerequisites

Historical Context

The concept of general recursive functions emerged in amid efforts to formalize the notion of effective in , particularly in response to David Hilbert's program for securing the foundations of , which included the —a challenge to determine whether there exists an algorithm for deciding the validity of any mathematical statement in . played a pivotal role, initially introducing primitive recursive functions in his 1931 paper on incompleteness theorems, where he used them to arithmetize syntax and demonstrate limitations in formal systems. These functions served as a precursor, capturing a broad class of computable operations but proving insufficient for all effectively calculable ones, such as the . The extension to general recursive functions was spurred by correspondence between Gödel and Jacques Herbrand in 1931, where Herbrand suggested incorporating a minimization operator to handle partial functions, allowing definitions that search for the least value satisfying a condition. Gödel adopted this idea, terming the resulting class "general recursive" in his 1934 lectures at the Institute for Advanced Study, though the formal publication of the definition came later through Stephen Kleene's 1936 paper. This development addressed gaps in primitive recursion by enabling the computation of all total recursive functions while also accommodating partial ones, providing a precise model of mechanical procedures. Alonzo Church contributed significantly during this period, developing in 1932–1933 as an alternative formalization of functions and computation. In 1936, Church proved the undecidable using lambda-definability, proposing his thesis that effectively calculable functions coincide with lambda-definable ones—a claim soon extended to include general recursive functions after equivalence proofs. This negative resolution, corroborated by Alan Turing's 1936 work on computable numbers, solidified the Church-Turing thesis, establishing general recursive functions as a foundational for and underscoring the limits of algorithmic decidability in logic.

Primitive Recursive Functions

Primitive recursive functions form a fundamental class in , introduced by in his 1931 paper on formally undecidable propositions. These functions are defined as the smallest class of total functions from natural numbers to natural numbers that includes certain basic functions and is closed under composition and primitive recursion. The basic functions are the constant zero function Z(\mathbf{x}) = 0, which ignores any input; the S(x) = x + 1; and the projection functions \pi_i^k(x_1, \dots, x_k) = x_i for $1 \leq i \leq k, which select the i-th argument. allows combining previously defined primitive recursive functions: if g is j-ary and h_1, \dots, h_j are k-ary primitive recursive functions, then the function f(\mathbf{x}) = g(h_1(\mathbf{x}), \dots, h_j(\mathbf{x})) is also primitive recursive. Primitive recursion provides the schema for defining new functions from existing ones. Specifically, a (k+1)-ary function h(n, y_1, \dots, y_k) is primitive recursive if there exist primitive recursive functions g(y_1, \dots, y_k) (k-ary) and f(n, z, y_1, \dots, y_k) ((k+2)-ary) such that: \begin{align*} h(0, y_1, \dots, y_k) &= g(y_1, \dots, y_k), \\ h(n+1, y_1, \dots, y_k) &= f(n, h(n, y_1, \dots, y_k), y_1, \dots, y_k). \end{align*} This recursive step builds the function iteratively from the base case at 0 up to any input n. Common arithmetic operations illustrate primitive recursive functions. Addition +(m, n) is defined by +(0, n) = n and +(m+1, n) = S(+(m, n)), using the successor S and recursion. Multiplication \times(m, n) follows with \times(0, n) = 0 and \times(m+1, n) = +( \times(m, n), n ), composing addition and recursion. Exponentiation \exp(m, n) uses \exp(0, n) = 1 (via a constant function) and \exp(m+1, n) = \times( \exp(m, n), n ), again via composition and recursion. All primitive recursive functions are total, meaning they are defined and yield a unique output for every input of . This totality is established by on the definition of the function: base functions are total by inspection, compositions of total functions are total, and primitive recursion defines the value at each step uniquely from prior total values, ensuring coverage for all inputs. They are also computable, as each can be evaluated algorithmically by unfolding the definitions a finite number of times until reaching base cases, corresponding to a step-by-step procedure executable by a .

Definition and Construction

Base Functions and Composition

The foundation of general recursive functions, as formalized in , begins with a set of basic functions that serve as the initial building blocks. These base functions are simple and intuitive, providing the elementary operations from which more complex functions are constructed through operations. The three primary base functions are the constant zero function, the , and the projection functions. The constant zero function, often denoted as Z, is a function of arbitrary arity that returns 0 for any input tuple (x_1, \dots, x_n), where n \geq 0. Formally, Z(x_1, \dots, x_n) = 0. This function introduces the constant value 0 into the system, essential for initializing computations and representing absence or null values in recursive definitions. It was introduced by Kurt Gödel in his 1931 work on formal systems, where it forms one of the foundational elements for defining recursive predicates. The , denoted S, is a that increments its argument by 1: S(x) = x + 1. This operation allows the generation of all numbers starting from , enabling the construction of and counting mechanisms within recursive functions. Like the zero function, it originates from Gödel's framework, providing the means to build positive integers iteratively. functions, denoted P_i^k for $1 \leq i \leq k, are k-ary functions that select and return the i-th argument from an input tuple (x_1, \dots, x_k): P_i^k(x_1, \dots, x_k) = x_i. These functions facilitate the manipulation and referencing of specific s in multi-argument expressions, crucial for composing functions that depend on subsets of inputs. Gödel incorporated projections in to handle selection in his recursive definitions, ensuring flexibility in function arguments. A key operation for building more complex functions from these bases is , which combines by substituting outputs of inner as inputs to an outer . Given an m-ary g(y_1, \dots, y_m) and m or multi-ary h_1, \dots, h_m each taking n arguments, the yields an n-ary f defined as f(x_1, \dots, x_n) = g\bigl( h_1(x_1, \dots, x_n), \dots, h_m(x_1, \dots, x_n) \bigr). This operation, without involving , allows the nesting of computations, enabling the creation of like from successor applications. was part of Gödel's 1931 schema for recursive functions and later formalized by Stephen Kleene in his 1936 treatment of general recursive functions, where it ensures closure under substitution. The class of primitive recursive functions— a subclass of general recursive functions— is precisely the smallest class containing the base functions and closed under and primitive recursion. This closure property guarantees that any function obtained by repeated compositions of base functions remains within the primitive recursive class, providing a robust foundation for computable arithmetic operations. Kleene's 1936 analysis confirmed this closure, linking it to the broader theory of computability.

Primitive Recursion and Minimization

Primitive recursion is a scheme for defining functions by specifying their value at 0 and how to compute the value at the successor of an argument from previous values. Given a k-ary base function f and a (k+2)-ary step function g, the (k+1)-ary function h is defined by primitive recursion as: h(x_1, \dots, x_k, 0) = f(x_1, \dots, x_k), h(x_1, \dots, x_k, y+1) = g(x_1, \dots, x_k, y, h(x_1, \dots, x_k, y)). This allows the construction of total functions like addition and multiplication from the base functions. General recursive functions, also known as μ-recursive functions, extend the class of primitive recursive functions by incorporating the minimization operator, while remaining closed under composition and primitive recursion. This construction allows for the definition of a broader set of computable functions, including those that involve unbounded search. The foundational work establishing this closure is due to Stephen Kleene, who formalized the class in terms of effective procedures on natural numbers. The minimization , denoted μy [f(x₁, ..., xₙ, y) = 0], applied to a f, yields a new that returns the smallest y such that f(x₁, ..., xₙ, y) equals zero, for given inputs x₁ through xₙ. If no such y exists, the resulting is for those inputs. This formalizes an unbounded minimization , enabling the of functions that require searching over potentially domains until a is met. Unlike recursive functions, which are and always defined for all inputs, the inclusion of minimization introduces partial functions that may diverge or remain undefined for certain arguments. This partiality arises precisely when the search for y fails to terminate. Formally, a φ is general recursive if it belongs to the smallest class of functions containing the base functions (such as the zero function, , and functions) and closed under , primitive recursion, and the μ-operator, obtained through finitely many applications of these operations. This inductive definition ensures that general recursive functions capture all effectively computable functions on the natural numbers.

Classifications and Properties

Total Recursive Functions

A total recursive function, also known as a in the strict sense, is a general recursive function that is defined for every input in its domain, mapping from tuples of natural numbers to natural numbers without any undefined values. This totality ensures that the computation always terminates and produces an output for all possible arguments, distinguishing it from partial cases where minimization might lead to non-halting behaviors. All primitive recursive functions are total recursive, as they are constructed via and primitive recursion, which guarantee defined outputs for all inputs; however, the converse does not hold, since the class of total recursive functions is strictly larger. A example is the Ackermann-Péter function, which grows faster than any primitive recursive function and thus lies outside the primitive recursive class, yet remains total recursive due to its computability via general recursion schemes. Total recursive functions coincide with the class of functions computable by Turing machines that halt on every input, embodying the total computable functions in the sense of Church's thesis. This equivalence underscores their role as the effectively calculable total functions, closed under composition, primitive recursion, and certain forms of minimization that preserve totality.

Partial Recursive Functions

Partial recursive functions, also referred to as μ-recursive functions, form the class of all computable partial functions on the natural numbers. They are obtained as the smallest class of partial functions containing the basic functions—such as the zero function, successor function, and projection functions—and closed under the operations of composition and primitive recursion, with the addition of the unbounded minimization operator (μ-operator). The μ-operator applied to a total function g allows defining a new partial function f(\vec{x}) = μ y [g(\vec{x}, y) = 0], which is defined for input \vec{x} if there exists a natural number y such that g(\vec{x}, y) = 0, and in that case takes the value of the least such y; otherwise, f(\vec{x}) is undefined. This operator introduces the possibility of non-termination, distinguishing partial recursive functions from the strictly total primitive recursive functions. The of a partial φ: \mathbb{N}^k \rightharpoonup \mathbb{N} is the set dom(φ) = {\vec{x} \in \mathbb{N}^k \mid φ(\vec{x}) \downarrow }, where the notation ↓ indicates that the computation halts and yields a defined value. Unlike total functions, which are defined everywhere, the domains of partial recursive functions may be proper subsets of \mathbb{N}^k, corresponding precisely to the recursively enumerable (r.e.) subsets of \mathbb{N}^k. For any partial recursive function, membership in its domain can be tested by for a terminating computation, though this search may not halt for inputs outside the domain. The total recursive functions form the subclass of partial recursive functions whose domains are the entire \mathbb{N}^k. A key property of partial recursive functions is that their domains admit effective enumerations via total recursive means. Specifically, for every partial recursive function φ_e (where e is an index in a of the class), there exists a recursive predicate , known as an instance of Kleene's T-predicate, such that \vec{x} \in dom(φ_e) \exists z , T_e(\vec{x}, z). Here, z encodes a valid halting computation of φ_e on \vec{x}, and a recursive extraction function U(z) recovers the output value when defined. The universal T-predicate T(e, \vec{x}, z) is itself recursive and applies uniformly across all indices e, enabling the representation of any partial recursive computation in normal form: φ_e(\vec{x}) \simeq U(\mu z , T(e, \vec{x}, z)). This structure underscores the computability of domains while highlighting the undecidability of the halting problem for general inputs.

Examples

Primitive Recursive Examples

Primitive recursive functions are constructed from basic functions using and primitive recursion, without the need for minimization, allowing for the definition of familiar arithmetic operations on natural numbers. These examples demonstrate how fundamental operations like , , and can be built step by step, showcasing the properties of the primitive recursive class. The addition function, denoted as \operatorname{add}(x, y), is primitive recursive and serves as a foundational example. It is defined by the recursion scheme with base case \operatorname{add}(x, 0) = x and recursive step \operatorname{add}(x, y+1) = S(\operatorname{add}(x, y)), where S is the successor function, one of the initial functions. This construction iteratively applies the successor y times to x, ensuring the function is total and computable by finite iteration. Building on , the function \operatorname{mul}(x, y) is also primitive recursive. It uses the recursion scheme: base case \operatorname{mul}(x, 0) = 0 (the constant zero function, an initial function) and recursive step \operatorname{mul}(x, y+1) = \operatorname{add}(\operatorname{mul}(x, y), x). This repeatedly adds x to itself y times, leveraging the previously established primitive recursive via . Exponentiation \operatorname{exp}(x, y) extends this hierarchy and remains primitive recursive. Defined recursively as base case \operatorname{exp}(x, 0) = 1 (using the constant function) and recursive step \operatorname{exp}(x, y+1) = \operatorname{mul}(\operatorname{exp}(x, y), x), it computes x^y by iteratively multiplying x into the accumulator y times, composing with the primitive recursive . More generally, bounded summation and bounded product operations are primitive recursive when the summand or factor is itself primitive recursive. The bounded sum \sum_{z=0}^{y} g(x, z), where g is primitive recursive, can be defined recursively: base case for y = 0 is g(x, 0), and step \sum_{z=0}^{y+1} g(x, z) = \operatorname{add}\left( \sum_{z=0}^{y} g(x, z), g(x, y+1) \right), using and . Similarly, the bounded product \prod_{z=0}^{y} g(x, z) follows an analogous with in the recursive step, ensuring these operations stay within the primitive recursive class by bounding the recursion depth.

Non-Primitive Recursive Examples

One prominent example of a total general recursive function that is not primitive recursive is the , which demonstrates the limitations of primitive recursion through its extremely rapid growth rate. The commonly used two-argument version, a simplification of the original three-argument form, is defined recursively for nonnegative integers m and n as follows: \begin{align*} A(0, n) &= n + 1, \\ A(m + 1, 0) &= A(m, 1), \\ A(m + 1, n + 1) &= A(m, A(m + 1, n)). \end{align*} This definition was introduced in its three-variable form by in 1928 to provide an explicit total outside the class of primitive recursive functions. It was later refined to the two-argument version by Rózsa Péter, highlighting functions computable via general recursion but not primitive recursion. The function's values escalate dramatically—for instance, A(4, 2) = 2^{65536} - 3—surpassing the growth of functions like or . To establish that the Ackermann function is not primitive recursive, a argument is employed. recursive functions form a indexed by the depth of nesting in their recursive definitions, where each level k is dominated by a specific growth rate (e.g., level 0 for , level 1 for , up to higher levels for iterated exponentials). The diagonal sequence A(k, k) grows faster than the bounding function at any fixed hierarchy level k, ensuring no single can majorize the entire . The μ-operator plays a crucial role in defining general recursive functions that are not primitive recursive, particularly through unbounded minimization. An illustrative partial recursive function relying on the μ-operator is the halting predicate for Turing machines, which determines whether a machine with Gödel number e halts on input x. Define h(e, x) = \mu t \, [U(t_e(x, t)) = 0], where t_e(x, t) simulates t steps of machine e on x, and U extracts the output if halted (both primitive recursive via Kleene's T-predicate). The function h is partial, defined only if the machine halts, and undecidable in general, underscoring the power and limitations of general recursion.

Equivalence to Other Models

Turing Machines

A consists of a of s, including an initial and halting s; an infinite divided into s, each holding a from a that includes a blank and the input as a subset; a read-write head that scans one at a time; and a partial transition function that, given the current and under the head, specifies a to write, a direction (left or right) to move the head, and a next . starts with the input encoded as a of s on the (with the rest blank), the head on the leftmost input , and the in the initial ; it proceeds by repeatedly applying the transition function until entering a halting , at which point the contents represent the output if defined. This model formalizes mechanical as a discrete, step-by-step process. The equivalence between general recursive functions (also known as μ-recursive functions) and computability relies on mutual . To show that every μ-recursive is Turing-computable, natural numbers are encoded on the tape, typically in (using a string of marks) or for indices. A can then interpret an index e encoding the function's definition via base functions, , primitive , and μ-operator, simulating the computation on input x. Primitive is implemented by bounded over the tape, tracking parameters and accumulating results; the μ-operator is simulated by an unbounded search that enumerates candidate values until the holds, using dovetailing to handle potential non-halting. The step T(e, x, y, s) captures whether the universal machine, starting with index e and input x, reaches output y after exactly s steps, allowing formalization of halting and computation. Conversely, any computation can be encoded as a μ-recursive by representing configurations (, head position, tape contents) as numbers via functions, with transitions defined recursively to simulate steps until halting. This bidirectional simulation establishes the central equivalence theorem: a partial function on the natural numbers is general recursive if and only if it is computable by a . The result was demonstrated through foundational works showing that Turing's "computable" functions coincide with Kleene's general recursive functions, via proofs of inclusion in both directions. The Church-Turing thesis posits as a that every function effectively computable in the intuitive sense is general recursive (equivalently, Turing-computable), providing a unifying foundation for the field despite lacking , as it bridges informal notions of with precise models.

Lambda Calculus and Other Systems

The untyped , introduced by , serves as a foundational equivalent to general recursive functions. In this system, terms are built from variables, abstractions (λx.M), and applications (M N), with computation proceeding via beta-reduction, the process of substituting the argument of an application into the body of a lambda abstraction, subject to variable capture avoidance. Natural numbers are encoded as Church numerals, where the numeral for n applies a f exactly n times to an argument x; for instance, 0 is λf.λx.x, 1 is λf.λx.f x, and successor is λn.λf.λx.f (n f x). These encodings allow arithmetic operations, such as and , to be defined combinatorially within lambda terms. The equivalence between general recursive functions and lambda-definable functions was established by Stephen Kleene, who demonstrated that every general recursive function can be encoded as a lambda term, and conversely, every lambda-definable function is general recursive. Kleene's translation maps the base functions (zero, successor, projection) and operations (composition, primitive recursion, minimization) to corresponding lambda terms, preserving computability. The minimization operator, which introduces partiality by searching for the least zero of a function, corresponds in lambda calculus to the use of fixed-point combinators, such as the Y combinator defined as Y = λf.(λx.f (x x)) (λx.f (x x)), which enables the definition of recursive functions by finding fixed points without explicit self-reference. Beyond , general recursive functions are equivalent to computations in other models, including introduced by . A consists of a finite set of registers holding non-negative integers and instructions for incrementing, decrementing (if positive), or transferring control, with Minsky showing that such machines can simulate the μ-operator, thus computing all partial recursive functions. Similarly, Emil Post's canonical systems, or production systems, provide another equivalent formulation, where strings over an alphabet are transformed via rule applications, and Post established that these systems generate exactly the recursively enumerable sets when considering normal forms. These equivalences underscore the universality of general recursive functions across diverse computational paradigms.

Key Theorems

Normal Form Theorem

Kleene's normal form theorem provides a canonical representation for every partial in terms of recursive functions and the minimization operator. Specifically, for every partial \phi_e^{(k)}(\bar{x}) of k arguments with index e, there exist a recursive predicate T^{(k)}(e, \bar{x}, y) and a recursive function u(y) such that \phi_e^{(k)}(\bar{x}) \simeq u(\mu y \, T^{(k)}(e, \bar{x}, y)), where \simeq denotes convergence to the same value if the right-hand side is defined, and \mu y is the minimization operator finding the least y satisfying the predicate. The predicate T^{(k)}(e, \bar{x}, y), known as the Kleene T-predicate, encodes whether y represents a valid computation history for the e-th partial recursive function on input \bar{x}. It is primitive recursive, hence total and computable for all inputs, and satisfies adequacy: if \phi_e^{(k)}(\bar{x}) converges to a value, then there exists a unique minimal y such that T^{(k)}(e, \bar{x}, y) holds, and for all larger y', T^{(k)}(e, \bar{x}, y') also holds. The function u(y) unraveled the code y to extract the output value, and is likewise primitive recursive and total. These components ensure that the normal form captures exactly the partial recursive functions without introducing extraneous computations. The proof relies on the indexing , which assigns indices e to all partial recursive definitions via a scheme that encodes the structure of recursive schemata (, primitive recursion, and minimization). Computations are then arithmetized by entire sequences of function applications as y, allowing T^{(k)} to verify step-by-step validity using primitive recursive checks on the codes. This construction demonstrates that every partial recursive function arises from a fixed universal form, independent of the specific index e. As corollaries, the theorem yields the existence of a universal partial recursive \varphi(x, \bar{y}) = u(\mu z \, T^{(k)}(x, \bar{y}, z)) that simulates the x-th on \bar{y}, enumerating all partial recursive functions. It also implies the s-m-n theorem, which provides a primitive recursive way to adjust indices for arguments, such as a s^{m,n}(i, \bar{w}) satisfying \phi_{s^{m,n}(i, \bar{w})}^{(n)}(\bar{z}) = \phi_i^{(m+n)}(\bar{w}, \bar{z}). These results underscore the uniformity of partial recursive functions and their equivalence to other models of computation, such as Turing machines.

Fixed-Point Theorem

Kleene's fixed-point theorem, a cornerstone of recursion theory, guarantees the existence of self-referential functions within the class of partial s. Specifically, for any partial f(x, y), there exists a partial g(x) (often total when the fixed point is defined everywhere) such that g(x) = f(x, g(x)) for all x in the domain where the right-hand side is defined. This result, first established by Stephen Kleene, enables the construction of functions that apply an operator to themselves, capturing essential aspects of and . The proof relies on the s-m-n theorem (parametrization theorem) and the universal function from Kleene's normal form theorem. Let e be an index such that \phi_e(x, y) = f(x, y). By the s-m-n theorem, there exists a primitive recursive function s^1 such that \phi_{s^1_e(z)}(w) = \phi_e(z, w). To achieve self-reference, construct an index for the function that incorporates its own index in the application of f. Let k be an index for the partial recursive function \psi(z, x) = \phi_z(x, \phi_{s^1_z(z)}(x)). Then, taking g = \phi_k, it follows that g(x) = \phi_k(x, g(x)) = f(x, g(x)), as the diagonal application aligns the indices appropriately. The explicit construction of the fixed point is given by the equation \phi_{s^1_e(e)}(x) = \phi_e(x, \phi_{s^1_e(e)}(x)), where the left side denotes the self-applied function and the right side embeds the recursive call, ensuring the fixed-point property holds by the properties of the universal underlying the normal form. This theorem plays a pivotal role in applications involving and . It underpins the diagonalization lemma, which is central to , allowing the construction of self-referential sentences in formal systems that assert their own unprovability. Additionally, as the recursion theorem itself, it facilitates the effective generation of programs that can inspect and modify their own descriptions, with implications for quines and undecidability results in .

Notation and Formalism

Standard Symbols and Conventions

In the theory of general recursive functions, partial recursive functions are commonly indexed by natural numbers using the notation \phi_e, where e \in \mathbb{N} serves as a Gödel number encoding a program or formal description of the function. This indexing allows for the enumeration of all partial recursive functions, facilitating proofs of universality and completeness in computability. The domain of such a function, denoted \operatorname{Dom}(\phi_e), consists of the set of inputs for which \phi_e is defined and converges to a value, reflecting the partial nature of general recursive functions. Arithmetic operations essential to the construction of recursive functions include the , often symbolized as x \oplus y, which bijectively encodes pairs of natural numbers into single natural numbers to enable coding of higher-arity functions. The , \operatorname{sg}(n), is defined as 0 if n = 0 and 1 otherwise, providing a primitive recursive test for positivity that underpins many bounded operations. Standard primitive recursive predicates include , whose returns 1 if the arguments are equal and 0 otherwise, and the less-than relation, which returns 1 if the first argument is strictly less than the second and 0 otherwise; both are constructed using basic recursive operations like and the .

Formal Language Representation

The formal syntax for general recursive functions, also known as μ-recursive functions, is constructed as a term language over the natural numbers \mathbb{N} = \{0, 1, 2, \dots\}, starting from basic terms and applying closure under , primitive recursion, and minimization. The base terms include the constant zero function Z^n(\vec{x}) = 0 for any n \geq 0, the S(x) = x + 1, and functions P_i^n(x_1, \dots, x_n) = x_i for $1 \leq i \leq n. These base functions form the initial class, denoted \mathcal{B}, from which more complex terms are built using operators. Abstraction for composition allows forming a new term h(\vec{x}) = f(g_1(\vec{x}), \dots, g_k(\vec{x})) where f, g_1, \dots, g_k are previously defined terms, ensuring the arities match appropriately. Primitive recursion abstracts a term f(\vec{x}, 0) = g(\vec{x}) and f(\vec{x}, y+1) = h(\vec{x}, y, f(\vec{x}, y)), where g and h are prior terms, yielding a total function on \mathbb{N}^{k+1}. The minimization operator, or μ-abstraction, forms a partial term \mu y \, [t(\vec{x}, y) = 0], which denotes the least y \in \mathbb{N} such that the subterm t(\vec{x}, y) evaluates to 0, or is undefined if no such y exists; here t is a prior total term defining a predicate. The class of all such terms, closed under these operations starting from \mathcal{B}, constitutes the general recursive functions. Standard symbols such as \vec{x} for tuples and \downarrow for definedness are used in this formalism. The semantics interpret these terms as partial functions from \mathbb{N}^k to \mathbb{N} \cup \{\uparrow\}, where \uparrow denotes , over the structure of natural numbers equipped with the standard operations of zero, successor, and projection. Each term t is assigned a : \mathbb{N}^k \to \mathbb{N} \cup \{\uparrow\} inductively: base functions are total and compute as specified, applies the outer function to the results of inner ones (undefined if any inner is \uparrow or the outer is undefined thereon), primitive recursion unfolds the recursive step along the last argument (always total), and minimization searches sequentially for the least witness (partial, undefined without one). This interpretation captures precisely, with the domain of $$ being the set of \vec{x} where [t](\vec{x}) \neq \uparrow. Gödel numbering encodes these syntactic terms and recursive definitions as natural numbers to enable metatheoretic analysis, such as representability in arithmetic. A standard encoding assigns indices to base functions and operations: zero as \langle 0 \rangle, successor as \langle 1 \rangle, projection P_i^n as \langle 2, n, i \rangle, composition of functions with indices e_1, \dots, e_m, e as \langle 3, e_1, \dots, e_m, e \rangle, primitive recursion on indices e, f as \langle 4, e, f \rangle, and minimization on index e as \langle 5, e \rangle. Finite sequences of such indices are coded using a primitive recursive bijection like the β-function, which injects \mathbb{N}^{k+1} into \mathbb{N} to represent tuples (z; \vec{a}) satisfying \beta(z, i, k) = a_i for i \leq k. This allows a single natural number to represent an entire term or proof of recursiveness. For example, a recursive definition via primitive recursion on base terms zero (index 0) and a composition (index \langle 3, 1, 2 \rangle) for the recursive step would be encoded as \langle 4, 0, \langle 3, 1, 2 \rangle \rangle, then β-coded with parameters for the full arity, yielding a Gödel number that uniformly parametrizes the function's computation. Such encodings underpin theorems like the enumeration theorem, where every general recursive function has an index in this system.

References

  1. [1]
    Recursive Functions - Stanford Encyclopedia of Philosophy
    Apr 23, 2020 · The recursive functions are a class of functions on the natural numbers studied in computability theory, a branch of contemporary ...The General Recursive... · The Origins of Recursive... · Computability Theory
  2. [2]
    [PDF] Kurt Godel - Collected Works - Volume I - Antilogicalism
    This volume includes all of Godel's published writings in the period 1929-1936, and begins with his dissertation of 1929, available previously only through the.
  3. [3]
    [PDF] An Unsolvable Problem of Elementary Number Theory Alonzo ...
    Mar 3, 2008 · In a forthcoming paper by Kleene to be entitled, "General recursive functions of natural numbers," (abstract in Bulletin of the American ...
  4. [4]
    General recursive functions of natural numbers
    This form of the definition was introduced by Gōdel to avoid the necessity of providing for omissions of arguments on the right in schemas (1) and (2).Missing: original paper
  5. [5]
    The Church-Turing Thesis (Stanford Encyclopedia of Philosophy)
    Jan 8, 1997 · As already mentioned, the title of Turing's 1936 paper included “with an Application to the Entscheidungsproblem”, and Church went with simply “ ...The Case for the Church... · The Church-Turing Thesis and...
  6. [6]
    [PDF] Only Two Letters: The Correspondence Between Herbrand and Gödel
    Nov 21, 2004 · He asserts that many other functions are definable by his "general schema," in particular, the non-primitive recursive. Ackermann function. He ...
  7. [7]
    [PDF] ON COMPUTABLE NUMBERS, WITH AN APPLICATION TO THE ...
    Although the subject of this paper is ostensibly the computable numbers. it is almost equally easy to define and investigate computable functions of an integral ...
  8. [8]
    General recursive functions of natural numbers. - EuDML
    Kleene, S.C.. "General recursive functions of natural numbers.." Mathematische Annalen 112 (1936): 727-742. <http://eudml.org/doc/159849>.
  9. [9]
    [PDF] Recursive Functions - Open Logic Project Builds
    Many generalizations of primitive recursion have been considered, but the most powerful and widely-accepted additional way of computing functions is by un-.
  10. [10]
  11. [11]
  12. [12]
  13. [13]
  14. [14]
  15. [15]
    Zum Hilbertschen Aufbau der reellen Zahlen - EuDML
    ACKERMANN, W.. "Zum Hilbertschen Aufbau der reellen Zahlen." Mathematische Annalen 99 (1928): 118-133. <http://eudml.org/doc/159248>.Missing: function Mathematik
  16. [16]
    Recursive Unsolvability of Post's Problem of "Tag" and other Topics ...
    3, November, 1961. Printed in Japan. RECURSIVE UNSOLVABILITY OF POST'S PROBLEM OF. "TAG" AND OTHER TOPICS IN THEORY OF. TURING MACHINES*. BY MARVIN L. MINSKY.
  17. [17]
    [PDF] Computability and Recursion
    (iii) A function f is recursive if it is general recursive, as defined by. Gödel 1934. (See also Kleene's variant 1936, 1943, and [1952, p. 274].) (iv) A set A ...
  18. [18]
    [PDF] group in logic and the methodology of science
    Throughout this exam, we use the standard notation ϕe to refer to the eth partial recursive function relative to some standard listing and We = dom ϕe for the ...
  19. [19]
    [PDF] TOPICS IN THE THEORY OF RECURSIVE FUNCTIONS
    pairing function is recursive (respectively r.e.). A partial function f : N → N is recursive if its graph {hx, yi : f(x) = y} is a recursive subset of N × N.
  20. [20]
    [PDF] Lecture 4: The Primitive Recursive Functions - Michael Beeson's
    The definition goes back at least to Skolem (1908). Scholars argue about the history, primarily because the method of definition by primitive recursion predates ...<|control11|><|separator|>