Chapitre 3 Normalisation forte du λσ w-calcul
Nous avons introduit au chapitre précédent une extension du
λ-calcul aux substitutions explicites: le
λx-calcul [BR95]. Cette extension, bien qu'elle possède
les propriétés de confluence et de normalisation forte, n'est pas
satisfaisante en tant que modèle des langages de programmation
fonctionnels. En effet, les substitutions du λx-calcul sont
beaucoup trop simples pour être utilisées dans une implantation
raisonnable du λ-calcul puisque pour chaque couple (x/t),
il est nécessaire de parcourir une fois en entier l'arbre du terme
dans lequel nous désirons effectuer la substitution. Ainsi, la
séquence suivante de réductions est "minimale" en λx-calcul:
( x y) [ x/z ] [ y/t ] | →λx | ( x [ x/z ] y [ x/z ] ) [ y/t ] |
| →λx | ( z y [ x/z ] ) [ y/t ] |
| →λx | ( z y) [ y/t ] |
| →λx | z [ y/t ] y [ y/t ] |
| →λx | z [ y/t ] t |
| →λx | z t |
Nous présentons dans ce chapitre, la première extension du λ-calcul
aux substitutions explicites: le λσ-calcul [ACCL90]. Ce
système permet l'utilisation de substitutions correspondant à des
listes de couples de la forme (x/t).
Ainsi la même substitution pourra s'effectuer comme suit en
λσ-calcul:
( x y) [ x/z ] [ y/t ] | →λσ | ( x y) [ ( x/z ).( y/t ).id ] |
| →λσ | x [ ( x/z ).( y/t ).id ] y [ ( x/z ).( y/t ).id ] |
| →λσ | z y [ ( x/z ).( y/t ).id ] |
| →λσ | z y [ ( y/t ).id ] |
| →λσ | z t |
Cependant, le λσ-calcul ne possède pas, y compris dans sa version
typée que nous proposerons, la propriété de normalisation
forte [Mel95].
Nous présenterons une version affaiblie de ce calcul: le
λσ w-calcul [CHL96] nommé. Nous montrerons alors
que ce calcul est fortement normalisant sur l'ensemble de ses
expressions bien typées. Notre technique de démonstration est une
adaptation d'une preuve due à Ritter [Rit94] pour le calcul
avec indice de de Bruijn. L'originalité de la technique étant de
remplacer le calcul λσ w par un autre calcul λσ w/≡ dans lequel
nous identifierons certains termes grâce à une relation de congruence.
Nous montrerons tout d'abord la terminaison des expressions bien
typées du λσ w/≡-calcul grâce à une extension de la technique
classique de réductibilité au cas de la gestion explicite de la
substitution. Informellement, nous définirons dans un premier temps
les expressions dites réductibles. Nous montrerons ensuite que
les expressions réductibles terminent. Puis, nous montrerons comment,
à partir d'une expression bien typée e, il est possible d'obtenir
une expression réductible e' contenant e. Il nous suffira de
remarquer que, puisque e ' termine, il en est de même pour e.
Nous pourrons enfin conclure que toute expression bien typée du
λσ w/≡-calcul termine. Nous en déduirons la terminaison du
λσ w-calcul par un lemme technique.
Le but pricipal de la présentation de cette preuve est de permettre au
lecteur de ce document de mieux comprendre la preuve de terminaison du
λ Pw-calcul proposée au chapitre 4.
3.1 Définition du formalisme λσ
Le λσ-calcul a été introduit par Abadi, Cardeli, Curien et
Lévy [ACCL90] en 1990. Sa grammaire divise en deux parties
mutuellement inductives l'ensemble de ses expressions: les termes et
les substitutions.
Nous utiliserons dans ce chapitre les types simples induits par la
grammaire de la définition 50. Ces types seront
généralement notés A,B, ….
Définition 1 (Expressions du λσ-calcul typé)
Les expressions (annotées) du
λσ-calcul sont données par les grammaires suivantes:
(Termes) M | ::= | x | (Variable) |
| ∣ | M M | (Application) |
| ∣ | λ x : A. M | (Abstraction) |
| ∣ | M [ s ] | (Clôture) |
|
(Substitutions) s | ::= | id | (Identité) |
| ∣ | ( x/M ).s | (Construction) |
| ∣ | s ∘ s | (Concaténation) |
Nous utiliserons pour désigner des expressions les notations
e,e1,… Les termes serons eux désignés par les lettres M,
N, … et les substitutions par les lettres s, t, u,
…
Informellement, dans l'expression
( x y) [ ( x/z ).((( z'/z ).id) ∘ id) ] ,
les variables libres sont y et z alors que les variables x et
z' sont liées. La structure des substitutions pouvant être
arbitrairement complexe, nous avons besoin de définir l'ensemble
des variables liées par une substitution (dans l'exemple
précédent {x,z'}) afin de pouvoir définir l'ensemble des variables
libres d'une expression de la forme M [ s ] .
Notation 2
Il nous arrivera dans la suite afin d'alleger les notation d'omettre
les types dans les λσ-expressions quand leur présences ne sera
pas utile à la compréhension.
Définition 3 (Variables liées par une substitution) L'ensemble Var(s) des variables liées par une substitution
s est défini par induction sur s comme suit:
Var(id) | = | ∅ |
Var(( x/M ).s) | = | {x}∪Var(s) |
Var(s ∘ t) | = | Var(s)∪Var(t) |
Définition 4 (Variables libres d'une λσ-expression)
L'ensemble FV(e) des variables libres d'une λσ-expression e est
défini par induction structurelle sur l'expression e.
FV(x) | = | {x} |
FV( M N) | = | FV(M)∪ FV(N) |
FV(λ x. M) | = | FV(M)∖{x} |
FV( M [ s ] ) | = | ( FV(M)∖ Var(s))∪ FV(s) |
|
FV(id) | = | ∅ |
FV(( x/M ).s) | = | FV(M)∪ FV(s) |
FV(s ∘ t) | = | ( FV(s)∖Var(t))∪ FV(t) |
Définition 5 (Variables liées d'une λσ-expression)
L'ensemble BV(e) des variables liées d'une λσ-expression e est défini
par induction sur l'expression e.
BV(x) | = | ∅ |
BV( M N) | = | BV(M)∪ BV(N) |
BV(λ x. M) | = | BV(M)∪{x} |
BV( M [ s ] ) | = | BV(M)∪ BV(s) |
|
BV(id) | = | ∅ |
BV(( x/M ).s) | = | BV(M)∪ BV(s)∪{x} |
BV(s ∘ t) | = | BV(s)∪ BV(t) |
Comme toujours, nous travaillerons modulo α-conversion. Les
deux termes suivants sont α-équivalents:
( x y) [ ( x/z ).((( u/z ).id) ∘ id) ] =α
( x' y) [ ( x'/z ).((( u'/z ).id) ∘ id) ] |
Nous sommes désormais en mesure de présenter les règles de réduction du
λσ-calcul.
Définition 6 (Règles de réduction du λσ-calcul)
Le système de réduction →λσ (que nous noterons aussi →
quand la confusion ne sera pas possible) est induit par les règles
suivantes:
Départ |
(λ x. M) N | → | (λ x. M) [ id ] N | (Abs_id) |
B-règle |
(λ x. M) [ s ] N | → | M [ ( x/N ).s ] | (Abs_var) |
Propagation des substitutions |
( M N) [ s ] | → | M [ s ] N [ s ] | (app) |
(λ x. M) [ s ] | → | λ x. ( M [ s ] ) | (abs) |
Substitutions, Variables et Constantes |
x [ id ] | → | x | (var1) |
x [ ( x/M ).s ] | → | M | (var2) |
y [ ( x/M ).s ] | → | y [ s ] si y≠
x | (var3) |
Substitutions et Composition |
t [ s1 ] [ s2 ] | → | t [ s1 ∘ s2 ] | (clos) |
(s ∘ t) ∘ u | → | s ∘ (t ∘ u) | (ass_env) |
(( x/M ).s) ∘ t | → | ( x/ M [ t ] ).(s ∘ t) | (concat1) |
id ∘ s | → | s | (id) |
Nous supposons l'absence de capture de variables dans la règle
(abs) c'est à dire x∉Var(s)∪ FV(s).
Le λσ-calcul est confluent:
Théorème 7 (Confluence du λσ-calcul [CHL96])
Le λσ-calcul est confluent.
Nous présentons à présent un système de types pour le calcul λσ.
La principale nouveauté de ce système de types par rapport à ceux du
λ-calcul et du λx-calcul est le fait que les substitutions
doivent elles aussi être "typées". Ce typage ne se fera pas en
renvoyant un type. Le type d'une substitution s dans un
environnement Γ sera un environnement Γ' ce que nous
noterons Γ⊢ s ▷ Γ'. Informellement, l'environnement
Γ' sera l'union de l'environnement Γ et du domaine de s
(enrichi de types).
Il est donc nécessaire de pouvoir modifier les environnements à l'aide
des substitutions.
Définition 8 (Système de type pour le λσ-calcul)
Les règles de typage du λσ-calcul sont:
| si (x,A)∈Γ | (Var) |
|
x : A,Γ⊢ M :
B |
|
Γ⊢λ x : A. M :
A→B |
| | (Abs) |
|
Γ⊢ M : A→B Γ⊢ N :
A |
|
Γ⊢ ( M N) : B |
| | (App) |
|
Γ⊢ s ▷ Γ' Γ'⊢ M : A
|
|
Γ⊢ M [ s ] : A |
| | (Sub) |
|
| | (id) |
|
Γ⊢ M : A Γ⊢ s ▷ Γ' |
|
Γ⊢( x/M ).s ▷ x : A,Γ' |
| si x∉Γ' | (cons) |
|
Γ⊢ t ▷ Γ' Γ'⊢ s ▷ Γ'' |
|
Γ⊢ s ∘ t ▷ Γ'' |
| | (concat) |
Théorème 9 (Préservation de types par réduction)
Soit Γ un environnement de types du λσ-calcul.
-
Si M est un λσ-terme et si Γ⊢ M : A alors
pour tout λσ-terme M' tel que M→ M' nous avons
Γ⊢ M' : A.
- Si s est une λσ-substitution et si
Γ⊢ s ▷ Γ' alors pour tout λσ-substitution
s' telle que s→ s', nous avons
Γ⊢ s' ▷ Γ'.
-
- Preuve.
La preuve de ce théorème est obtenue par induction mutuelle sur les
structures de M et de s. Nous admettrons provisoirement ce
théorème. En effet, cette démonstration bien que techniquement assez
simple est très longue et le chapitre 4 est
consacré à l'étude d'une extension du λσ-calcul pour lequel nous
démontrons cette propriété
(théorème 56). D'autre part une preuve
de ce théorème peut être trouvée, pour la version originale du
λσ-calcul, dans Explicit Substitutions [ACCL90].
Malheureusement, le λσ-calcul ne possède pas la propriété de
normalisation forte. Plus précisément, il existe des λ-termes bien
typés (donc, par le théorème 56, fortement
normalisables pour le système →λ ) qui ne sont pas fortement
normalisables pour le système →λσ .
Théorème 10 (Contre-exemple de terminaison pour λσ)
Il existe un terme M bien typé du λσ-calcul qui ne termine pas.
-
- Preuve.
Ce théorème est dû à Paul-André
Melliès [Mel95, BG99].
3.2 Le calcul λσ w
Le contre-exemple de Melliès nous démontre qu'il est nécessaire de
modifier les règles du λσ-calcul afin de pouvoir recouvrer la
terminaison. L'une des solutions est de supprimer la règle
(abs) ce qui conduit au λσ w-calcul. Cette solution est celle
que nous adopterons dans la suite de ce chapitre. Elle présente trois
avantages majeurs à nos yeux. Tout d'abord, le λσ w-calcul fournit
une description plus proche des implantations des langages de
programmation fonctionnels actuels qui implantent tous des stratégies
faibles. Son second avantage est, tout en gardant des noms de
variables, de ne plus recourir à l'α-conversion dans le
système de réduction. Enfin, cette restriction présente l'avantage
de permettre de recouvrer la terminaison des expressions bien typées.
Définition 11 (Système de réduction du λσ w-calcul)
Le système de réduction →λσ w , que nous noterons aussi →
quand la confusion ne sera pas possible, est engendré par l'ensemble
des règles de réduction du λσ-calcul
(définition 6) privé de la règle (abs).
Ce système est confluent [CHL96] et préserve de
plus les
types par réduction [ACCL90]. Nous allons maintenant prouver
la normalisation forte pour ce calcul.
Le principe général de cette preuve est dû à Ritter [Rit94].
Les grandes étapes de cette preuve sont:
-
Dans un premier temps, nous allons définir un nouveau calcul, le
λσ w/≡-calcul, dérivé du λσ w-calcul par la transformation en
égalité de trois de ces règles de calcul.
- Nous définirons alors les notions de terme et de
substitution réductible dans le λσ w/≡-calcul.
- Nous montrerons alors que toute expression réductible est
fortement normalisable par la relation →λσ w/≡ .
- Puis nous démontrerons que si s est une substitution
réductible alors pour tout terme t bien typé, t [ s ] est
réductible et pour toute substitution s' bien typée,
s' ∘ s est réductible.
- Nous remarquerons alors que la substitution id est réductible
ce dont nous déduirons que toute expression bien typée du
λσ w/≡-calcul est réductible.
- Enfin, nous déduirons que toute expression bien typée du
λσ w-calcul est bien typée du point précédent et d'un lemme
technique.
3.3 Preuve de normalisation forte
Nous aurons besoin au cours de cette preuve de manipuler des
substitutions inopérantes.
Définition 12 (Substitutions inopérantes)
L'ensemble des substitutions
inopérantes est le plus petit ensemble contenant l'identité et
clos par le constructeur Concaténation.
Informellement les substitutions inopérantes sont de la forme
(id ∘ id) ∘ id… et ce sont les substitutions
qui ne modifient pas leur environnement de typage.
Lemme 13
-
Si s est une substitution inopérante telle que
Γ⊢ s ▷ Γ' alors Γ'=Γ.
- Si s est une substitution telle que
Γ⊢ s ▷ ∅ alors s est inopérante et
Γ=∅.
-
- Preuve.
La preuve de ce lemme est immédiate par induction sur la hauteur de
la preuve du jugement Γ⊢ s ▷ Γ'.
Nous allons maintenant définir le calcul λσ w/≡. Ce calcul est dérivé
du λσ w-calcul par la transformation de trois de ses règles de
calcul en égalité.
Définition 14 (Le λσ w/≡-calcul) Nous définissons la relation ≡ comme étant la plus petite
congruence sur les expressions du λσ w-calcul telle que:
( M N) [ s ] | ≡ | M [ s ] N [ s ] |
(s ∘ t) ∘ u | ≡ | s ∘ (t ∘ u) |
M [ s ] [ t ] | ≡ | M [ s ∘ t ] |
Nous définissons alors les expressions du λσ w/≡-calcul comme étant
l'ensemble des expressions du λσ w-calcul quotienté par ≡.
Nous noterons →λσ w/≡ la relation de réduction modulo induite
par →λσ w et par ≡.
Remarque 15
La relation de congruence ≡ étant définie par la
transformation en équivalence de règles de réduction du
λσ w-calcul, nous pouvons conserver le système de types de
celui-ci. Le λσ w/≡-calcul possède alors, de manière immédiate, la
propriété de préservation de types par réduction.Nous pouvons de plus projeter la notion de substitution inopérante
dans le λσ w/≡-calcul.
Lemme 16
Si s est une substitution inopérante du λσ w/≡-calcul alors s
est fortement normalisable.
-
- Preuve.
Nous raisonnons par induction sur la structure de la substitution
s. Par définition de la relation ≡, seuls deux cas sont
possibles:
-
s=id: Le résultat est alors immédiat.
- s=id ∘ s': Dans ce cas s' est, elle aussi,
inopérante donc, par hypothèse d'induction, s' est fortement normalisable. Le
résultat est alors immédiat par récurrence sur la longueur de la
plus longue dérivation de s'.
Nous allons maintenant donner la définition, cruciale pour la suite de
cette démonstration, d'expressions neutres. Informellement, les
expressions neutres sont les expressions qui, une fois appliquées, ne
créent pas de radical.
Définition 17 (Expressions neutres)
-
Un terme M est dit neutre si et seulement si il n'est ni de la forme
λ x. N ni de la forme (λ x. N) [ s ] .
- Une substitution est dite neutre si et seulement si elle n'est pas de la
forme ( x/M ).t.
Une autre notion vitale pour notre preuve est la notion
d'expression réductible.
Définition 18 (Expression réductible) L'ensemble des termes
réductibles de type A dans l'environnement Γ, noté
[[ A]]Γ, est défini par induction sur le type A comme
suit.
[[ ι]]Γ | ≡ | {M ∣ Γ⊢ M : ι et
M fortement normalisable
} |
[[ A→B]]Γ | ≡ | {M ∣ Γ⊢ M : A→B et
∀Δ,∀ N∈[[ A]]ΓΔ,
( M N)∈[[ B]]ΓΔ } |
L'ensemble des substitutions réductibles pour un environnement
Γ dans un environnement Δ est défini comme suit:
[[ Δ]]Γ=def{s∣ Γ⊢ s ▷ Δ
et ∀ (x : A)∈Δ, x [ s ] ∈[[ A]]Γ }
|
Remarque 19
En particulier, les substitutions inopérantes sont dans
[[ ∅]]∅.
Notation 20
Dans la suite de ce chapitre, nous noterons ν(e), la
longueur de la plus longue séquence de réductions issue de e.Cette notion n'est bien définie que si l'expression e est
fortement normalisable.
Dans la suite de ce chapitre, nous dirons qu'une expression est
réductible pour exprimer le fait que cette expression est réductible
dans un environnement donné.
Nous allons maintenant démontrer que les termes réductibles sont
fortement normalisables et stables par réduction. De plus, les termes
neutres dont tous les réduits sont réductibles sont eux-mêmes
réductibles.
Lemme 21
-
Si M est réductible alors M
est fortement normalisable.
- Si M=(x M1… Mn) est un
terme bien typé et si les Mi sont fortement normalisables alors
M est réductible.
- Si M est réductible et si
M→ M' alors M' est réductible.
- Si M est neutre bien typé
et si tous ses réduits en un pas sont réductibles alors M est
réductible.
-
- Preuve.
Nous démontrons ces quatre points par induction sur le type A des
expressions considérées.
-
A=ι
-
Le résultat est immédiat par définition de
[[ ι]]Γ.
- Soit M=(x M1… Mn) un terme tel que
Γ⊢ M : ι et tel que les Mi soient fortement
normalisables. Il est évident que M est lui-même fortement
normalisable et nous avons donc le résultat par définition de
[[ ι]]Γ.
- Soit M∈[[ ι]]Γ et tel que M→ M'. Par le
théorème 9,
Γ⊢ M' : ι. De plus, il est évident que M'
est fortement normalisable puisque M l'est par définition de
[[ ι]]Γ. Donc, par définition de
[[ ι]]Γ, M'∈[[ ι]]Γ.
- Soit M un terme neutre tel que tous ses réduits en un pas
sont dans [[ ι]]Γ. En particulier M est
fortement normalisable puisque, par définition de
[[ ι]]Γ, tous ses réduits en un pas le sont. Le
résultat est alors immédiat par définition de
[[ ι]]Γ.
- A=A1→A2
-
Soit M un terme appartenant à [[ A]]Γ. Soit x
une variable fraîche. Remarquons que, par hypothèse d'induction
(point 2), x∈[[ A1]]x :
A1,Γ. Donc, par définition de [[ A]]Γ, nous
avons ( M x)∈[[ A2]]x : A1,Γ. Ainsi,
par hypothèse d'induction (point 1), le terme
M x est fortement normalisable. Le résultat est alors
immédiat.
- Soit M=(x M1… Mn) un terme tel que
Γ⊢ M : A et tel que les Mi soient fortement
normalisables et soit N∈[[ A1]]ΔΓ. Nous
savons alors que ΔΓ⊢ (x M1… Mn
N) : A1. Par hypothèse d'induction (point 1), le
terme N est fortement normalisable. Donc, par hypothèse d'induction
(point 2), nous savons que (x
M1… Mn N)∈[[ A2]]ΔΓ ce qui est la
définition de l'appartenance de M à [[ A]]Γ.
- Soit M∈[[ A]]Γ tel que M→ M' et soit
N∈[[ A1]]ΔΓ. Par définition, nous avons
M N∈[[ A2]]ΔΓ et donc, par hypothèse d'induction
(point 3),
M' N∈[[ A2]]ΔΓ. Le résultat est
alors immédiat par définition.
- Soit M un terme neutre tel que Γ⊢ M : A et
tel que tous ses réduits en un pas appartiennent à
[[ A]]Γ. Soit N un terme appartenant à
[[ A1]]ΔΓ. Puisque M N est un
terme neutre et puisque
ΓΔ⊢ ( M N) : A2 , il nous suffit par
hypothèse d'induction (point 4) de montrer que tous
les réduits en un pas de ce terme sont dans
[[ A2]]ΓΔ pour pouvoir conclure que
( M N)∈[[ A2]]ΓΔ. Par hypothèse d'induction
(point 1), nous savons que N est
fortement normalisable. Nous allons donc raisonner par
récurrence sur ν(N). Les réduits possibles en un pas de
M N sont:
-
M N' où N→ N'. Dans ce cas nous avons
ν(N')<ν(N) et donc le résultat est vrai par
hypothèse d'induction.
- M' N où M→ M'. Dans ce cas nous savons que
M'∈[[ A]]Γ et donc, par définition, que
M' N∈[[ A2]]ΔΓ.
- Il n'y a pas d'autre cas puisque M est neutre.
Donc M N appartient à [[ A2]]ΔΓ,
ce qui nous permet de conclure par définition de
[[ A]]Γ.
Bien évidement, les substitutions réductibles vérifient les mêmes
propriétés.
Lemme 22
-
Si s est réductible alors s est
fortement normalisable.
- Si s est réductible et si
s→ s' alors s' est réductible.
- Si s est neutre bien typé et
si tous ses réduits en un pas sont réductibles alors s est
réductible.
-
- Preuve.
Nous démontrons ces propriétés par cas sur l'environnement Δ
tel que Γ⊢ s ▷ Δ.
-
Δ=∅.
-
Par le lemme 13, nous savons que
Γ=∅ et que s est inopérante. Nous concluons alors
par le lemme 16.
- Soit s∈[[ ∅]]Γ alors, par
lemme 13, nous savons que s est
inopérante et que Γ=∅. Il est évidement que pour
toute substitution s' telle que s→ s', s' est elle-même
inopérante. Nous concluons alors grâce à la
remarque 19 et au
théorème 9.
- Ce point est évident par définition des substitutions
inopérantes et par la remarque 19.
- Δ≠∅.
-
Soit s une substitution appartenant à
[[ Δ]]Γ et (x : A)∈Δ. Par définition,
nous savons que x [ s ] ∈[[ A]]Γ. Donc par le
point 1 du
lemme 21, nous savons que x [ s ]
est fortement normalisable. Le résultat est alors évident.
- Soient s une substitution appartenant à
[[ Δ]]Γ et s' telle que s→ s'. Soit (x :
A)∈Δ. Par définition, nous savons que
x [ s ] ∈[[ A]]Γ. Par le
point 3 du
lemme 21, nous savons que
x [ s' ] appartient à [[ A]]Γ. Nous concluons
alors par définition de [[ Δ]]Γ.
- Soit s un substitution neutre telle que
Γ⊢ s ▷ Δ et que tous ses réduits en un pas
appartiennent à [[ Δ]]Γ. Soit alors (x :
A)∈Δ. Puisque s est neutre, les seuls réduits
possibles en un pas de x [ s ] sont x [ s' ] (où
s→ s') et x (si s=id). Dans le premier cas, nous
concluons par définition de la réductibilité des substitutions
(puisque s' est réductible). Le second cas est évident par le
point 2 du
lemme 21. Nous en déduisons que
x [ s ] ∈[[ A]]Γ. Le résultat est alors évident.
Grâce à ces deux lemmes fondamentaux nous allons pouvoir donner des
critères syntaxiques de réductibilité.
Lemme 23
Soient M un terme appartenant à [[ A]]Γ et s une
substitution appartenant à [[ Δ]]Γ. Soit x une
variable fraîche. La substitution t=( x/M ).s appartient à
[[ x : A,Δ]]Γ.
-
- Preuve.
Avant toute chose nous remarquons que nous avons
Γ⊢ t ▷ x : A,Δ. Afin de prouver que t
appartient à [[ x : A,Δ]]Γ, il nous faut démontrer
que pour tout (y : A) appartenant à x : A,Δ, nous avons
y [ t ] ∈[[ B]]Γ.
Soit (y : B)∈ x : A,Δ. Nous remarquons que y [ t ]
est neutre. Donc par le point 4 du
lemme 21, il nous suffit de montrer que tous
ses réduits en un pas appartiennent à [[ B]]Γ pour montrer
que ce terme appartient à [[ B]]Γ. Mais puisque M et s
sont réductibles, par les lemmes 21
et 22, ces deux expressions sont fortement
normalisables. Nous allons raisonner par récurrence sur
ν(M)+ν(s). Les réduits en un pas possibles de
y [ t ] sont:
-
y [ ( x/M' ).s ] où M→ M'. Dans ce cas, nous
concluons par hypothèse d'induction.
- y [ ( x/M ).s' ] où s→ s'. Dans ce cas, nous
concluons par hypothèse d'induction.
- M, si x=y. Dans ce cas, nous concluons par hypothèse.
- x [ s ] , si x≠ y. Dans ce cas, nous concluons par
hypothèse.
Donc y [ t ] est réductible et donc, par définition, t est
réductible.
Lemme 24
Si s ∘ t appartient à [[ Δ]]Γ,
M [ t ] appartient à [[ A]]Γ et si x est une
variable fraîche alors la substitution
u=(( x/M ).s) ∘ t appartient à [[ x :
A,Δ]]Γ.
-
- Preuve.
Nous remarquons tout d'abord que u est bien typée dans Δ.
Pour démontrer que u est réductible, il nous suffit de montrer que
pour tout (y : B) dans x : A,Δ nous avons
y [ u ] ∈[[ B]]Γ. Soit donc (y : B) appartenant à
x : A,Δ. Puisque les expressions M [ t ] et
s ∘ t sont réductibles, nous savons que M [ t ] et
s ∘ t sont fortement normalisables par les
lemmes 21 et 22. Nous
allons démontrer par récurrence sur
ν( M [ t ] )+ν(s ∘ t) que
y [ u ] ∈[[ B]]Γ. Puisque y [ u ] est un terme
neutre, il nous suffit de démontrer que tous ses réduits en un pas
sont réductibles. Les réduits possibles en un pas de ce terme sont:
-
y [ (( x/M' ).s) ∘ t ] où M→ M'. Dans
ce cas, nous concluons par hypothèse d'induction.
- y [ (( x/M ).s') ∘ t ] où s→ s'. Dans
ce cas, nous concluons par hypothèse d'induction.
- y [ (( x/M ).s) ∘ t' ] où t→ t'. Dans
ce cas, nous concluons par hypothèse d'induction
- y [ ( x/ M [ t ] ).(s ∘ t) ] . Dans ce
cas, nous savons par hypothèse que M [ t ] et
s ∘ t sont réductibles et donc, par le
lemme 23, que
( x/ M [ t ] ).(s ∘ t) est réductibles. Nous en
déduisons la réductibilité de
y [ ( x/ M [ t ] ).(s ∘ t) ]
Donc y [ u ] est réductible et donc, par définition, u est
réductible.
Lemme 25
Soit s∈[[ Δ]]Γ et soit λ x : A. M un terme
de type A→B dans Δ. Si pour tout Δ' et pour tout
N∈[[ A]]Δ'Γ nous avons
M [ ( x/N ).s ] ∈[[ B]]Δ'Γ, alors
R= (λ x : A. M) [ s ] ∈[[ A→ B]]Γ.
-
- Preuve.
Par définition, il nous suffit de démontrer que pour tout N dans
[[ A]]ΓΔ', on a
( R N)∈[[ B]]ΓΔ'. Soit donc un terme
N∈[[ A]]ΓΔ'. Puisque le terme R N
est neutre il nous suffit, par le
point 4 du
lemme 21, de démontrer que tous ses réduits
en un pas sont dans [[ B]]ΓΔ'. Puisque
M [ ( x/N ).s ] est réductible, ce terme est fortement
normalisable. Nous allons donc raisonner par récurrence sur
ν(M)+ν(N)+ν(s). Les réduits possibles en un
pas de R N sont:
-
(λ x : A. M') [ s ] N où M→ M'.
Dans ce cas, nous concluons par hypothèse d'induction.
- (λ x : A. M) [ s' ] N où s→ s'.
Dans ce cas, nous concluons par hypothèse d'induction.
- (λ x : A. M) [ s ] N' où N→ N'.
Dans ce cas, nous concluons par hypothèse d'induction.
- M [ ( x/N ).s ] . Dans ce cas, nous concluons par
hypothèse.
Nous somme désormais en mesure de démontrer que la réductibilité est
"stable" par substitution et par concaténation.
Théorème 26
Soit s une substitution appartenant à [[ Δ]]Γ.
-
Si t est une substitution telle que
Δ⊢ t ▷ Δ' alors la substitution
t ∘ s appartient à [[ Δ']]Γ.
- Si M est un terme tel que Δ⊢ M : A alors le
terme M [ s ] appartient à [[ A]]Γ.
-
- Preuve.
La preuve de ce théorème est obtenue par induction sur les
structures de t et M.
-
Si t=id alors id ∘ s est neutre. Il nous suffit
donc, pour conclure, de démontrer, par récurrence sur
ν(s), que tous ses réduits en un pas sont réductibles.
Ces réduits en un pas sont:
- [•]
id ∘ s' où s→ s'. Dans ce cas, nous concluons
par hypothèse de récurrence.
- s. Dans ce cas, nous concluons par hypothèse.
- Si M=x alors Δ n'est pas vide puisque (x :
A)∈Δ. Nous concluons alors par définition de la
réductibilité des substitutions.
- Si t=( x/M ).s alors, par hypothèse d'induction, nous savons que
M [ t ] et s ∘ t appartiennent respectivement à
[[ A]]Γ et [[ Γ']]Γ. Nous concluons alors
grâce au lemme 24.
- Si t=v ∘ u alors nous avons deux environnements
Δ' et Δ'' tels que Δ⊢ u ▷ Δ'
et Δ'⊢ v ▷ Δ''. Donc, par hypothèse d'induction, nous savons
que u ∘ s appartient à [[ Δ']]Γ et donc,
par hypothèse d'induction de nouveau, v ∘ (u ∘ s) appartient à
[[ Δ'']]Γ. Nous concluons alors en nous souvenant
que
(v ∘ u) ∘ s≡v ∘ (u ∘ s).
- Si M= N1 N2 alors, par hypothèse d'induction, nous savons que
N1 [ s ] et N2 [ s ] appartiennent respectivement
à [[ A1→ A2]]Γ et [[ A1]]Γ et donc, par
définition de la réductibilité,
N1 [ s ] N2 [ s ] appartient à
[[ A2]]Γ. Nous concluons alors en nous souvenant que
N1 [ s ] N2 [ s ] ≡ ( N1 N2) [ s ] .
- Si M=λ x : A. N alors par le
lemme 23 nous savons que pour tout terme N1
appartenant à [[ A]]ΓΔ', nous avons
( x/N ).s∈[[ x : A,Δ'Δ]]ΓΔ'.
Par hypothèse d'induction, nous avons alors
M [ ( x/N ).s ] ∈[[ B]]ΓΔ'. Nous
concluons alors grâce au lemme 25.
- Si M= M [ t ] , nous savons alors, par hypothèse d'induction, que
t ∘ s est réductible. Nous obtenons alors, par hypothèse d'induction de
nouveau, la réductibilité de M [ s ∘ t ] . Nous
concluons grâce à la définition de ≡.
Nous somme désormais en mesure de démontrer la normalisation forte du
λσ w/≡-calcul.
Théorème 27
Le λσ w/≡-calcul est fortement normalisant.
-
- Preuve.
Nous commençons par remarquer que pour tout environnement Γ la
substitution id appartient à [[ Γ]]Γ puisque
Γ⊢ id ▷ Γ et id est une substitution neutre sans
réduits.
Pour conclure, il nous suffit de montrer que pour tout terme M
(resp. toute substitution s) bien typé, M est fortement
normalisable.
Or, si M (resp. s) est bien typé alors, par le
théorème 26, M [ id ] (resp.
s ∘ id) est réductible et donc par le
point 1 du lemme 21
(resp. le point 1 du
lemme 22) le terme M [ id ] (resp. la
substitution s ∘ id) est fortement normalisable. Nous en
déduisons aisément le résultat.
Nous allons maintenant conclure ce chapitre par le résultat suivant:
Théorème 28
Le λσ w-calcul est fortement normalisant.
-
- Preuve.
Avant toute chose, nous remarquons que nous pouvons considérer la
relation →λσ w comme étant R1∪ R2 où R1 est la
relation induite par les règles définissant le λσ w calcul privées
de (app), (ass_env) et (clos) et où R2 est
induite par ces trois règles. Nous considérons alors O
l'ensemble de λσ w-expressions, O' celui des
λσ w/≡-expressions, T la congruence ≡ et R' la
relation →λσ w/≡ . Nous concluons alors par le
lemme 8 et par le théorème 27
après avoir remarqué que R2 est fortement normalisante.