• Aucun résultat trouvé

2.2 Quelques résultats fondamentaux

3.1.2 Transitivité

On commence par s’intéresser au théorème exprimant la transitivité de la relation binaire induite par le prédicat⊑ dans un modèle générique. Donnons

déjà un réalisateur de cette formule. Théorème 3.1.11.

La formulexyz(xy, yzxz) est réalisé par la quasi-preuve suivante :

(Y)λrλuλvλw(u)λx(v)λy(w)(r)xy.

On donne deux démonstrations de ce résultat : la première présentée en séquents, qui souligne l’aspect logique du résultat en donnant la preuve dont est issu ce terme, et la seconde dans le formalisme de la réalisabilité, qui a le mérite d’être plus concise.

Première démonstration. On commence par considérer les deux règles de rem-

placement (Cf la section2.2) suivantes :

Γt:x(∀y(xysy6=y)→sx6=x) Γt: xy

Γt: xy

Γt:x(∀y(xysy6=y)→sx6=x)

Soit alors F(a) la formule suivante :

48 Les entiers comme classes d’équivalences Considérant le théorème2.2.18, il suffit de démontrer que le terme

λrλuλvλw(u)λx(v)λy(w)(r)xyréalise les formules ∀a(F(a) → F(sa)) et

⊤ → F(0).

Montrons déjà le premier point. On prend les notations suivantes : – R pour le contexte r : F(a), – X pour le contexte x : ab′, – Y pour le contexte y : bc, – W pour le contexte w :¯c(a¯cs ¯c 6=c), – V pour le contexte v : bc, – U pour le contexte u : sab.

On considère la dérivation suivante, qui est « découpée en morceaux » pour des raisons évidentes de mise en page.

Rr : ab, b′ ⊑c′ →acXx : abR, X ⊢ (r)x : b′ ⊑c′ →acYy: b′ ⊑cR, X, Y ⊢ (r)xy: ac′ ... R, X, Y ⊢ (r)xy: acWw : ∀¯c(a¯cs ¯c 6=c) Ww : ac′ →sc′ 6= c R, X, Y, W ⊢ (w)(r)xy: sc′ 6=c R, X, Wλy(w)(r)xy: b′⊑c′ →sc′ 6= c R, X, Wλy(w)(r)xy: ∀c′(b′ ⊑c′ →sc′ 6=c)

Considérant par ailleurs la dérivation suivante

Vv: bc

R Vv: ∀b′(∀c′(b′ ⊑c′ →sc′ 6= c) → sb′ 6= b)

Vv: ∀c′(b′ ⊑c′ →sc′ 6=c) → sb′ 6=b

On en déduit que le séquent R, X, W, V ⊢ (v)λy(w)(r)xy: sb′ 6=b est dérivable. On peut alors conclure comme suit :

3.1 Une relation de préordre 49 ... R, X, W, V⊢ (v)λy(w)(r)xy: sb′6=b R, W, Vλx(v)λy(w)(r)xy: ab′→sb′6=b R, W, Vλx(v)λy(w)(r)xy:∀b′(ab′→ sb′6=b) R, W, Vλx(v)λy(w)(r)xy:∀b′(ab′→ sb′6=b) Usab Uu:∀b′(ab′→sb′ 6=b)→ sa6=sa R, W, V, U ⊢ (u)λx(v)λy(w)(r)xy: sa6=sa R, V, Uλw(u)λx(v)λy(w)(r)xy: ∀c′(ac′ →sc′ 6=c) → sa6=sa R R, V, Uλw(u)λx(v)λy(w)(r)xy: ∀a′(∀c′(a′ ⊑c′ →sc′ 6=c) → sa′ 6=sa) R R, V, Uλw(u)λx(v)λy(w)(r)xy: sac R, Uλvλw(u)λx(v)λy(w)(r)xy: bcsac Rλuλvλw(u)λx(v)λy(w)(r)xy: sab, bcsac Rλuλvλw(u)λx(v)λy(w)(r)xy: ∀c(sab, bcsac) Rλuλvλw(u)λx(v)λy(w)(r)xy: F(sa) ⊢ λrλuλvλw(u)λx(v)λy(w)(r)xy: F(a) → F(sa) ⊢ λrλuλvλw(u)λx(v)λy(w)(r)xy: ∀a(F(a) → F(sa))

Pour le second point, on prend les notations suivantes : – R pour le contexte r : ⊤,

– W pour le contexte w :¯c(a′ ⊑ ¯cs ¯c 6=c), – V pour le contexte v : bc,

– U pour le contexte u : 0b.

La dérivation suivante donne alors le résultat.

R, W, V, U ⊢ (u)λx(v)λy(w)(r)xy: ⊤ R R, W, V, U ⊢ (u)λx(v)λy(w)(r)xy: sa′ 6=0 R, V, Uλw(u)λx(v)λy(w)(r)xy: ∀c′(a′ ⊑c′ →sc′ 6= c) →sa′ 6= 0 R R, V, Uλw(u)λx(v)λy(w)(r)xy: ∀a′(∀c′(a′ ⊑c′ → sc′ 6=c) → sa′ 6=0) R R, V, Uλw(u)λx(v)λy(w)(r)xy: 0⊑c R, Uλvλw(u)λx(v)λy(w)(r)xy: bc →0⊑c Rλuλvλw(u)λx(v)λy(w)(r)xy: 0⊑b, bc →0⊑c Rλuλvλw(u)λx(v)λy(w)(r)xy: F(0) ⊢ λrλuλvλw(u)λx(v)λy(w)(r)xy:⊤ → F(0)

Deuxième démonstration. On note θ le terme considéré. On va prouver par ré-

currence sur m que quels que soient les entiers n et p ainsi que la pile π dans

||mn, npmp||, le processus θπ est dans ⊥⊥.

Si m=0, le résultat est trivial car||mn, npmp|| = ⊤.

Sinon, π est de la forme u·v·w·ρavec u mn, v np et

wy(m−1 ⊑ ysy 6= p). Le processus considéré se réduit alors en uλx(v)λy(w)(θ)xy·ρ. Puisque uy(m−1⊑ysy 6= n) → ⊥, il suffit de

50 Les entiers comme classes d’équivalences sinon, on considère un terme uréalisant m1n1, et on est ramené à mon-

trer λx(v)λy(w)(θ)xyu′·ρ′ ∈ ⊥⊥, pour toute pile ρ′. Or ce processus se réduit

en vλy(w)(θ)uy·ρ, et puisque v réalisey(n−1⊑ysy 6= p) → ⊥, il nous

suffit de démontrer que λy(w)(θ)uy réalise ∀y(n−1 ⊑ ysy 6= p). On peut encore supposer p6=0, et on s’est ramené à démontrer que si v n1 p1

et ρ′′ Π, alors λy(w)(θ)uyv·ρ′′ ∈ ⊥. Mais ce processus se réduit en w⋆(θ)uv′·ρ′′, et comme w m−1 ⊑→ p−1 → ⊥, il suffit de prouver que (θ)uvréalise m−1⊑ p−1, ce qui est vrai par hypothèse de récurrence.

Soit θ la quasi-preuve donnée dans le théorème précédent. On considère trois termes u, v, w quelconques, une pile π et l’on observe la suite des réductions de θu·v·w·π. Il se réduit en (u) ⋆λx(v)λy(w)((Y)θ)xy·π La suite dépend

évidemment du terme u, mais si l’on suppose que celui-ci finit au bout d’un certain nombre d’étapes de réduction par « rendre la main », c’est-à-dire par mettre son argument en tête et par lui donner un terme u, on obtient :

θu·v·w·π ≻ (v) ⋆λy(w)((Y)θ)uy·π

Encore une fois, si l’on suppose que v (resp. w) finit lui aussi par mettre son argument en tête et lui donner un terme v(resp. w), on obtient la suite de

réductions suivantes :

θu·v·w·π ≻ (u) ⋆λx(v)λy(w)((Y)θ)xy·π ≻ (v) ⋆λy(w)((Y)θ)uy·π

w⋆((Y)θ)uv′·πθu′·v′·w′·π

Une première interprétation : On remarque que l’utilisation du combinateur de point fixe Y permet d’écrire un terme dont l’exécution est récursive. L’emploi de Y pour la construction d’un terme correspond donc à celui d’une « boucle while » dans l’écriture d’un programme. Alors que la réalisation de formules restreintes aux entiers correspond à la programmation itérative (utilisant des « boucles for »), la réalisation de formules dans le modèle quotienté (qui est un modèle élémentairement équivalent au premier modèle de l’arithmétique de Peano) correspond elle au paradigme de la programmation récursive. Il y a donc une correspondance entre paradigmes de raisonnement et paradigmes de programmation.

3.1 Une relation de préordre 51 On peut se demander pourquoi cette stratégie permet de prouver le théo- rème. Le mécanisme qu’effectue un réalisateur de ce théorème doit permettre, étant donné trois suites de négations de longueur paire dont l’une au moins mène au type⊤ → ⊥, d’extraire un terme réalisant ⊤ → ⊥.

En effet dire que θ réalise le théorème considéré implique que, quels que soient les entiers n, m, p non nuls, θ réalise la formule :

¬2Min(n,m)M(n, m), ¬2Min(m,p)M(m, p), ¬2Min(n,p)−1M(n, p) → ⊥,

où M(a, b)dénote la formule⊤si a6b, et la formule⊤ → ⊥si a>b. Le terme

que nous avons trouvé va intuitivement remonter ces trois suites de négation l’une après l’autre, en retirant deux négations à chaque fois, et en suivant l’ordre dans lequel elles lui sont données. Il ne réussira donc à aboutir au type⊤ → ⊥

que si celui-ci se trouve dans la première des trois dont la taille est minimale. En effet, si θ met en tête au cours de son exécution (dans un contexte donné) un terme ne réalisant a priori que ⊤ (c’est-à-dire un terme quelconque), alors rien ne dit que celui-ci finira par mettre son argument en tête, c’est-à-dire par rendre la main à θ. Au contraire, un terme réalisant une formule de la forme

(F → ⊥) → ⊥ finira toujours par mettre son argument en tête en lui donnant à son tour un argument. Et le fait que le type ⊤ → ⊥ se trouve au bout de la suite de négation la plus courte des trois se prouve via le résultat élémentaire d’arithmétique suivant :

ijk[Min(i, j) <Min(i, k) → i> j]

Celui-ci permet d’assurer que :

1. si la première suite de négation est de longueur plus courte que la troi- sième, alors elle pointe sur⊤ → ⊥.

2. si la seconde suite de négation est de longueur strictement plus petite que la première, alors elle pointe sur⊤ → ⊥.

3. si la troisième suite de négation est de longueur strictement plus courte que la première et la seconde, alors elle pointe sur⊤ → ⊥.

Donc dans tous les cas la première suite de négation à être de taille minimale pointe sur le type⊤ → ⊥.

Spécification du théorème de transitivité

Commençons par énoncer la spécification de la formule (⊤ → ⊥) → ⊥. Théorème 3.1.12.

Soit u réalisant la formule(⊤ → ⊥) → ⊥. Alors quel que soient le terme t et la pile

π, on a

ut·πtρ,

52 Les entiers comme classes d’équivalences La formule (⊤ → ⊥) → ⊥ spécifie donc les termes qui « utilisent leur argument », au sens où ils finissent par le faire apparaître en tête d’une pile non vide. On démontre aisément que la réciproque est vraie.

Démonstration du théorème3.1.12. Soit⊥⊥ =<ut·π >. Considérant que u réa-

lise(⊤ → ⊥) → ⊥ et que ut·π ∈ ⊥/ ⊥, on en déduit t 1 ⊤ → ⊥. C’est-à-dire

qu’il existe ρ∈ ||⊤ → ⊥||tel que tρ ∈ ⊥/ ⊥; autrement dit le processus ut·π

se réduit en tρ. Il reste à voir que||⊤ → ⊥||est égal à{v·π; v ∈ Λc, π′ ∈ Π}

pour conclure.

Pour énoncer clairement la spécification des formules de la forme nn+p, on se donne une suite d’instructions (γi1)i, possédant les règles d’exécutions suivantes :

γ1i+1t·πtγ1

i ·π En particulier l’instruction γ1

0 ne possède pas de règle d’exécution, et si une

instruction γ1

i+1arrive en tête d’une pile vide, l’exécution s’arrête.

Bien évidemment, il n’est pas nécessaire de considérer ces nouvelles instru- ctions, puisque leur comportement peut être obtenu avec des λ-termes usuels. Cette manière de procéder permet cependant d’exprimer de manière plus claire les spécifications à venir. Par ailleurs, il est important de noter que l’on ne de- mande pas aux ensembles⊥⊥considérés d’être saturés pour leur règle d’exécu-

tion : ces instructions ne possèdent aucun contenu axiomatique, et ne servent en aucun cas à écrire des quasi-preuves. Le lemme2.2.2assure néanmoins que le complémentaire d’un fil est saturé pour chaque instruction γ1

i.

Lemme 3.1.13.

Soit p un processus, et ⊥⊥ =< p >. Alors γ1

n réalise la formule ¬2n, quel que soit

l’entier n.

Démonstration. On prouve le résultat par induction sur n.

Si n=0, il n’y a rien à démontrer.

Si n > 0, on prend t ∈ |¬2(n−1)⊤ → ⊥|, π ∈ Π, et l’on doit montrer que le processus γ1nt·π est dans ⊥⊥. Celui-ci réduit en tγ1

n−1·π, et puisque le

lemme 2.2.2assure que ⊥⊥ =< p > est saturé pour l’instruction γ1

n, il suffit de démontrer que ce dernier processus est dans ⊥⊥. On déduit alors le résultat de l’hypothèse d’induction.

Réciproquement, un terme réalisant la formule ¬2n⊤ a un comportement analogue à celui de l’instruction γ1n. Montrons déjà le lemme suivant, qui sera souvent utilisé dans la suite.

Lemme 3.1.14.

Soit p un processus, et⊥⊥ =< p >. Si γ1

3.1 Une relation de préordre 53

Démonstration. Nous allons prouver la formule contraposée par récurrence sur

n. Si n = 0 il n’y a rien à démontrer. Sinon, on considère un terme t réalisant

¬2net une pile π. On doit montrer que le processus γ1

nt·π est dans ⊥⊥. Celui-ci se réduit en tγ1

n−1·π, et considérant le lemme 2.2.2, il suffit de dé-

montrer que ce dernier processus est dans ⊥⊥. Mais l’hypothèse de récurrence assure que γ1

n−1 ¬2(n−1)⊤ → ⊥, ce qui termine la démonstration.

Théorème 3.1.15.

Soit n>0 et θ réalisant nn+p pour tout⊥⊥. Alors pour k6n1, l’exécution du

processus θγ1

k·π se termine sur un processus de la forme γ10⋆t·ρ, quelle que soit

la pile π.

Un tel résultat est évidemment inutile du point de vue de la programmation, puisque rien ne garantit que l’exécution s’arrête dans le cas où k>n−1.

Démonstration. Soit ⊥⊥ =< θγ1

n−1 · π >. Puisque θ réalise la formule

(n−1⊑n+p−1→ ⊥) → ⊥ et que θγ1

n−1·π ∈ ⊥/ ⊥, on en déduit que γ1n−1

ne réalise pas n−1 ⊑ n+p−1 → ⊥ pour ce ⊥⊥. Le lemme 3.1.14 assure alors

γ10 1 ⊤ → ⊥, c’est-à-dire qu’il existe une pile ρ et un terme t tels que γ1 0⋆t·ρ

apparaisse dans le fil considéré, ce qui termine la démonstration. On raisonne- rait de même avec k<n−1.

Remarque : La suite d’instructions γ permet d’énoncer la spécification des for- mules de la forme ¬2n⊤. On peut la voir comme étant un programme écrit spécialement pour vérifier le comportement d’un autre programme θ. En effet, γ1n se contente de donner à θ ce qu’il lui faut pour poursuivre son exécution lorsqu’elle est appelée en tête ; en modifiant la valeur de l’entier n on peut in- terrompre l’exécution du processus à tout moment, et vérifier ainsi que tout se déroule comme prévu.

Afin d’énoncer la spécification de la formule exprimant la transitivité de la relation ⊑, on se donne trois suites d’instructions (γij)i pour 1 6 j 6 3,

possédant des règles d’exécution identiques, à savoir : γij+1t·πtγj

i·π

On peut noter que le comportement de l’instruction γnj est celui partagé par tous les termes réalisant une formule de la forme¬2nF(la preuve est analogue à celle du théorème3.1.15). Il s’agit donc de la spécification des formules formant les hypothèses du théorème de transitivité. C’est-à-dire que pour expliciter le comportement des termes réalisant une formule de la forme A1, . . . , AnB, on lui donnera en argument des termes u1, . . . , un ayant respectivement les com- portements typiques de termes réalisant les formules A1, . . . , An; il s’agit intui- tivement des « arguments naturels » du terme considéré.

54 Les entiers comme classes d’équivalences Théorème 3.1.16.

Soit θ réalisantxyz(xy, yzxz)Alors pour toute pile π, l’exécution

de θγ1

n1 ·γ2nγ3nπ se termine sur un processus de la forme :

– γ10t·ρ si n1 6n2et n16n3,

– γ20t·ρ si n2 <n1 et n26n3,

– γ30t·ρ si n3 <n1 et n3 <n2.

Interprétation : On peut considérer que chaque instruction γnj code l’entier

n. Cette spécification est alors celle des termes qui, étant donné trois entiers, calculent le premier des trois à être minimal parmi eux.

Démonstration. Soit⊥⊥ =< θγ1

n1 ·γ

2

n2 ·γ3nπ >, pour une pile π quelconque.

1. Si n1 6 n2 et n1 6 n3. On considère que θ réalise la formule n1+1⊑n1, n1 ⊑n1 →n1+1⊑n1. Du lemme 3.1.13 on déduit que γ2n2

réalise n1 ⊑n1 et γ3n3 ¬2n1⊤. Il en résulte γn11 1 (n1+1) ⊑ n1, puisque

le processus considéré n’est pas dans ⊥⊥. Le lemme 3.1.14 donne alors γ10 1 ⊤ → ⊥, c’est-à-dire qu’il existe un terme t et une pile ρ tels que γ10t· ·ρ apparaisse dans le fil considéré, ce qui termine la démonstra-

tion.

2. Si n2 < n1 et n2 6 n3. On raisonne de la même manière, en considérant

que θ n2+1⊑n2+2, n2+2⊑n2 →n2+1⊑n2.

3. Si n3 < n1 et n3 < n1. On considère dans ce cas que θ réalise

n3+1⊑n3+1, n3+1⊑n3+1→n3+1⊑n3+1.

Remarque : Lorsqu’on observe l’exécution du processus θγ1

nγ2nγ3nπ,

on observe qu’apparaissent en tête et dans cet ordre les instructions suivantes : γ1n1, γn22, γ3n3, γ1n11, γ2n21, γn331... Ceci n’est pas vrai en général : toutes ces instructions apparaissent bien en tête de pile, mais l’ordre peut être différent. Dans le cas où l’on restreint les instructions disponibles à la seule instruction cc, on peut néanmoins démontrer ce résultat, ce qui permet d’interpréter cette spécification comme étant celle de l’ordonnanceur le plus simple qui soit : le

tourniquet.

Pour n > 2, on peut à l’aide d’une preuve identique à celle du théorème

3.1.11obtenir une quasi-preuve réalisant la formule

x1. . .∀xn+1(x1 ⊑x2, . . . , xnxn+1→ x1 ⊑xn+1).

On obtient alors une spécification analogue à la précédente. Théorème 3.1.17.

Soit p > 2. La formulex1. . .∀xp+1(x1 ⊑ x2, . . . , xpxp+1 → x1 ⊑ xp+1) est réalisé par la quasi-preuve

3.1 Une relation de préordre 55

Démonstration. Soit θ le terme considéré. Montrons par induction sur l’entier

n1 que le processus θπ est dans ⊥⊥ quels que soient n2, . . . , np+1 et π dans ||n1⊑n2, . . . , npnp+1 →n1 ⊑np+1||.

Si n1 =0, il n’existe aucune pile dans cet ensemble, ce qui prouve le résultat.

Sinon, considérons une telle pile π. Celle-ci est alors de la forme t1·. . .·tp·u·ρ avec ti nini+1 et uy(n1−1 ⊑ysy 6= np+1). Le processus considéré

se réduit alors en t1⋆λx1(t2)λx2. . .(tp)λxp(u)(θ)x1. . . xp·ρ. Comme n1 6= 0,

on a t1 ∀y(n1−1 ⊑ ysy 6= n2) → ⊥; il nous suffit donc de montrer λx1(t2)λx2. . .(tp)λxp(u)(θ)x1. . . xpy(n1−1 ⊑ysy 6= n2). Si n2 =0, on

à là le résultat. Sinon, on considère un terme t

1 réalisant n1−1 ⊑ n2−1, et il

nous faut montrer que le processus λx1(t2)λx2. . .(tp)λxp(u)(θ)x1. . . xpt′1·ρ

est dans⊥⊥. Mais il se réduit en t2⋆λx2(t3)λx2. . .(tp)λxp(u)(θ)t

1x2. . . xp·ρ, et l’on est ramené à la même discussion : si n3est nul il n’y a plus rien à démontrer,

et sinon on doit considérer un terme t

2réalisant n2−1 ⊑n3−1, et montrer que

le processus λx2(t3)λx3. . .(tp)λxp(u)(θ)t1x2. . . xpt2·ρ est dans ⊥⊥. Donc en itérant ce raisonnement, on prouve le résultat si l’un des ni est nul, et sinon on se ramène à montrer qu’un processus de la forme u⋆(θ)t1t2. . . tp·ρ est dans ⊥⊥, avec chacun des ti qui réalise ni−1⊑ni+1−1. Mais comme np+1 6=0, on en

déduit que u réalise n1−1 ⊑ np+1−1 → ⊥. Si n1−1 = 0 il n’y a plus rien à

démontrer, et sinon il suffit de prouver que si uréalise

y(n1−2 ⊑ ysy 6= np+1−1), alors le processus (θ)t′1t′2. . . tpu′·ρ est dans

⊥⊥, ce qui découle alors de l’hypothèse d’induction.

On se donne pour spécifier ce théorème une famille de suites d’instructions

(γij)i, pour j entre 1 et p+1.

Théorème 3.1.18.

Soit θ réalisantx1. . .∀xp+1(x1 ⊑ x2, . . . , xpxp+1 → x1 ⊑ xp+1). Alors pour

toute pile π, l’exécution de θγ1n

1 ·. . .·γ

p+1

np+1 ·π se termine sur un processus de la

forme γ0jt·ρ, où j est tel que nj est le premier des entiers n1, . . . , np+1à être minimal

parmi eux.

Interprétation : Cette spécification est celle des termes qui permettent de cal- culer le premier des entiers parmi p+1>3 à être le plus petit.

Démonstration. Soit π ∈ Π et ⊥ =< θγ1n

1 ·. . .·γ

p+1

np+1 ·π >. On appelle ni le

premier parmi les entiers n1, . . . , np+1 à être minimal parmi eux ; c’est-à-dire

que l’on a ni <nk si k <i, et ni 6nk sinon. On considère alors que θ réalise la formule F1, . . . , Fpni+1⊑ni, où Fk =      ni+1⊑ni+1 si k <i ni+1⊑ni si k =i nini si k >i

56 Les entiers comme classes d’équivalences Mais si k < i on a γk nk ¬ 2(ni+1)⊤, et donc γk nk ni+1 ⊑ ni+1. De même, si k > i on a γk nk ¬ 2ni, et donc γk nk nini. Enfin, on a γ p+1 np+1 ¬2ni⊤, et donc γnp+p+11 ∀y(ni+1⊑ysy 6=ni).

Puisque le processus considéré n’est pas dans⊥⊥, on en déduit que γi

ni ne réalise

pas ni+1 ⊑ ni. Le lemme 3.1.14 assure alors γi0 1 ⊤ → ⊥, c’est-à-dire qu’il existe un terme t et une pile ρ tels que γi

0⋆t·ρapparaisse dans le fil considéré,

ce qui termine la démonstration.