Primitive recursive functional: Difference between revisions

Content deleted Content added
Definition: rm extra words
Bumpf (talk | contribs)
m Background: Spelling/grammar/punctuation/typographical correction
 
(8 intermediate revisions by 8 users not shown)
Line 1:
{{confuse|Primitive recursive function}}
 
In [[mathematical logic]], the '''primitive recursive functionals''' are a generalization of [[primitive recursive functions]] into higher [[type theory]]. They consist of a collection of functions in all pure finite types.
 
The primitive recursive functionals are important in [[proof theory]] and [[constructive mathematics]]. They are a central part of the [[Dialectica interpretation]] of intuitionistic arithmetic developed by [[Kurt Gödel]].
 
In [[recursion theory]], the primitive recursive functionals are an example of higher-type computability, as primitive recursive functions are examples of Turing computability.
Line 7 ⟶ 9:
== Background ==
 
Every primitive recursive functional has a type, which tellssays what kind of inputs it takes and what kind of output it produces. An object of type 0 is simply a natural number; it can also be viewed as a constant function that takes no input and returns an output in the set '''N''' of natural numbers.
 
For any two types σσ and ττ, the type σ→τσ→τ represents a function that takes an input of type σσ and returns an output of type ττ. Thus the function ''f''(''n'') = ''n''+1 is of type 0→00→0. The types (0→00→0)→0→0 and 0→0→(0→00→0) are different; by convention, the notation 0→0→00→0→0 refers to 0→0→(0→00→0). In the jargon of type theory, objects of type 0→00→0 are called ''functions'' and objects that take inputs of type other than 0 are called ''functionals''.
 
For any two types σσ and ττ, the type σ×τσ×τ represents an ordered pair, the first element of which has type σσ and the second element of which has type ττ. For example, consider the functional ''A'' takes as inputs a function ''f'' from '''N''' to '''N''', and a natural number ''n'', and returns ''f''(''n''). Then ''A'' has type (0 × (0→00→0))→0→0. This type can also be written as 0→0→(0→00→0)→0→0, by [[Curryingcurrying]].
 
The set of (pure) ''finite types'' is the smallest collection of types that includes 0 and is closed under the operations of × and &rarr;. A superscript is used to indicate that a variable ''x''<sup>&tau;τ</sup> is assumed to have a certain type &tau;τ; the superscript may be omitted when the type is clear from context.
 
== Definition ==
Line 20 ⟶ 22:
* The constant function ''f''(''n'') = 0 is a primitive recursive functional
* The successor function ''g''(''n'') = ''n'' + 1 is a primitive recursive functional
* For any type &sigma;×&tau;σ×τ, the functional K(''x''<sup>&sigma;σ</sup>, ''y''<sup>&tau;τ</sup>) = ''x'' is a primitive recursive functional
* For any types &rho;ρ, &sigma;σ, &tau;τ, the functional
*::S(''r''<sup>&rho;&rarr;&sigma;&rarr;&tau;ρ→σ→τ</sup>,''s''<sup>&rho;&rarr;&sigma;ρ→σ</sup>, ''t''<sup>&rho;ρ</sup>) = (''r''(''t''))(''s''(''t''))
*:is a primitive recursive functional
* For any type &tau;τ, and ''f'' of type &tau;τ, and any ''g'' of type 0&rarr;&tau;&rarr;&tau;0→τ→τ, the functional ''R''(''f'',''g'')<sup>0&rarr;&tau;0→τ</sup> defined recursively as
*::''R''(''f'',''g'')(0) = ''f'',
*::''R''(''f'',''g'',)(''n''+1) = ''g''(''n'',''R''(''f'',''g'')(''n''))
*: is a primitive recursive functional
 
== See also ==
 
* [[Dialectica interpretation]]
* [[Higher-order function]]
* [[Primitive recursive function]]
* [[Simply typed lambda calculus]]
 
== References ==
Line 33 ⟶ 42:
* {{cite book
| title = Gödel's functional ("Dialectica") interpretation
| url = http://math.stanford.edu/~feferman/papers/dialectica.pdf
| author = [[Jeremy Avigad]] and [[Solomon Feferman]]
| publisher = in S. Buss ed., The Handbook of Proof Theory, North-Holland
| year = 1999
Line 40 ⟶ 50:
 
[[Category:Proof theory]]
[[Category:RecursionComputability theory]]
 
{{mathlogic-stub}}