1.1 Le langage de l’arithmétique. Le langage de l’arithmétique est défini par – les symboles de fonctions 0 (symbole de constante,i.e., fonction d’arité 0),S(symbole de fonction unaire),+et ;(symboles de fonction binaire) – les symboles de prédicats=et<. En toute rigueur les termes et les formules de l’arithmétique sont construits en utilisant la notationpolonaise préfixéeà dire que la formule qui exprime que(c’est xest égale àys’écrit =xy). En pratique on utilisera des parenthèses et les symboles binaires en notation infixe. Vérité, équivalence de formules.On dira que deux formulesAetBsontlogiquement équiva-lentessi le séquent⊢A↔Best prouvable dansLK(le calcul des séquents). On dira qu’une formuleAde l’arithmétique est vraie, ou simplement que l’on aAsiAest vraie dans les entiers. En particulier on dira que deux énoncésAetBtraitant des entiers sont équivalents s’ils sont équivalents dans les entiers. FormulesD,SetP.Les formulesDsont définies par récurrence : – les formules atomiques sontD; – siAetBsontDalors¬A,A∧B,A∨BsontD; – siAestDet sitest un terme ne contenant pasxalors∀x(x<t→A) (que l’on notera ∀x<tA) et∃x(x<t∧A) (que l’on notera∃x<tA) sontD. REMARQUE: Les quantificateurs∀x<tet∃x<tsont appelésquantificateurs bornés. Une formuleDest donc une formule dans laquelle tous les quantificateurs sont bornés. Les formulesSsont données par : – les formules atomiques et leurs négations sontS; – siAetBsontSalorsA∧BetA∨BsontS; – siAestSet sitest un terme ne contenant pasxalors∀x<tAestS; – siAestSalors∃xAestS. Une formulePest la négation d’une formuleS. REMARQUE: L’ensemble des formulesDest inclus dans l’ensemble des formulesS. L’inclu-sion est bien entendu stricte, mais il y a tout de même une « réciproque » au sens du lemme suivant.
Chapitre 1
Théorèmes de Gödel
5
6
ThéorèmesdeGödel
Lemme 1.1.1SiAestSalors il existe une formuleA0qui estDet telle queAest équivalente à∃xA0. Ce lemme très utile, sera souvent utilisé sans référence dans la suite. Preuve :On choisit une variablexqui n’apparait pas dansA(ni libre, ni liée) et on remplace chaque quantificateur non borné∃ydeApar∃y<x. On obtient ainsi une formuleA0qui estDet on voit facilement queAest équivalente à∃x A0. Notations diverses.SoitAune formule. On écriraA[x1 xk] (ouA[x~]) pour dire quex1, . . .,xksont des variables libres deAet dans ce cas on écriraA[t1 tk] (ouA[t~]) pour désigner la formuleAdans laquelle chaque variablexiest remplacée par le termeti,i.e., A[t~]=A[t1x1 tkxk]. A ce propos on rappelle que la notationA[t1x1 tnxn] dé-signe la substitutionsans capture de variable. On se reportera au premier chapitre du Kri-vine [3] pour une définition rigoureuse d’ycelle. Soitaun entier, on noteale terme définie par récurrence par : – sia=0 alorsaest 0 ; – sia=b+1 alorsaestS b. Soittun terme clos. On note|t|lavaleurdetdéfinie par récurrence par : – sitest 0 alors|t|=0 ; – sitestS ualors|t|=|u|+1 ; – sitestu+valors|t|=|u|+|v|; sitestuvalors|t|=|u||v|. – On voit donc que|a|=apour tout entiera.
1.2 Fonctions (primitive) récursives Notations.Soientx1 . .,, .xkdes objets. Lorsque le contexte est clair on écrirax~en lieu et place dex1 xk; par exemple lel-uplet (a1 al) s’écrira simplement (a~). On utilisera les lettresa,b,c,k,l,n,mpour désigner des entiers,t,u,vpour les termes,x,y,zpour les variables,F,G,Hpour les fonctions,P,Q,Rpour les prédicats. Sieest une expression entière dépendant (ou pas) des variablesx1 . .,, .xk(par exemple e=x1+x2) on noteraλx~ela fonction qui à toutk-uplet d’entiers (~a) associee(a~). En parti-culier sinest un entier,λxnreprésente la fonction constante de valeurn. Prédicats.On appelleprédicatd’aritéktoute relationk-aire entre entiers où équivalemment, tout sous-ensemble deNk. SiPest un prédicatk-aire on notera indifféremment (~a)∈Pou P(a~). Lafonction caractéristiquedePestχP:Nk→Ndéfinie parχP(a~)=0 siP(~a) (i.e., sia~∈P), χP(~a)=prend ici une convention qui semble peu naturelle1 sinon. Remarquons que l’on à savoir que 0 représente la valeur vraie et 1 la valeur faux ; ce choix s’explique pour des raisons techniques que l’on verra apparaître un peu plus bas. Fonctions partielles.Une fonctionpartielle F(d’ariték) deNk→Nest donnée par une partie domFdeNkappelée ledomainedeFet une fonction de domF→N. Si domF=Nkon dit queFesttotale. On noteraF(~a)↓(resp.F(~a)↑) pour (a~)∈domF(resp. (a~)6∈domF). ~ SiFest partielle d’aritéketGest partielle d’aritél,F(a~)=G(b) signifie que soitF(a~)↑et ~ ~ ~ G(b)↑, soitF(~a)↓etG(b)↓etF(~a)=G(b). FONCTIONS RÉCURSIVES Une fonction partielle d’aritékdeNk→Nestrécursivesi on peut la définir en appliquant un nombre fini de fois les schémas suivant :
1.2.Fonctions(primitive)récursives
7
R1les projectionsPki: (~a)→aisont récursives totales (d’ariték) ; l’addition, la multiplication et la fonction caractéristiqueχ<sont récursives totales (d’arité 2) ; R2 (schéma de composition)SiHest récursive (d’aritén) etG1 . .,, .Gnsont récursives (d’ariték) alors lacomposée F: F(~a)→H(G1(a~) Gn(a~)) est récursive. Son domaine est défini par ; F(~a)↓ssiGi(~a)↓pouri=1, . . .,netH(G1(~a) Gn(~a))↓ R3 (schéma de minimisation)SiGest récursive d’ariték+1 alors la fonctionF: F(~a)=x(G(xa)=0) ~ dont la valeur (si elle est définie) est le plus petitxtel queG(xa)=0 et le domaine est ~ donné par : F(~a)↓(G(a ~a)↓etG(a ~a)=0 ssi∀b<aG(ba~)↓etG(ba~)>0 REMARQUE: Le schéma de minimisation est le seul qui peut produire des fonctions non to-tales. Par exemple la fonctionF(a)=x(χ<(x0)=0) (F(a) est le premier entier strictement plus petit que 0) est nulle part définie ce qui ne l’empêche pas d’être récursive. Prédicats récursifs, récursivement énumérables.Un prédicat est récursif si sa fonction caracté-ristique est récursive totale. Un prédicatPestrécursivement énumérables’il est le domaine d’une fonction récursive, c’est à dire s’il existeFrécursive telle queP(a~) ssiF(a~)↓pour tout k-uplet (~a). On utilise communément l’abbréviationr.e.pour « récursivement énumérable ». REMARQUE: Un prédicat récursif est récursivement énumérable : soitFdéfinie parF(a)= x(a=0). AlorsFest récursive (pourquoi ?) et on aF(a)↓ssia=0. Par conséquentF(χP(a~))↓ ssiP(a~). CommeχPest récursiveF◦χPl’est par schéma de composition et doncPest récur-sivement énumérable. DÉFINISSABILITÉ DES FONCTIONS RÉCURSIVES Théorème 1.2.1 (Définissabilité)(i)Si F est une fonction récursive d’arité k alors il existe une formule A[~xy]qui estSet quidéfinitF, c’est à dire que : F(a~)=b ssi A[~ab] (ii)Si P est un prédicat r.e. d’arité k alors il existe une formule A[x~]qui estSet quidéfinitP, c’est à dire que : P(~a)ssi A[~a] Preuve :La deuxième partie du théorème se déduit de la première : siPest r.e. alors il y a une fonction récursiveFtelle queP(~a) ssiF(~a)↓, c’est à dire ssi∃y y=F(a~). D’après(i)il y a une formuleA[x~y] qui définitFet qui estS; mais alorsB=∃yA[x~y] définitPet comme AestS,Bl’est aussi. La première partie se démontre par récurrence sur la construction deF. SiFest la projec-tionPkialorsFest définie pary=xi; l’addition est définie pary=x1+x2et la multiplication pary=x1x2. Enfinχ<se définit par (x1<x2∧y=0)∨(x16<x2∧y=S0) (x16<x2est une abbréviation pour¬(x1<x2pour l’instant toutes ces formules sont)). Remarquons que D. ~ SiF(a~)=H(G(a~)) où lesGietHsont récursives alors par hypothèse de récurrence il y a des formulesBi[~xyi] pouri=1 netC[y~y] qui sontSet qui définissent respectivement lesGietH. On pose A=∃y1 ∃ynB1[x~y1]∧ ∧Bn[~xyn]∧C[~yy]
8
ThéorèmesdeGödel
ClairementAestSet définitF. Enfin siF(~a)=x(G(xa~)=0) oùGest récursive alors par hypothèse de récurrence il y a une formuleB[x ~xy] qui estSet qui définitG. On pose A=∀y′<y∃z B[y′x~S z]∧B[y ~x0] (Question : pourquoi n’a-t-on pas définiA=∀y′<y¬B[y′ ~x0]∧B[yx~0] ?) FONCTIONS PRIMITIVES RÉCURSIVES Il est bien clair que parmi les fonctions récursives on est plus intéressé par celles qui sont totales : du point de vue informatique la totalité correspond à la notion decorrection de programme, c’est à dire que lorsqu’on écritF(a~)↑cela correspond à un programme qui « bugge » sur l’entrée~a(typiquement en entrant dans une boucle infinie). Toutefois l’ensemble des fonctions récursives totales n’a pas de bonnes propriétés, par exemple bien qu’il soit visiblement dénombrable, il n’est pas récursivement énumérable.1 C’est pourquoi on est amené à introduire des classes de fonctions récursives totales bénifi-ciant de meilleures propriétés. On verra plus tard dans le cours les fonctions représentables par des lambda-termes typés mais tout de suite on va introduire lesfonctions primitives ré-cursives. Une fonction deNk→Nrécursive (p.r.) si on peut l’obtenir en appliquantest primitive un nombre fini de fois les schémas suivant : PR1Les projectionsPik, l’addition, la multiplication, la fonction caractéristique de<et les fonctions constantesλ~xn ;sont primitives récursives PR2 (schéma de composition)idem que pour les fonctions récursives ; PR3 (schéma de récurrence)siGest primitive récursive d’aritéketHest primitive récur-sive d’ariték+2 alorsFdéfinie par : a~)=(H(F(a−1a~)aa~) sia>0 F(aG(a~) sia=0 est primitive récursive d’ariték+1. Prédicat récursif primitif.Un prédicat est primitif récursif si sa fonction caractéristique l’est. Théorème 1.2.2F est récursive (totale). Si P est unSi F est une fonction primitive récursive alors prédicat primitif récursif alors P est récursif. Preuve :La démonstration qui suit est initialement due à Gödel ; c’est une variante de celles que l’on trouvera dans le Shoenfield [4] et/ou le Cori-Lascar [1]. Remarquons tout d’abord que la partie traitant des prédicats est conséquence immédiate de celle sur les fonctions. On va montrer que chacun des schémasPR1,PR2etPR3peut se « programmer » à l’aide des schémasR1,R2etR3. PourPR1il faut juste voir que les fonctions constantes sont pro-grammables. La fonctionC0=λx~0 est donnée parC0(a~)=x(P)1k+1(xa~)= la fonction0 ; C1=λ~x1 parC1(x~)=x(χ)<(0x)=0. Remarquons que c’est cette définition qui justifie le choix technique et peu naturel de prendre 0 pour valeur vraie des fonctions caractéris-tiques. La fonctionC2=λx~2 est donnée parC2(x~)=C1(x~)+C1(~x), et plus généralement on définitCn+1parCn+1(x~)=Cn(~x)+C1(x). ~ 1On le démontre pardiagonalisation: on verra un peu plus loin qu’un ensembleXest r.e. ssi il existe une fonction récursive totaleFquiénumère X, c’est à dire telle queXest l’image deF. SoitT1l’ensemble des fonctions récursive totales unaires etϕune fonction deN2dansNqui énumèreT1, c’est à dire telle que pour touteFdansT1il existe un eFtel queF(a)=ϕ(eFa) pour touta. On va voir queϕne peut être récursive. DéfinissonsGparG(a)=ϕ(aa)+1 ; alorsGne peut être récursive, sinon elle est dansest clairement totale et unaire mais elle T1et il y a uneGtel que G(a)=ϕ(eGa) pour toutadonc en particulier poura=eG,G(eG)=ϕ(eGeG) contredisant la définition deG. Donc ϕn’est pas récursive, sinonGle serait également.
1.2.Fonctions(primitive)récursives9 Le schémaPR2est le même que le schémaR2; reste donc à voir le schéma de récurrence primitivePR3et c’est là qu’il va falloir travailler un peu. On commence par dériver deR1, R2etR3des schémas supplémentaires pour programmer des fonctions récursives. SoitP(x ~xrécursif. Alors la fonction définie par) un prédicat F(a~)=x(P(x ~a)) est ré-cursive ; en effet commePest récursifχPest récursive (totale), et doncFest obtenue parR3 (ici aussi on se sert du choixχP(aa~)=0 ssiP(a~a)). Si de plus pour tout~ail y a unatel que P(aa~) alorsFest totale. La fonctionλxyx−yest récursive (totale) : on l’obtient para−b=x(x+b+1>a). SoientPetQdes prédicats récursifs alors ;¬P,P∨Q,P∧Qsont récursifs. En effet leurs fonctions caractéristiques s’obtiennent au moyen de celles dePetQpar les opérations arithmétiques+,et−qui sont tous récursifs totals. Remarquons que si on supposeP seulement r.e. alors¬Pn’est pas r.e. en général (pourquoi ?). SoitP(xx~) un prédicat récursif etF(x~) une fonction récursive totale ; alors la fonction G(~x) définie parG(a~)=x<F(~a)(P)(xa~) (le premierx<F(~a) tel queP(xa~) s’il en existe, F(~a) sinon), est récursive totale. En effetG(a~) est égal àx((x<F(~a)∧P(xa~))∨x=F(a~)). En particulier le prédicat∃x<F(~a)P(x ~a) est récursif puisqu’il est équivalent à (x<F(~a)(P(x ~a)))< F(a~). Par négation le prédicat∀x<F(a~)P(xa~) est également récursif. Lemme 1.2.3Il existe une fonctionβrécursive totale vérifiant : pour toutnet tousa0, . . .,an, il existectel que pouri=0 non aβ(ic)=ai. On ne va pas démontrer ce lemme ici et l’on renvoie le lecteur aux références sus-citées ; Lascar-Cori le dérive du lemme chinois et Shoenfield le prouve in extenso au moyen de simples récurrences. On note (c)i=β(ic). Muni du lemme on va pouvoir démontrer que le schéma de récur-rence primitivePR3est récursif. ¯ SoitG(~x) etH(xy ~x) des fonctions récursives totales. On définitF(xx~) par : ¯(x a(x)y+1=H((x)yy+1a~)) F(aa)=x( )0=G(~a)∧ ∀y< ~ ¯ La fonctionFest clairement récursive et on peut facilement se convaincre par récurrence sur ¯ nqu’elle est totale. Soit maintenantFdonnée parF(aa~)=(F(a ~a))a; alorsFest également récursive totale et on peut vérifier par récurrence suraque l’on aF(0a~)=G(a~) etF(a+ 1a~)=H(F(a ~a)a ~a) pour touta, soit queFest définie par récurrence primitive à partir de GetH. PROGRAMMATION DE FONCTIONS PRIMITIVES RÉCURSIVES. On va maintenant se donner un certain nombre d’autres schémas pour définir des fonc-tions et prédicats p.r. Itération.SiGest p.r. d’ariték+1 alors la fonctionFdéfinie par : F(aba~)=Ga(ba) ~ est p.r. d’ariték+une reformulation du schéma de récursion primitive. Clai-2. En fait c’est rementFest donnée parF(0ba~)=betF(a+1b ~a)=G(F(aba~) ~a). Soustraction.On définita−1 par : 0−1=0 et (a+1)−1=a. On définita−bpara−0=a eta−(b+1)=(a−b)−1. La fonction binaire−est clairement p.r. Variante de la récursion primitive.SoientG0une fonction p.r. d’ariték,Hp.r. d’ariték+2 et G1,. . .,Gkdes fonctions p.r. d’ariték+1 . Alors la fonctionFdéfinie par F(0a)=G0(a~) ~ ~ F(a+1a)=H(F(aG(a ~a))aa~) ~
10
ThéorèmesdeGödel
est p.r. Remarquons qu’il s’agit presque du schéma de récurrence p.r. On va le montrer pour k=1, le cas général s’en déduit immédiatement en utilisant des séquences. Supposons donc queFest définie par F(0b)=G0(b) F(a+1b)=H(F(aG1(ab))ab) On se donneg: g(0ba)=b g(i+1ba)=G1(a−(i+1)g(iba))
eth:
h(0ba)=G0(g(aba)) h(i+1ba)=H(h(iba)ig(a−(i+1)ba)) Il est clair quegethsont toutes les deux p.r. On va montrer que pour toutb: F(ab)=h(aba) (1.1) Commehest p.r. on en déduira queFl’est. On vérifie aisément par récurrence surique pour touta≥ion a g(i+1ba+1)=g(iG1(ab)a) (1.2) puis que h(iba+1)=h(iG1(ab)a) (1.3) On montre (1.1) par récurrence sura. Poura=0 on ah(0b0)=G0(g(0b0))=G0(b)= F(0b). Supposons queF(ab)=h(aba). Alors h(a+1ba+1)=H(h(aba+1)ag(0ba+ définition de1)) parh =H(h(aba+1)ab définition de) parg =H(h(aG1(ab)a)ab) par l’équation (1.3) =H(F(aG1(ab))ab) par hypothèse de récurrence =F(a+1b définition de) parF
Opérations booléennes.SiPetQsont p.r. d’aritékalors¬P,P∨Q,P∧Qsont p.r. :χ¬P(a~)= 1−χP(a~),χP∨Q(~a)=χP(a~)χQ(~a),χP∧Q(a~)=1−(1−χP(~a))(1−χQ(~a)). Définitions par cas.SiPest un prédicat p.r. d’ariték,GetHsont p.r. d’aritékalorsFdéfinie par : F(a~)=(GH((~aa~ns)iis)Pon(~a) est p.r. : on l’obtient parF(~a)=(1−χP(a~))G(~a)+χP(~a)H(~a). Plus généralement siP1 . .,, .Pn sont p.r. etG1, . . .,Gn+1sont p.r. alors G1(~a) siP1(~a) F(a~)=n.(~a) si¬(P1(~a)∨ ∨Pn−1(a~))∧P Gn(a~) Gn+1(a~) sinon