| Liste Articles: [0-A] [A-C] [C-F] [F-J] [J-M] [M-P] [P-S] [S-Z] | Liste Catégories | Une page au hasard | Pages liées | ||||||
| Sommaire |
Définissons les entiers unaires : t est entier si t=0 ou s'il existe t' un entier tel que t=Succ(t') (c'est-à-dire t=t'+1).
Une fonction récursive primitive est définie par


predecesseur(0) = ∅
predecesseur(Succ(x)) = x
somme(0,y) = y
somme(Succ(x),y) = Succ(somme(x,y))
produit(0,y) = 0
produit(Succ(x),y) = somme(y,produit(x,y))
La fonction d'Ackermann définie par
ackermann(0,p) = Succ(p)
ackermann(Succ(n),0) = ackermann(n,1)
ackermann(Succ(n),Succ(p)) = ackermann(n,ackermann(Succ(n),p))
n'est pas récursive primitive car la récursion se fait sur deux entiers simultanément.
Le même problème se pose si on veut utiliser cet algorithme du minimum :
minimum(0,p) = 0
minimum(Succ(n),0) = 0
minimum(Succ(n),Succ(p)) = Succ(minimum(n,p))
La récursion primitive est un langage de programmation théorique qui a la propriété que tous les programmes écrits dans ce langages terminent. Pour pouvoir écrire des programmes dans ce langage on peut utiliser différents formalismes.
Les termes de Martin Löf sont soit :
Dans la récursion, t est un terme sur lequel on fait la récursion, b est le cas de base et s l'étape de récurrence. Dans l'étape de récurrence, la variable x représente le prédécesseur de l'entier sur lequel on fait la récurrence et le y est l'étape de récurrence.
L'addition de n et p s'écrit Rec(n,p,(x,y)Succ(y)).
Kleene a introduit les combinateurs qui sont une autre manière de représenter les fonctions récursives primitives. Les combinateurs sont munis d'arité, c'est-à-dire qu'ils ont un nombre de paramètres défini (sauf dans un cas particulier).
Un combinateur est :
L'addition se programme ainsi : Rec(π11, S(Succ,π23))


