Previous Up Next

Chapitre 4  Le calcul λ Pw

Ce chapitre est consacré à la définition et à l'étude d'une extension du λσ w-calcul aux motifs "à la ML" et au filtrage explicite. Le système des filtres du λ Pw-calcul est inspiré des formalismes précédents dans le domaine des filtres "à la ML" [KPT96, CK99a, For02a, For02b]. Le λ Pw-calcul est, tout comme le λσ w-calcul, un calcul dit "faible". Rappelons que les calculs de substitution explicite faibles sont ceux pour lesquels il n'existe pas de règle de réécriture de la forme (λ x. M) [ s ] → λ x. ( M [ s ] ). Dans le cas du λ Pw-calcul, il ne comportera pas de règle de la forme (λ P. M) [ s ] → λ P. ( M [ s ] ) où P sera un motif "à la ML". Cette particularité nous permettra de dénoter les variables par des noms tout en n'utilisant pas l'α-conversion dans le système de réduction. Un second avantage important de cette absence sera de nous permettre de démontrer la terminaison de ce calcul.

Le but principal de l'étude explicite de la substitution est de permettre de rapprocher les calculs théoriques des implantations pratiques. Le but poursuivi par l'étude explicite du filtrage est le même. En effet, la plupart des langages de programmation  [LM92, Obj, HPJP92, Har02] et des assistants de preuve [Coq00, , Hal, ELA, Isa] modernes utilisent cette fonctionnalité non primitive dans leur base théorique actuelle.

Les principaux prédécesseurs du calcul λ Pw en matière de filtrage "à la ML" dérivent du Calculus of Pattern Matching [KPT96]. Ce calcul possédait des mécanismes de filtrage et de substitution implicites. Serenella Cerrito et Delia Kesner ont raffiné ce formalisme en proposant deux nouveaux calculs [CK99a]. Le calcul TPC possède un mécanisme de filtrage explicite et un mécanisme de substitution implicite. Le calcul TPCES est une extension de TPC à un système de substitution partiellement explicite. Le système de substitution de TPCES est fondé sur le système, très simple, de substitutions du λx-calcul.

L'avancée majeur du λ Pw-calcul est d'être le premier formalisme à proposer des systèmes de substitution et de filtrage complètement explicite. A l'inverse de TPCES, le λ Pw-calcul fonde son système de substitutions sur le λσ w-calcul. L'inconvénient d'une telle extension est la complexité très fortement accrue des concepts et des preuves de propriétés par rapport au calcul TPCES.

Le mécanisme de filtrage explicite du λ Pw-calcul sera obtenu par l'ajout, en plus de la β-règle classique, d'un certain nombre de règles de réécriture permettant de déconstruire les motifs jusqu'à l'obtention d'une abstraction de la forme λ x. M. Ainsi, le λ Pw-calcul comprendra une règle de réécriture de la forme:

 λ ⟨ P1P2 ⟩. M ⟨ N1N2 ⟩→   ( λ P1. λ P2M N1N2

La suite de ce chapitre sera organisée de la manière suivante. La section 4.1 sera consacrée à la définition des notions de bases du λ Pw-calcul. Nous proposerons dans cette section une grammaire pour les expressions ainsi que la démonstration de certaines propriétés de base telles que la préservation de l'ensemble des variables libres par réduction. La section 4.2 sera alors consacrée à la démonstration de la confluence du λ Pw-calcul sur l'ensemble de ses expressions en utilisant une technique due à Tait et Martin-Löf [Bar84] sur laquelle nous reviendrons dans la présentation de cette section. Nous proposerons ensuite, dans la section 4.3, un système de types avant de démontrer la préservation de types par réduction. Enfin la section 4.4 sera consacrée à la preuve de normalisation forte des expressions bien typées du λ Pw-calcul. Nous utiliserons au cours de cette démonstration une extension de la méthode de preuve dite "par réductibilité" dont nous présenterons les détails dans l'introduction de cette section.

4.1  Définition du calcul

Cette section est consacrée à la définition du calcul λ Pw. Nous présenterons tout d'abord sa grammaire dans la sous-section 4.1.1, puis, dans la sous-section 4.1.2, nous définirons formellement les notions classiques de variables libres et liées dans un terme. Nous proposerons alors des règles de réduction pour λ Pw. Nous constaterons que la notion de variables libres n'est pas assez fine car elle n'est pas préservée par réduction. La sous-section 4.1.4 sera alors consacrée à la définition de deux nouvelles notions: les variables libres localisées d'un terme et les termes acceptables. Les termes acceptables forment un sous-ensemble des termes qui préservent les variables libres d'un terme par réduction. Enfin dans la sous section 4.1.5 nous démontrerons les propriétés de préservation de l'ensemble des variables libres et de la notion de terme acceptable par réduction.

4.1.1  Grammaire

Le calcul λ Pw est une extension du λ-calcul classique. A ce titre, la nécessité d'un système de types ayant de bonnes propriétés est bien connue [Bar84]. Nous allons utiliser pour définir λ Pw un système de types simples (c.f. section 4.3).

Définition 1   Les types du λ Pw-calcul sont donnés par la grammaire suivante:
    (Types)   A::=ιType de base
 A× AType produit
 A+AType somme
 AAType fonctionnel
 

Nous utiliserons, dans la suite de ce chapitre, les notations A, B, C,…pour dénoter des types.

Contrairement à la famille des λ-calculs classiques qui ne fournissent qu'un mécanisme d'abstraction sur les variables, λ Pw fournit un mécanisme d'abstraction sur des motifs complexes. Contrairement à la notion de motif du ρ-calcul [CK98], ces motifs sont définis par une grammaire indépendante de la grammaire des termes bien que partageant avec celle-ci l'ensemble des variables.

Définition 2   Dans la grammaire des motifs qui suit, la variable ξ présente dans le constructeur de choix appartient à un nouvel ensemble infini de variables disjoint de l'ensemble des variables usuelles, l'ensemble des variable de choix. Cette variable nous permettra de propager le résultat du choix fait sur un tel motif tout au long de la réduction du terme auquel celui-ci appartient.

Les motifs du λ Pw-calcul sont donnés par la grammaire suivante:

    (Motif)     P:=  _ Wildcard
 xVariable (usuelle)
 ⟨ PP ⟩Paire
 @(P,P)Contraction 
 

ξ ∣  P,P  
Choix
 

Les notations _ , x et ⟨ P, Q ⟩ sont des notations classiques. La notation @(P,Q) est une généralisation du constructeur as de OCAML. Le constructeur [ξ ∣ P,Q ] est le constructeur de motif de choix tels que ceux présents dans la construction function | P -> ... |Q -> ... de OCAML.

Les motifs seront, dans la suite de ce chapitre, dénotés par P, Q, R,…

Définition 3   Un motif P est dit linéaire si et seulement si chaque variable (usuelle ou de choix) apparaît au plus une fois dans P.
Notation 4   Tout au long de ce chapitre nous utiliserons la notation PQ pour dénoter le fait que P est un sous motif de Q.

Nous sommes maintenant en mesure de définir la grammaire des termes du calcul. Ces termes vont utiliser les motifs définis précédemment dans leur mécanisme d'abstraction. Le calcul λ Pw possédant un mécanisme explicite de substitution, nous aurons de plus besoin de définir une grammaire pour les substitutions explicites. Nous allons pour cela étendre la grammaire des substitutions de λσ (c.f. chapitre 3). Enfin, nous aurons besoin d'un troisième ensemble: l'ensemble de termes de choix. Ce troisième ensemble nous permettra d'évaluer de manière explicite les choix faits dans les motifs de choix.

Afin de préserver les "bonnes" propriétés de réduction pour λ Pw, nous serons, dans la sous-section 4.1.4, conduits à restreindre ces grammaires.

Définition 5  

Les expressions du λ Pw-calcul sont données par les grammaires suivantes:

    (Pré-substitution)      s::=idIdentité
 x/M  ).sConstructeur usuel
 ( ξP  :   A/K  ).sConstructeur de choix
 s ∘ sConcaténation
 
    (Pré-termes de choix)     Ξ::=ξVariable de choix
 LConstante Gauche
 RConstante Droite
   ξ [ s ] Substitution de choix
  
 
    (Pré-termes)      M::=xVariable (usuelle)
  M NApplication
 ⟨ MM ⟩Paire
 inlB(M)Injection gauche 
 inrA(M)Injection droite
 

ξ ∣  M,M  
Choix
 

Ξ ∣ s  M,M 
Choix suspendu
 λ P :  AMAbstraction
   M [ s ] Clôture
  
 

Dans les définitions précédentes, L et R sont deux constantes fixes du calcul. Nous utiliserons dans la suite la notation K pour dénoter indifféremment l'une de ces deux constantes. Nous utiliserons de même la notation T pour dénoter indifféremment une constante de choix ou une variable de choix. De même id est la substitution vide qui ne lie aucune variable.

La plupart des constructions présentes dans la définition des pré-substitutions ou des pré-termes sont des constructions classiques des λ-calculs avec substitutions explicites. La construction Choix des termes est le pendant du constructeur Choix des motifs. Plus intuitivement, un programme OCAML ayant le squelette suivant:

function 
  | P1 -> M1
  | P2 -> M2

pourra se "traduire" dans la présente grammaire par un pré-terme de la forme λ [ξP1,P2 ] : A+B. [ξM1,M2 ]P1, P2, M1 et M2 sont les traductions respectives de P1, P2, M1 et M2. Les raisons de cette "séparation" entre les motifs et leurs termes associés sont multiples. L'une d'entre elles est la possibilité de lier de manière unique des variables dans les deux termes d'une alternative. En effet, un pré-terme de la forme λ [ξP1,P2 ] : A+B. λ P3 : C. [ξM1,M2 ] est un pré-terme appartenant à notre grammaire qui lie le motif P3 à la fois dans le pré-terme M1 et dans le pré-terme M2. Nous voyons ici la nécessité des variables de choix qui vont nous permettre dans ce cas de déterminer quel motif de choix lie le pré-terme de choix [ξM1,M2 ]. En effet le motif P3 peut lui aussi contenir un motif de choix.

Notation 6   Tout au long de cette section nous utiliserons la notation ( ξQ : A/K )∈ s pour dénoter le fait que ( ξQ : A/K ) est une sous pré-substitution de s.

De plus, nous utiliserons dans la suite de ce chapitre les notations suivantes:

Dans un souci de simplification des notations nous omettrons les types présents dans ces grammaires quand leur présence ne sera pas nécessaire à la compréhension.

Notation 7   Dans la suite de cette étude nous appellerons indifféremment pré-expression un pré-terme, une pré-substitution ou un pré-terme de choix.

Nous allons maintenant définir les notions de variables libres et liées d'une pré-expression.

4.1.2  Variables libres et liées

Comme toujours dans les λ-calculs utilisant des variables nommées, nous travaillerons modulo α-conversion. Nous donnons maintenant la définition formelle des variables liantes d'un motif et d'une pré-substitution par induction sur la structure de ces derniers.

Définition 8 (Variables liées par une substitution ou un motif)   L'ensemble des variables liées par une substitution ou par un motif est défini comme suit:
Var( _ ) = 
Var(x) = { x }
Var(⟨ P, Q ⟩) = Var(P) ∪ Var(Q)
Var([ξP,Q ]) = Var(P) ∪ Var(Q) ∪ { ξ }
Var(@(P, Q)) = Var(P)∪ Var(Q)
Var(id) = 
Var(( x/M ).s) = Var(s)∪ {x}
Var(( ξP/K ).s) = Var(s)∪ Var(P)∪ { ξ}
Var(st) = Var(s)∪ Var(t)

A titre d'exemple, la définition précédente nous permet d'obtenir:

  Var(
ξ ∣  x,y  
)
={ξ,x,y}
et
  Var(( x/M  ).( ξy/L  ).id)={x,y,ξ}

Nous sommes maintenant en mesure de définir les variables libres d'une pré-expression. Informellement ce sont les variables présentes dans cette expression qui ne sont pas liées dans celle-ci.

Définition 9 (Variables libres)   Nous définissons les variables libres d'une pré-expression par induction sur la structure des expressions comme suit:
FV(x)  = { x }
FV(inl(M))= FV(inr(M))  =  FV(M)
FV( M N) = FV(⟨ M, N ⟩)  =  FV(M) ∪ FV(N)
FVP. M)  =  FV(M) ∖ Var(P)
FV( M [ s ] )  = ( FV(M)∖ Var(s))∪ FV(s)
FV([ξM,N ])  =  FV(M) ∪ FV(N) ∪ {ξ}
FV([Ξ ∣ s M,N ])  =  FV( M [ s ] )∪ FV( N [ s ] )∪ FV(Ξ)
FV(id)= FV(K)  = 
FV(( x/M ).s)  =  FV(M)∪ FV(s)
FV(( ξP/K ).s)  =  FV(s)
FV(st)  = ( FV(s)∖ Var(t))∪ FV(t)
FV(ξ)  = {ξ}
FV( ξ [ s ] )  = ({ξ}∖ Var(s))∪ FV(s)

Nous noterons dans la suite FCV(e) le sous ensemble des variables libres de e ne contenant que des variables de choix.

Définition 10 (Variables liées d'une expression)   L'ensemble des variables liées d'une pré-expression e est l'ensemble des variables apparaissant dans e qui ne sont pas libres dans e.

Ainsi nous avons par exemple:

FV(λ [ξ ∣ x,y ]. [ψ ∣ x,t ])={ψ,t}
FV(λ [ξ ∣ x,y ]. [ξ ∣ y,x ])=

4.1.3  Règles de réduction

Nous somme maintenant en mesure de définir les règles de réduction de λ Pw. Afin de faciliter la lecture de ces règles nous les avons regroupées en différents ensembles. Le premier ensemble Départ nous permet de ne pas dédoubler les règles du second, l'ensemble Filtrage, qui est l'ensemble des règles qui effectuent le filtrage d'un terme par un motif. L'ensemble Choix est l'ensemble des règles permettant d'évaluer un choix dans un terme. Les autres ensembles sont des extensions naturelles des règles du calcul λσ w (c.f. chapitre 3). Nous avons omis les types de cette présentation.

Départ
P. M) N  →   P. M) [ id ] N(Abs_id)
Filtrage
(λ ⟨ P1, P2 ⟩. M) [ s ] ⟨ N1, N2  →    ( (λ P1. λ P2. M) [ s ] N1) N2(Abs_pair)
(λ @(P1,P2). M) [ s ] N  →   ( (λ P1. λ P2. M) [ s ] N) N(Abs_contr)
(λ [ξ ∣ P1,P2 ]. M) [ s ] inl(N)  →   P1. M) [ ( ξP2/L ).s ] N(Abs_left)
(λ [ξ ∣ P1,P2 ]. M) [ s ] inr(N)  →   P2. M) [ ( ξP1/R ).s ] N(Abs_right)
x. M) [ s ] N  →    M [ ( x/N ).s ] (Abs_var)
(λ _ . M) [ s ] N  →    M [ s ] (Abs_wild)
Choix
[ξ ∣ M,N ] [ s ]   →   [ ξ [ s ] ∣ s M,N ](Freeze)
[L s M,N ]  →    M [ s ] (Left)
[R s M,N ]  →    N [ s ] (Right)
[ξ ∣ s M,N ]  →   [ξ ∣ M [ s ] , N [ s ] ](Xi)
Propagation des substitutions
( M N) [ s ]   →    M [ s ] N [ s ] (app)
inl(M) [ s ]   →   inl( M [ s ] )(left)
inr(M) [ s ]   →   inr( M [ s ] )(right)
M1, M2 ⟩ [ s ]   →   M1 [ s ] , M2 [ s ] ⟩(pair)
Substitutions, Variables et Constantes
x [ id ]   →   x(var1)
x [ ( x/N ).s ]   →   N(var2)
y [ ( x/N ).s ]   →    y [ s ] si yx(var3)
x [ ( ξP/K ).s ]   →    x [ s ] (var4)
ξ [ id ]   →   ξ(sum_var1)
ξ [ ( ξP/K ).s ]   →   K(sum_var2)
ξ [ ( ψP/K ).s ]   →    ξ [ s ] si ξ≠ψ(sum_var3)
ξ [ ( x/M ).s ]   →    ξ [ s ] (sum_var4)
Substitutions et Composition
M [ s ] [ t ]   →    M [ st ] (clos)
(st) ∘ u  →   s ∘ (tu)(ass_env)
(( x/M ).s) ∘ t  →   ( x/ M [ t ] ).(st)(concat1)
(( ξP/K ).s) ∘ t  →   ( ξP/K ).(st)(concat2)
ids  →   s(id)

Les règles (Abs_left) et (Abs_right) justifient la présence d'un motif dans la construction de choix des substitutions. En effet, si cette construction était simplement de la forme ( ξ/K ).s, ces deux règles libéreraient les variables liées par le motif non choisi.

Considérons en effet les termes:

t1 =def λ [ξ ∣ x,y ]. [ξ ∣ x,y ] inl (M)
et
t2 =def λ x. [ξ ∣ x,y ] [ ( ξy/L ).id ] M

Nous remarquons tout d'abord que t1—→* t2 et que nous avons bien FV(t2)⊂ FV(t1). En revanche, si nous "oublions" le motif y dans le terme t2 et si nous considérons donc le terme t2'=def λ x. [ξ ∣ x,y ] [ ( ξ/L ).id ] M, nous avons alors

Notation 11   Le système de réduction engendré par les règles des groupes (Départ) et (Filtrage) qui sont utilisées pour implanter le filtrage sera par la suite noté P . Les autres règles, qui implantent la gestion de la substitution, génèrent un système de réduction noté dans la suite es . Quand la distinction sera nécessaire nous utiliserons la notation λ Pw  pour le système de réduction engendré par l'ensemble de toutes les règles. Le reste du temps nous utiliserons simplement la notation →  pour ce système de réduction.

Nous remarquons alors que suivant ces règles, la réduction suivante est possible:

t1= (λ [ξ ∣ x,y ]. [ξ ∣ y,x ]) [ id ] inl (M)
 → x. [ξ ∣ y,x ]) [ ( ξy/L ).id ] M
 →  [ξ ∣ y,x ] [ ( x/M ).( ξy/L ).id ]
 → [ ξ [ ( x/M ).( ξy/L ).id ] ∣ ( x/M ).( ξy/L ).id y,x ]
 —→* [L ( x/M ).( ξy/L ).id y,x ]
 →  y [ ( x/M ).( ξy/L ).id ]
 —→* y

Cet exemple nous montre un premier problème: la notion de variables libres n'est dans notre cadre pas assez restrictive pour pouvoir être préservée par réduction. En effet si dans le terme λ [ξ ∣ x,y ]. [ξ ∣ y,x ] qui ne contient pas de variables libres, nous effectuons le choix L nous obtiendrons un terme de la forme λ x. y dans lequel la variable y est libre.

Afin de résoudre ce problème nous allons proposer une nouvelle notion de variable libre: les variables libres localisées.

4.1.4  Variables libres localisées et termes acceptables

L'ensemble des variables libres localisées d'une pré-expression e par rapport à une variable de choix ξ et à un choix K peut être compris informellement comme l'ensemble des variables qui resteraient libres dans e après tout remplacement de ξ par la valeur K: FVξK(e)≡ FV(e{ ξ ← K } ).

Définition 12 (Variables libres localisées)   Étant donné une variable de choix ξ et une constante de choix K, nous définissons l'ensemble des variables libres localisées de e par rapport à ξ et au choix K par induction sur e comme suit:
FVξK(x)={ x }
FVξK(inl(M))= FVξK(M)
FVξK(inr(M))= FVξK(M)
FVξK( M N)= FVξK(M) ∪ FVξK(N)
FVξK(⟨ M, N ⟩)= FVξK(M) ∪ FVξK(N)
FVξKP. M)= FVξK(M) ∖ Var(P)
FVξK( M [ s ] )=( FVξK(M)∖ Var(s))∪ FVξK(s)
FVξL([ξM,N ])= FVξL(M)
FVξR([ξM,N ])= FVξR(N)
FVξK([ψM,N ])= FVξK(M) ∪ FVξK(N) ∪ {ψ}
FVξL([ξ ∣ s M,N ])=( FVξL(M)∖ Var(s))∪ FVξL(s)
FVξR([ξ ∣ s M,N ])=( FVξR(N)∖ Var(s))∪ FVξR(s)
FVξK([ψ ∣ s M,N ])= ( FVξK(M)∪ FVξK(N))∖Var(s)
   FVξK(s) ∪{ψ}
FVξK([K' ∣ s M,N ])= ( FVξK(M)∪ FVξK(N))∖ Var(s)
   FVξK(s)
FVξK([ ψ [ s' ] ∣ s M,N ])= ( FVξK(M)∪ FVξK(N))∖ Var(s)
   FVξK(s) ∪ FVξK( ψ [ s' ] )
FVξK([ ξ [ s' ] ∣ s M,N ]) = (( FVξK(M)∪ FVξK(N))∖ Var(s))
   FVξK(s)∪ FVξK( ξ [ s' ] ) si ξ∈Var(s')
FVξL([ ξ [ s' ] ∣ s M,N ])= ( FVξL(M)∖ Var(s))
   FVξR(s)∪ FVξR( ξ [ s' ] ) si ξ∉Var(s')
FVξR([ ξ [ s' ] ∣ s M,N ])= ( FVξR(M)∖ Var(s))
   FVξR(s)∪ FVξR( ξ [ s' ] ) si ξ∉Var(s')
FVξK(id)= FVξK(K)=
FVξK(( x/M ).s)= FVξK(M)∪ FVξK(s)
FVξK(( ξP/K ).s)= FVξK(s)
FVξK(st)=( FVξK(s)∖ Var(t))∪ FVξK(t)
FVξK(ξ)={ξ}
FVξK( ξ [ s ] )= ({ξ}∖ Var(s))∪ FVξK(s)


Dans la précédente définition nous supposons que
ψ≠ξ.

Ainsi nous avons:

FVξL(λ [ξ ∣ x,y ]. [ξ ∣ x,t ])=
FVξLy. [ξ ∣ x,t ])={x}
FVξK( x [ ( ξx/L ).id ] )=
FVξL([ξ ∣ y,x ])={y}
Remarque 13   Étant donné une pré-expression e, une variable de choix ξ et une constante de choix K, les deux résultats suivants sont vrais:
 Preuve. La preuve est immédiate par induction sur l'expression e.

Définissons maintenant formellement la notion de pré-expression acceptable. Le rôle de la notion de pré-expression acceptable est de capturer les pré-expressions pouvant libérer des variables lors de leur réduction. Intuitivement, le pré-terme λ [ξ ∣ x,y ]. [ξ ∣ y,x ] n'est pas acceptable.

Définition 14 (pré-expressions acceptables)   Nous définissons l'ensemble des pré-expressions acceptables comme étant le plus petit ensemble de pré-expressions contenant les variables usuelles, les constantes de choix, la constante id et clos par sous expression tel que:
Acc( ψ [ s ] ) si ∀ ( ξQ/K )∈ s, ψ ∉Var(Q) 
Acc( M [ s ] ) si ∀ ( ξQ/K )∈ s FVξK(M)∩ Var(Q)=∅ 
Acc(st) si ∀ ( ξQ/K )∈ t FVξK(s)∩ Var(Q)=∅ 
AccP. M) si ∀[ξQ1,Q2 ]∈ P,{
          FVξR(M)⋂ Var(Q1)=
          FVξL(M)⋂ Var(Q2)=
 
Acc([ξ ∣ s M,N ]) si Acc( M [ s ] ) et Acc( N [ s ] ) 
Acc([ ξ [ t ] ∣ s M,N ]) si ( ξQ/K )∉tAcc( M [ s ] ) et Acc( N [ s ] ) et Acc( ξ [ t ] ) 
Acc([ ξ [ t ] ∣ s M,N ]) si ( ξQ/L )∈ tAcc( M [ s ] ) et Acc( ξ [ t ] ) 
Acc([ ξ [ t ] ∣ s M,N ]) si ( ξQ/R )∈ tAcc( N [ s ] ) et Acc( ξ [ t ] ) 
Acc([L s M,N ]) si Acc( M [ s ] ) 
Acc([R s M,N ]) si Acc( N [ s ] ) 

Ainsi le pré-terme λ [ξ ∣ x,y ]. [ψ ∣ x,t ] n'est pas acceptable par définition de Acc( ) pour les abstractions . En effet, FVξR([ψ ∣ x,t ])={x,t,ψ} et Var(x)={x}.

Définition 15   Nous utiliserons appellerons désormais termes (resp. substitution, terme de choix et expression) un pré-terme (resp. une pré-substitution, un pré-terme de choix ou une pré-expression) acceptable.
Remarque 16   Les pré-termes [ξM1,M2 ] [ s ] et [ ξ [ t1 ] ∣ t2 M1,M2 ] [ s ] ne sont des termes que si et seulement si ∀ ( ψP/K )∈ s, ξ∉Var(P) (ou si ξ∈Var(t1) dans le second cas).

Nous allons maintenant démontrer que les variables libres (localisées) et les termes acceptables sont préservés par réduction.

4.1.5  Correction de λ Pw

Nous allons tout d'abord démontrer que les variables libres localisées sont préservées par réduction mais avant toute chose nous remarquons que:

Remarque 17   Si s et t sont deux pré-substitutions telles que s→  t alors Var(s)=Var(t).
Lemme 18 (Préservation des variables libres localisées)   Soient e et e' deux pré-expressions telles que e→  e'. Si e est une expression, ξ est une variable de choix et K une constante de choix alors:
    FVξK(e')⊂  FVξK(e)
 Preuve. Tout d'abord nous remarquons que, par α-conversion, nous pouvons supposer que ξ n'apparaît pas liée dans e. La preuve est alors faite par induction sur la structure des expressions et par cas sur la règle de réduction utilisée.

De ce lemme et de la remarque 13, nous déduisons la propriété fondamentale:

Corollaire 19   Si e1 et e2 sont deux pré-expressions telles que e1 soit acceptable et e1→  e2, alors FV(e2)⊂ FV(e1).
 Preuve. Il suffit de prendre une variable de choix ξ n'appartenant ni à e1 ni à e2.

Afin de pouvoir ne travailler que sur des pré-expressions acceptables, il nous faut prouver la stabilité de cet ensemble par réduction.

Lemme 20 (Correction de la notion d'acceptabilité)   Si e est une expression telle que e→  e ', alors e ' est elle-même une expression.
 Preuve. Nous allons démontrer ce lemme en raisonnant par induction sur la structure de e et par cas sur la règle utilisée pour atteindre e '. Nous ne traiterons dans cette preuve ni les cas où e ne possède pas de réduit, ni les cas où la réduction ne s'effectue pas en tête d'expression. Dans ce dernier cas, nous obtenons le résultat par hypothèse d'induction et par le lemme 18.

Ce dernier lemme conclut notre définition de λ Pw. Nous n'utiliserons désormais que des expressions.

Nous allons dans la section suivante montrer que λ Pw est un calcul confluent sur l'ensemble des expressions.

4.2  Confluence de λ Pw

Cette section est consacrée à l'étude de la confluence de λ Pw. Nous allons utiliser pour cela une méthode utilisée pour la confluence de λσ w [CHL96]. Dans un premier temps, nous allons montrer que la relation →es  est confluente et fortement normalisante. Nous définirons alors une nouvelle relation →λ Pwi  agissant dans l'ensemble des formes normales de →es . Puis nous montrerons la confluence de →λ Pwi . Nous conclurons enfin à la confluence de →λ Pw  par un lemme technique.

4.2.1  Confluence et terminaison de →es 

La preuve de forte normalisation de →es  est une preuve par interprétation. Cette interprétation nous a été fournie par CiME [CMMU00].

Lemme 21 (Forte normalisation de es )   La relation es  est fortement normalisante sur l'ensemble des expressions du calcul λ Pw.
 Preuve. Il suffit de remarquer que si nous considérons la fonction I() définie ci-dessous et que nous considérons l'ordre strict >es sur les termes défini par t1>es t2I(t1)>I(t2) alors cet ordre est strictement décroissant sur les règles de →es 
I( L)=0
I( R)=0
I( id)=1
I( x)=0
I( ξ)=0
I( ( x/M ).s)=I(M) + I(s) + 1
I( ( ξ/K ).s)=I(s) + 1
I( st)=I(s)* I(t) + I(t) + 3*I(s) + 1
I( ξ [ s ] )=I(s)
I( M [ s ] )=I(M)*I(s) + I(s) + 3*I(M) + 1
I( inl (M))=I(M) + 1
I( inr (M))=I(M) + 1
I( ⟨ M1, M2 ⟩)=I(M1) + I(M2) + 1
I( M1 M2)=I(M1) + I(M2) + 1
I( [ξ ∣ M1,M2 ])=I(M1) + I(M2) + 2
 
I( [Ξ ∣ s M1,M2 ])=
      I(s)*(I(M1)    + I(M2) + 2) + 3*I(M2)
I(Ξ) + 3*I(M1) + 5
    
I()

Ayant désormais montré que →es  est fortement normalisable, nous allons maintenant nous attacher à démontrer que →es  est une relation confluente. Nous aurons pour cela besoin du lemme suivant:

Lemme 22   Soient s et t deux substitutions et ξ une variable de choix.
  1. Si ξ [ s ] —→*es ξ alors ξ [ st ] —→*es  ξ [ t ] .
  2. Si ξ [ s ] —→*es K alors ξ [ st ] —→*es K.
 Preuve. Nous prouvons ces deux propositions par induction sur la structure de s puis par cas sur ses réduits en un pas.

Grâce au lemme 22, nous sommes en mesure de démontrer la confluence locale de →es .

Lemme 23   La relation es  est localement confluente.
 Preuve. Toutes les paires critiques de →es  sont joignables en un ou deux pas sauf celle obtenue par l'application au terme M= [ξ ∣ M1,M2 ] [ s ] [ t ] d'une part de la règle (Freeze) conduisant au terme [ ξ [ s ] ∣ s M1,M2 ] [ t ] et d'autre part de la règle (clos) conduisant au terme [ξ ∣ M1,M2 ] [ st ] . Nous allons raisonner par cas:
Théorème 24   La relation de réduction es  est fortement normalisable et confluente.
 Preuve. La preuve de ce théorème est déductible des lemmes 21,  22 et du lemme de Newman (lemme 11).
Notation 25   Nous utiliserons désormais la notation ES(e) pour dénoter l'unique forme normale pour la relation es  (ou es-forme normale) de l'expression e.
Remarque 26   Nous remarquons que:

Nous allons maintenant définir la relation →λ Pwi  et montrer que cette relation est confluente.

4.2.2  Définition et confluence de la relation →λ Pwi 

Définition 27   Nous définissons la relation λ Pwi  sur les es-formes normales comme suit. Soient e1 et e2 deux es-formes normales, on dit que e1 se réduit vers e2 par la réduction λ Pwi  si et seulement si il existe une expression e1' telle que: e1P  e1' et ES(e1')=e2.

On peut considérer la relation →λ Pwi  comme une relation de réécriture fondée sur λ Pw mais traitant de manière implicite le mécanisme de la substitution.

Ainsi par exemple, nous aurons la séquence de réduction suivante dans le λ Pw-calcul (si N est en es-forme normale):

x. x) [ id ] Nλ Pw  x [ ( x/N ).id ]

et donc la séquence suivante dans le λ Pwi-calcul:

x. x) [ id ] Nλ Pwi N

puisque ES( x [ ( x/N ).id ] )=N.

Pour démontrer la propriété de confluence pour →λ Pwi , nous allons utiliser une technique due à Tait et Martin-Löf [Bar84]. Pour cela nous allons tout d'abord définir une nouvelle relation >>>.

Nous montrerons alors que →λ Pwi ⊂>>> et que >>>*⊂—→*λ Pwi . Puis nous montrerons que la relation >>>* possède la propriété du diamant (c.f. définition 9) avant de déduire des points précédents que la relation →λ Pwi  est confluente.

Définition 28   La relation >>> est définie sur les es-formes normales comme étant la plus petite relation réflexive telle que:
M >>> M'     N>>> N'
λ P. M N >>>  (λ P. M) [ id ] N
  
M>>> M'     N1>>> N1'     N2>>> N2'     s>>> s'
(λ ⟨ P1, P2 ⟩. M) [ s ] ⟨ N1, N2 ⟩ >>>  ( (λ P1. λ P2. M') [ s' ] N1') N2'
  
M>>> M'     N>>> N'     s>>> s'
(λ @(P1,P2). M) [ s ] N >>>  ( (λ P1. λ P2. M') [ s' ] N') N'
  
M>>> M'     N>>> N'     s>>> s'
(λ [ξP1,P2 ]. M) [ s ] inl (N) >>>  (λ P1. M') [ ( ξP2/L ).s' ] N'
  
M>>> M'     N>>> N'     s>>> s'
(λ [ξP1,P2 ]. M) [ s ] inr (N) >>>  (λ P2. M') [ ( ξP1/R ).s' ] N'
  
M>>> M'     N>>> N'     s>>> s'
x. M) [ s ] N >>> ES( M' [ ( x/N' ).s' ] )
  
M>>> M'     N>>> N'     s>>> s'
_ . M) [ s ] N >>> ES( M' [ s' ] )
  
M>>> M'     N>>> N'
M, N ⟩>>>⟨ M', N' ⟩
  
M>>> M'
inl(M)>>>inl(M')
  
M>>> M'
inr(M)>>>inr(M')
  
M>>> M'     N>>> N'
[ξM,N ]>>>[ξM',N' ]
  
M>>> M'     s>>> s'
( x/M ).s>>>( x/M' ).s'
  
s>>> s'
( ξP/K ).s>>>( ξP/K ).s'
  
Remarque 29   Nous remarquons que si s et s' sont deux substitutions telles que s>>> s', alors pour toute variable de choix ξ, ES( ξ [ s ] )=ES( ξ [ s' ] ).

Cette remarque étant faite, nous pouvons démontrer:

Lemme 30 (Compatibilité entre >>> et ES)   Soient s et s' deux substitutions telles que s>>> s'.
 Preuve. Nous prouvons ces deux propositions en même temps par induction sur l'ordre lexicographique induit par la structure M ou t pour sa première composante et par la structure de s pour sa seconde composante. Nous remarquons de plus que, par définition de >>>, les expressions M, M', t, t', s et s' sont des es-formes normales et donc ces six expressions sont égales à leur es-formes normales.

Grâce au lemme précédent, nous sommes en mesure de démontrer que >>> possède la propriété du diamant.

Lemme 31   Le système de réécriture >>> possède la propriété de forte confluence où de manière équivalente:

Si les expressions e, e1 et e2 sont de es-formes normales telles que: e>>> e1 et e>>> e2, alors il existe une expression e ' telle que e1>>> e ' et e2>>> e '.

 Preuve. La preuve de ce lemme est obtenue par induction sur la structure de l'expression e. Nous démontrons ici uniquement les deux cas qui ne sont pas évidents pas hypothèse d'induction.

Nous déduisons de ce dernier lemme et du lemme de Newman 11 la confluence de la relation >>>.

Corollaire 32   La relation >>> est confluente.

D'où nous déduisons la confluence de →λ Pwi .

Lemme 33   La relation de réduction λ Pwi  est confluente.
 Preuve. Nous remarquons tout d'abord que nous avons trivialement →λ Pwi ⊆>>>. De même nous avons >>>⊂—→*λ Pwi  et donc —→*λ Pwi  =>>>* . Nous obtenons alors le résultat par le corollaire 32.

4.2.3  Confluence de →λ Pw 

Afin de pouvoir déduire de ce qui précède la confluence de →λ Pw , nous avons besoin d'un certain nombre de lemmes techniques.

Lemme 34   Soient e et e ' deux expressions. Si eP  e ' alors ES(e)—→*λ Pwi ES(e ').
 Preuve. Nous raisonnons par induction sur (νσ(e),e) où νσ(e) est la longueur de la plus longue dérivation de e par la relation →es .
Remarque 35   Soient e1 et e2 deux es-formes normales. Si e1λ Pwi  e2, alors e1—→*λ Pw  e2.
Théorème 36 (Confluence de λ Pw )   La relation λ Pw  est confluente.
 Preuve. Nous utilisons pour faire cette démonstration le lemme 13 dans lequel nous posons: Nous avons bien R= R1 R2. De plus par le théorème 24, R1 est confluente et fortement normalisable. Nous obtenons R'⊂ R* par le lemme 34 et le point (2.b) par la remarque 35.

4.3  Un système de types pour λ Pw

Nous allons consacrer cette section à la définition du système de types associé au λ Pw-calcul et à la preuve de la propriété de préservation de types par réduction. La définition d'un système de types pour un formalisme répond à deux attentes. La première de ces attentes est la cohérence des données. Si par exemple, nous avons spécifié qu'une fonction attend en argument des entiers naturels, le système de types nous garantit dès la compilation que les arguments passés à cette fonction seront bien des entiers et non des chaînes de caractères ou des réels. Sur un plan plus théorique, les systèmes de types sont utilisés dans les formalismes dérivant du λ-calcul afin d'identifier un fragment décidable de leur ensemble d'expressions qui possède la propriété de normalisation forte. Nous utiliserons quant à nous le système de types de cette section à cette dernière fin. Le système de types donné ici est un système de types simples. Il dérive de ceux des prédécesseurs de λ Pw [KPT96, CK99a]. Ces calculs fondaient leur système de types sur un isomorphisme de Curry-Howard fondé sur le calcul des séquents de Gentzen [Gen69] pour la logique intuitionniste.

4.3.1  Définition du système de dérivation de type

Nous allons dans cette section être amenés à restreindre l'ensemble des motifs du calculs (et donc des expressions) à l'ensemble des motifs linéaires compatibles avec un type A. Le rôle de cet ensemble est de nous assurer par exemple qu'un motif pair est bien associé à un type produit. La linéarité des motifs nous permettra d'éviter les motifs compatible avec un type mais mal formés tel que ⟨ x, x ⟩ qui est a priori compatible avec le type A1× A2 mais mal formé pour ce type.

Définition 37 (Motif compatible)   L'ensemble des motifs compatibles avec un type A noté COMP(A) est défini comme étant le plus petit ensemble de motifs linéaires (Définition 3) vérifiant:
_ COMP(A)
x COMP(A)pour toute variable x
@(P,Q) COMP(A)si P COMP(A) et Q COMP(A)
P, Q COMP(B× C)si P COMP(B) et Q COMP(C)
[ξP,Q ] COMP(B+ C)si P COMP(B) et Q COMP(C)

A titre d'exemple, le motif ⟨ x, y ⟩ est linéaire mais n'est pas compatible avec le type A + B.

Nous allons maintenant définir les environnements de types.

Définition 38 (Environnement de types)   Un environnement de types est une paire Φ ;Γ telle que:

Un environnement de types est dit linéaire si toute variable (usuelle ou de choix) n'apparaît au plus qu'une fois dans cet environnement.

Un environnement de types Φ;Γ est dit compatible si et seulement si pour tout couple P : A dans Γ, P COMP(A).

Nous étendons de manière naturelle les notions de variables liées par un motif (Definition 8) aux environnements de types.

Nous allons maintenant donner les règles de dérivation de type pour le système λ Pw.

Définition 39 (Règle de dérivation de type)   Les règles de dérivation de type du λ Pw-calcul sont données ci-dessous. Ces règles utilisent les notations déjà introduites au chapitre 3 d'une part et une nouvelle notation   ↝ qui nous servira à informellement à savoir si un choix a été fait sur une variable de choix ξ.
Les termes
 
 
Φ;x1 : A1,…,xn : Anxi : Ai
   (Proj1)
 
Φ;Γ⊢ M : A
Φ;Γ⊢ inlB(M) : A+B
   (+Right1)
 
Φ;Γ⊢ M : B
Φ;Γ⊢ inrA(M) : A+B
   (+Right2)
 
           Φ;Γ⊢   ξ  ↝    ξ
           Φ;P :   B,Γ⊢ M :  A
           Φ;Q :  C,Γ⊢ N :  A
Φ;[ξP,Q ] : B+C,Γ⊢ [ξM,N ] : A
   (Case1)
 
Φ;Γ⊢ ξ ↝ K     Φ;Γ⊢ M : A     Φ;Γ⊢ N : A
Φ;Γ⊢ [ξM,N ] : A
   (Case2)
 
           Φ;Γ⊢Ξ  ↝  ξ
           Φ;P :    A,Γ⊢  M [ s ]  :    C
Φ;Q :  B,Γ⊢  N [ s ]  :   C
Φ;[ξP,Q ] : A+B,Γ⊢[Ξ ∣ s M,N ] : C
   (Frozencase1)
 
           Φ;Γ⊢Ξ  ↝  K
           Φ;Γ⊢  M [ s ]  :                          A
           Φ;Γ⊢  N [ s ]  :         A
Φ;Γ⊢[Ξ ∣ s M,N ] : A
   (Frozencase2)
 
Φ;P : A, Q : B,Γ⊢ M : C
Φ;⟨ P, Q ⟩ : A× B,Γ⊢ M : C
   (× Left)
 
Φ;Γ⊢ M : A    Φ;Γ⊢ N : B
Φ;Γ⊢⟨ M, N ⟩ : A× B
   (× Right)
 
Φ;P : A,Γ⊢ M : B
Φ;Γ⊢λ P : A. M : AB
   (→ Right)
 
Φ;Γ⊢ M : AB     Φ;Γ⊢ N : A
Φ;Γ⊢ ( M N) : B
   (App)
 
Φ;P : A,Q : A,Γ⊢ M : B
Φ;@(P,Q) : A,Γ⊢ M : B
   (Layered)
 
Φ;Γ⊢ M : B
Φ;P : A,Γ⊢ M : B
   (Wildcard)
 
 
Les substitutions
 
 
Φ;Γ⊢ id ▷ Φ;Γ
   (axiom)
 
Φ;Γ⊢ t ▷ Φ';Γ '    Φ';Γ '⊢ s ▷ Φ'';Γ ''
Φ;Γ⊢st ▷ Φ'';Γ ''
   (concat)
 
Φ;Γ⊢ M : A     Φ;Γ⊢ s ▷ Φ';Γ '
Φ;Γ⊢( x/M ).s ▷ Φ';x:A,Γ '
   (cons1)
 
Φ;Γ⊢ s ▷ Φ';Γ '
Φ;Γ⊢( ξP : A/K ).s ▷ ξ : K,Φ';P : A,Γ '
   (cons2)
 
Φ;Γ⊢ s ▷ Φ';Γ '    Φ';Γ '⊢ M : A
Φ;Γ⊢ M [ s ] : A
   (term)
 
 
Les termes de choix
 
 
ξ1 : K1,…,ξm : Km;Γ ⊢ ξjKj
   (Proj2)
 
si i,ξ≠ξi
ξ1 : K1,…,ξm : Km;Γ ⊢ξ ↝ ξ
   (Nproj)
 
 
Φ;Γ⊢LL
   (L)
 
 
Φ;Γ⊢RR
   (R)
 
Φ;Γ⊢ s ▷ Φ';Γ '    Φ';Γ'⊢ ξ ↝ T
Φ;Γ⊢ ξ [ s ] ↝ T
   (sum)

Enfin nous dirons que le terme M (resp. la substitution s ou le terme de choix Ξ) possède le type A (resp. le co-environnement Φ';Γ' ou le type de choix T) dans l'environnement Φ;Γ si et seulement si il existe une dérivation de types se terminant par Φ;Γ⊢ M : A (resp. Φ;Γ⊢ s ▷ Φ';Γ' ou Φ;Γ⊢ Ξ ↝ T). Nous dirons que le terme M (resp. la substitution s ou le terme de choix Ξ) est bien typé dans l'environnement Φ;Γ si et seulement si il existe un type A (resp. un co-environnement Φ';Γ' ou un type de choix T) tel que M possède le type A (resp. s possède le co-environnement Φ';Γ', Ξ possède le type de choix T) dans Φ;Γ. Nous ferons dans la suite un abus de notation en notant Φ;Γ⊢ M : A (resp. Φ;Γ⊢ s ▷ Φ';Γ' ou Φ;Γ⊢ Ξ ↝ T) pour dénoter le fait que le terme M (resp. la substitution s ou le terme de choix Ξ) possède le type A (resp. le co-environnement Φ';Γ' ou le type de choix T) dans l'environnement Φ;Γ.

De même, il nous arrivera, dans la suite de ce chapitre, d'écrire qu'une expression est bien typée dans un environnement de types pour exprimer le fait que cette expression possède un type dans cet environnement.

Nous commençons par remarquer que:

Remarque 40   Si une substitution s est bien typée dans un environnement Φ ;Γ , alors pour tout co-environnement Φ '' de s dans Φ ;Γ on a Φ⊂Φ' et Γ⊂Γ'.

Nous remarquons aussi que si e est une expression bien typée dans Φ;Γ alors toutes ses variables libres apparaissent dans Φ;Γ.

Le lemme suivant est utilisé dans la preuve de préservation de types par réduction. Il affirme que si une expression est bien typée dans un environnement alors cette expression est aussi bien typée dans tout environnement "raisonnable" contenant cet environnement.

Lemme 41 (Affaiblissement pour les environnements)  
 Preuve. Nous prouvons ce lemme en raisonnant par induction sur l'ordre lexicographique dont la première composante est la taille ν de l'environnement de type Ψ;Δ et la seconde composante est la hauteur h de la preuve connue de chacun des jugements de typage. Enfin nous raisonnons par cas sur la dernière règle utilisée.

La remarque suivante est utilisée dans la preuve de préservation de types par réduction.

Remarque 42   Si s est une substitution telle que Φ;Γ⊢ s ▷ Φ';[ξP,Q ] : A+B,Γ' alors s'il existe un terme M=[ξM1,M2 ] ou un terme M=[ ξ [ u ] ∣ t M1,M2 ] tel que ξ∉ BV(u) et M [ s ] soit acceptable alors [ξP,Q ] : A+B ∈ Γ.
 Preuve. Supposons que [ξ ∣ P,Q ] : A+B ∉ Γ, nous remarquons alors par induction sur la structure de s qu' il doit exister une variable de choix ψ et une constante de choix K tels que ( ψ[ξ ∣ P,Q ]/K )∈ s, nous concluons en utilisant la remarque 16.

4.3.2  Préservation de types par réduction

Nous allons maintenant nous attacher à la démonstration de la préservation de types par réduction. Cette démonstration repose sur deux points clés. La possibilité de "déstructurer" des environnements de types d'une part et celle de "choisir" la forme d'une dérivation de typage (sous réserve de l'existance d'une dérivation) d'autre part.

Définition 43 (Déstructuration de motifs)   Étant donné un motif P compatible avec le type A nous définissons sa déstructuration, notée Des(P : A), par induction sur P comme suit:
  
    Des( _  :  A)  =   _  :  A
    Des(x :  A)  =  x :  A
    Des(
ξ ∣  P,Q  
 :  A+B)
  =  

ξ ∣  P,Q  
 :  A+B
    Des(⟨ PQ ⟩ :  A× B)  =  Des(P :  A)Des(Q :  B)
    Des(@(P,Q) :  A)  =  Des(P :  A)Des(Q :  A)
    =  

Cette notion est étendue de manière naturelle aux environnements de motif par Des(P1 : A1,…,Pn : An)=Des(P1 : A1),…,Des(Pn : An).

Comme nous le souhaitions plus haut, le système de types associé à λ Pw satisfait la propriété de préservation de types par déstructuration.

Lemme 44 (Préservation de type par déstructuration)   Soient Φ un environnement de variable de choix, Γ un environnement de motif et Γ1Γ2 une partition de Γ (en deux sous ensembles disjoints). Les propriétés suivantes sont satisfaites:
 Preuve. Nous prouvons les trois propriétés ensemble. Nous commençons par la preuve de l'implication directe puis nous donnerons la preuve de l'implication réciproque.

La preuve de l'implication directe est obtenue par induction sur la hauteur h de la preuve P déjà connue, puis par cas sur la dernière règle de typage utilisée.

La partie si de la preuve est obtenue une fois de plus par induction sur la hauteur de la preuve connue des jugements et en remarquant qu'il suffit dans ces preuves d'appliquer les règles (× Left), (Layered) et (Wildcard) pour "reconstruire" Γ2 à partir de Des2).


Corollaire 45   Soient Φ ;Γ un environnement de type. Les propriétés suivantes sont satisfaites:

La preuve de préservation de types par réduction nécessite aussi de pouvoir, dans certains cas, inverser deux applications de règles dans une preuve afin de travailler sur une "forme canonique" de règle.

Lemme 46   Soient R et W deux règles de typage appartenant respectivement aux ensembles
  
    {(× Right),  (→ Right),  (App),  (+Right1),  (+Right2)}
    et
    {(× Left), (Layered), (Wildcard) } 
Si le jugement Φ;Γ⊢ M : A possède une preuve P se terminant par l'application de la règle R puis l'application de la règle W, il existe alors une preuve du même jugement se terminant par une application de la règle W puis de la règle R.
 Preuve. La preuve de ce lemme est obtenue grâce à un raisonnement par cas sur W puis sur R.

Nous allons maintenant démontrer que nous pouvons choisir la dernière règle utilisée dans une preuve de jugement de type.

Lemme 47   Soit Φ;Γ un environnement de types. Si Φ;Γ⊢ M1 M2 : A (resp. Φ;Γ⊢λ P : A. M : AB, Φ;Γ⊢⟨ M1, M2 ⟩ : A× B, Φ;Γ⊢inlB(M) : A+B ou Φ;Γ⊢inrA(M) : A+B) possède une preuve P alors il existe une preuve de ce jugement se terminant par la règle (App) (resp. (→ Right), Right), (+Right1) ou (+Right2)).
 Preuve. Nous ne prouvons ici que le cas Φ;Γ⊢ M1 M2 : A. Les autres cas sont similaires. Nous raisonnons par induction sur la hauteur h de la preuve P.
Lemme 48   Soit Φ;Γ un environnement de type. Si Φ;Γ⊢ [ξM1,M2 ] : A (resp. Φ;Γ⊢ [Ξ ∣ s M1,M2 ] : A ) est prouvable alors Φ;Des(Γ)⊢ [ξM1,M2 ] : A possède une preuve se terminant par l'application de l'une des règles (Case1) ou (Case2) (resp. (Frozencase1) ou (Frozencase2)).
 Preuve. Nous ne donnons ici la preuve que du cas où Φ;Γ⊢ [ξ ∣ M1,M2 ] : A est prouvable, l'autre cas étant similaire.

Nous commençons par remarquer que par le corollaire 45, nous avons une preuve P de Φ;Des(Γ)⊢ [ξ ∣ M1,M2 ] : A. Nous raisonnons alors par récurrence sur la hauteur h de la preuve P.


Lemme 49   Soit Φ;Γ un environnement de types. Si Φ;Γ⊢ ( x/M ).s ▷ Φ '' (resp. Φ;Γ⊢ ( ξP/A ).s ▷ Φ '' ou Φ;Γ⊢ st ▷ Φ '') est prouvable alors il existe une preuve de Φ;Des(Γ)⊢( x/M ).s (resp. Φ;Des(Γ)⊢ ( ξP/A ).s ou Φ;Des(Γ)⊢ st) se terminant par l'application de la règle (cons1) (resp. (cons2) ou (concat)).
 Preuve. Une seule règle est applicable à ces termes.
Lemme 50   Soit Φ;Γ un environnement de types. Si Φ;Γ⊢ M [ s ] : A est prouvable alors il existe une preuve de Φ;Des(Γ)⊢ M [ s ] : A se terminant par l'application de la règle (term).
 Preuve. c.f. lemme 48.

Nous obtenons aussi par une induction triviale:

Remarque 51   Si Φ;Γ⊢ Ξ ↝ ξ alors ξ n'apparaît pas dans Φ;Γ.
Lemme 52   Si Φ;Γ⊢ Ξ ↝ ξ est prouvable alors ξ : K,Φ;Γ⊢ Ξ ↝ K est aussi prouvable.
 Preuve. Nous raisonnons par induction sur Ξ.

Afin de pouvoir montrer la propriété de préservation de types par réduction dans le cas d'une des règles de réduction (Abs_left) ou (Abs_right), nous avons besoin des résultats suivants.

Lemme 53   Soit K une constante de choix.
 Preuve. Nous ne prouvons ici que le cas où K=L, l'autre cas étant similaire.

Nous raisonnons par induction sur la structure de l'expression à typer.


Lemme 54  
 Preuve. Par induction sur la hauteur de la preuve déjà connue.
Lemme 55  
 Preuve. Nous raisonnons par induction sur M.

Cette longue suite de lemmes techniques étant démontrée, nous sommes maintenant en mesure de démontrer la propriété principale de cette section: la préservation de types par réduction.

Théorème 56 (Préservation de types par réduction)   Le calcul λ Pw possède la propriété de préservation de type par réduction ou plus formellement:
 Preuve. Nous raisonnons par induction sur la structure des expressions. Nous ne présenterons dans cette preuve que les cas où la réduction s'effectue en tête de l'expression. Les cas où la réduction s'effectue à l'intérieur de l'expression étant immédiat par hypothèse d'induction.

Nous avons donc démontré la propriété de préservation de types par réduction. Nous allons maintenant nous servir de cette propriété pour démontrer la propriété de normalisation forte pour les expressions bien typées.

4.4  Normalisation forte pour λ Pw

4.4.1  Préliminaires

Cette section est consacrée à la démonstration de la normalisation forte des expressions bien typées du calcul λ Pw. Nous allons pour cela utiliser une technique de preuve due à Ritter [Rit94]. Cette technique est fondée sur celle bien connue de la réductibilité. L'originalité de la preuve de Ritter est de remplacer l'étude de la normalisation forte du calcul par l'étude de celle d'un second calcul dont les expressions sont celles du premier modulo une théorie équationnelle. Notre démarche peut se résumer comme suit:

Mais avant toute chose nous allons définir les substitutions de choix qui sont les substitutions qui ne lient pas de variables usuelles.

Définition 57 (Substitution de choix)   L'ensemble SC des substitutions de choix est défini comme étant le plus petit ensemble de substitutions stable par concaténation et tel que:

Les substitutions de choix sont, en fait, une généralisation des substitutions inopérantes (définition 12) au cas du λ Pw-calcul.

Il est évident que:

Remarque 58  

Nous avons de plus:

Lemme 59   Soit s une substitution telle que Ψ;Δ⊢ s ▷ Φ;∅ alors:
 Preuve. Le premier point est évident grâce à la remarque 40. Pour le second point, nous raisonnons par contradiction. Supposons que s ne soit pas une substitution de choix. Alors il est évident que Δ≠∅.

Nous allons maintenant donner la définition du calcul λ Pw/.

4.4.2  Définition de λ Pw/

Nous définissons la relation de congruence ≡ sur les expressions du calcul λ Pw comme étant la plus petite congruence telle que:

 
     ( M N) [ s ]    M [ s ]    N [ s ] 
       M [ s ]  [ t ]   M [ s ∘ t ] 
   (s ∘ t) ∘ us ∘ (t ∘ u)

Nous définissons alors l'ensemble des expressions du λ Pw/-calcul comme étant l'ensemble des classes d'équivalences de la relation ≡. Nous définissons alors la relation de réduction →λ Pw/  sur les expressions du λ Pw/-calcul comme suit:

Soit e1 et e2 deux expressions du λ Pw/-calcul, nous avons e1λ Pw/  e2 si et seulement si il existe deux λ Pw-expressions e1' et e2' telles que: e1e1'→λ Pw  e2'≡ e2

Nous remarquons que la définition de la relation ≡ étant fondée sur des règles de réduction de →λ Pw , le calcul λ Pw/ possède lui aussi la propriété de préservation de types par réduction.

Nous allons maintenant définir la notion d'expression réductible et étudier cette notion.

4.4.3  Expression du λ Pw/-calcul réductible

Nous allons dans un premier temps définir la notion, vitale pour la suite, de terme et de substitution neutre. Informellement, les termes et substitutions neutres sont les termes et les substitutions qui, une fois appliqués ou concaténés à une expression ne créent pas de radical.

Définition 60 (Termes et substitutions neutres)  
Notation 61   Dans toute la suite de cette section nous utiliserons les notations suivantes:

Enfin, comme au chapitre 3, nous utiliserons la notation ν(e) pour dénoter la longueur de la plus longue séquence de réductions issue de e.

Nous définissons maintenant les ensembles d'expressions réductibles. Informellement, nous voulons avoir:

Définition 62 (Termes et substitutions réductibles)  

Dans la suite de cette section, il nous arrivera parfois d'écrire qu'un terme (ou une substitution) est réductible sans préciser de type ni d'environnement de types quand ceux-ci sont évidents par le contexte ou quand ils ne sont pas nécessaires à la démonstration.

Les termes réductibles satisfont les propriétés suivantes:

Lemme 63   Soit A un type, nous avons:
  1. Si M∈[[ A]]Φ ;Γ alors M est fortement normalisable.
  2. Si Φ ;Γ ⊢( x M1Mn) : A et si les termes M1,…,Mn sont fortement normalisables alors ( x M1Mn)∈[[ A]]Φ ;Γ .
  3. Si M∈[[ A]]Φ ;Γ et si M→  M' alors M'∈[[ A]]Φ ;Γ .
  4. Si M est un terme neutre tel que Φ ;Γ ⊢ M : A et tel que tous ses réduits en un pas sont dans [[ A]]Φ ;Γ , alors M∈[[ A]]Φ ;Γ .
 Preuve. Nous raisonnons par induction sur le type A.

Nous avons aussi la propriété suivante:

Lemme 64   Soit M un terme appartenant à [[ A]]Φ ;Γ alors pour tout environnement de types Ψ;Δ tel que BV(Ψ;Δ)∩ ( BV(Φ ;Γ )∪ FV(M))=∅, M∈[[ A]]ΨΦ;ΔΓ
 Preuve. Nous raisonnons par induction sur le type A.

Nous remarquons aussi que nous avons:

Corollaire 65   Les variables sont réductibles.
 Preuve. C'est le point 2 du lemme 63.

Nous allons maintenant montrer des propriétés analogues pour les substitutions.

Lemme 66   Les propriétés suivantes sont vraies:
  1. Si la substitution s appartient à l'ensemble [[ Φ ;Γ ]]Ψ;Δ, alors s est fortement normalisable.
  2. Si la substitution s appartient à l'ensemble [[ Φ ;Γ ]]Ψ;Δ, et si s→  s', alors s' appartient aussi à cet ensemble.
  3. Si s est une substitution neutre telle que Ψ;Δ⊢ s ▷ Φ ;Γ et telle que tous ses réduits en un pas appartiennent à l'ensemble [[ Φ ;Γ ]]Ψ;Δ, alors s appartient aussi à cet ensemble.
 Preuve. Nous raisonnons par cas sur Γ.

Nous avons aussi la propriété suivante:

Lemme 67   Soit s une substitution appartenant à [[ Φ ;Γ ]]Ψ;Δ alors pour tout environnement de types Ψ';Δ' tel que BV(Ψ';Δ')∩ ( BV(Φ ;Γ )∪ FV(s))=∅, on a:
   s∈[[ Ψ'Φ;Δ'Γ]]ΨΨ';ΔΔ'
 Preuve. La preuve de ce lemme est immédiate par les lemmes 41 et 63.

Nous remarquons aussi que:

Corollaire 68   Pour tout environnement de types compatible et linéaire Φ ;Γ , on a: id∈[[ Φ ;Γ ]]Φ ;Γ
Lemme 69   Soit s une substitution fortement normalisable alors pour toute variable de choix ξ, le terme de choix ξ [ s ] est fortement normalisable.
 Preuve. Il nous suffit de montrer que tous les réduits en un par de ξ [ s ] sont fortement normalisable. La preuve est alors évidente par récurrence ν(s).

Nous allons maintenant donner des critères permettant de déterminer si une expression est ou non réductible.

Lemme 70   Soient M un terme appartenant à [[ A]]Φ ;Γ et s une substitution appartenant à [[ Ψ;Δ]]Φ ;Γ . Si x est une variable usuelle fraîche, alors t=( x/M ).s∈[[ Ψ;x : A,Δ]]Φ;x : A.
 Preuve. Nous commençons par remarquer que nous avons bien Φ;x : A,Γ⊢ t ▷ Ψ;x : A,Γ. Il nous suffit alors pour conclure de prouver que ∀ (y : B)∈ (x : A,Γ),  y [ t ] ∈[[ B]]Φ;x : A. Soit (y : B)∈ (x : A,Γ). Puisque y [ t ] est un terme neutre et bien typé, il nous suffit, par le point 4 du lemme 63, de montrer que tous ses réduits en un pas sont dans [[ Ψ;x : A,Δ]]Φ;x : A. Nous savons que M et s sont respectivement dans [[ A]]Φ ;Γ et dans [[ Ψ;x : A,Δ]]Φ ;Γ . Donc par le point 1 du lemme 63 et par le point 1 du lemme 66, nous savons que ces deux expressions sont fortement normalisables. Nous allons donc montrer que tous les réduits en un pas de t sont dans [[ Ψ;x : A,Δ]]Φ;x : A par récurrence sur ν(s)+ν(t), puis par cas sur les réduits possibles..
Lemme 71   Soient s et t deux substitutions telles que st∈[[ Ψ;Δ]]Φ ;Γ et soit M un terme tel que M [ t ] ∈[[ A]]Φ ;Γ , alors si x est une variable fraîche, u=(( x/M ).s) ∘ t est dans [[ Ψ;x : A,Δ]]Φ ;Γ .
 Preuve. Nous devons tout d'abord démontrer que Φ ;Γ ⊢ u ▷ [[ Ψ;x : A,Δ]]Φ ;Γ . Or, nous savons que: Φ ;Γ ⊢ st ▷ Ψ;Δ. Par le lemme 49 nous déduisons de ce fait la preuve suivante:
   
Φ ;Γ ⊢ t ▷ Φ ';Γ '     Φ ';Γ '⊢ s ▷ Ψ;Δ
Φ ;Γ ⊢ st ▷ Ψ;Δ
    
De même, nous savons par hypothèse que Φ ;Γ ⊢ M [ t ] : A et donc, grâce au lemme 50, nous déduisons:
   
Φ ;Γ ⊢ t ▷ Φ ';Γ '     Φ ';Γ '⊢ M : A
Φ ;Γ ⊢ M [ t ] : A
    
Ces deux preuves nous permettent de construire la preuve suivante:
   
Φ ;Γ ⊢ t ▷ Φ ';Γ '    
         Φ ';Γ '⊢ M :  A
         Φ ';Γ '⊢ s :  Ψ;Δ
Φ ';Γ '⊢( x/M ).s ▷ Ψ;x : A
  
Φ ;Γ ⊢(( x/M ).s) ∘ t ▷ Ψ;x : A
    

Nous savons donc que Φ ;Γ ⊢(( x/M ).s) ∘ t ▷ Ψ;x : A,Δ. Il nous faut maintenant prouver que (y : B)∈ (x : A,Γ), y [ u ] ∈[[ B]]Φ ;Γ . Soit un tel (y : B). Nous remarquons de plus que le terme y [ u ] est un terme neutre. Par le point 4 du lemme 63, il nous suffit donc de montrer que tous ses réduits en un pas appartiennent à [[ B]]Φ ;Γ . Puisque les expressions M [ t ] et st sont réductibles, elles sont aussi fortement normalisables par les point 1 des lemmes 63 et  66. Nous raisonnons dès lors par récurrence sur la somme Σ=ν( M [ t ] )+ν(st) puis par cas sur les réduits en un pas de y [ u ] .


Lemme 72   Soit s une substitution appartenant à [[ Ψ;Δ]]Φ ;Γ . Soient aussi, ξ une variable de choix fraîche, K une constante de choix, A un type et P un motif linéaire tel que les variables apparaissant dans P soient toutes fraîches. Soit alors la substitution t=( ξP : A/K ).s. Cette substitution appartient à l'ensemble [[ ξ : K,Ψ;P : A,Γ]]Φ ;Γ .
 Preuve. Nous remarquons tout d'abord que Φ ;Γ ⊢ t ▷ ξ : K,Ψ;P : A,Γ. Nous devons alors montrer que ∀ (x : B)∈ξ : K,Ψ;P : A,Γ, x [ t ] ∈[[ B]]Φ ;Γ . Soit un tel (x : B). Nous remarquons que le terme x [ t ] est un terme neutre. Nous en déduisons, par le point 4 du lemme 63, que pour montrer l'appartenance de x [ t ] à [[ B]]Φ ;Γ , il nous suffit de montrer l'appartenance de tous ses réduits en un pas à cet ensemble. Nous déduisons du point 1 du lemme 66 que s est fortement normalisable. Nous raisonnons alors par récurrence sur ν(s) et par cas sur le réduit possible de x [ t ] .
Lemme 73   Soient deux termes M et N. Si M et N sont respectivement dans [[ A]]Φ ;Γ et [[ B]]Φ ;Γ et si x est une variable usuelle fraîche alors:
  1. Le terme UA''=def _ : B. x) [ ( x/M ).id ] N, où x est une variable usuelle fraîche, appartient à [[ A]]Φ ;Γ et le terme UB''=defx : B. x) [ id ] N appartient à [[ B]]Φ ;Γ .
  2. Le terme UA'=def ( (λ x : A. λ _ : B. x) [ id ] M) N appartient à [[ A]]Φ ;Γ et le terme UB'=def ( (λ _ : A. λ x : B. x) [ id ] M) N appartient à [[ B]]Φ ;Γ .
  3. Le terme M, N appartient à [[ A× B]]Φ ;Γ .
 Preuve. Nous remarquons tout d'abord que par le point 1 du lemme 63, M et N sont fortement normalisables. Nous allons alors montrer ces trois assertions par récurrence sur Σ=ν(M)+ν(N).
  1. Nous ne montrons ici que l'appartenance de UA'' à [[ A]]Φ ;Γ , la démonstration de la seconde appartenance étant similaire. Nous remarquons que le terme UA'' est un terme neutre et donc par le point 4 du lemme 63, il nous suffit, pour obtenir le résultat, de montrer que tous les réduits en un pas de UA'' sont dans [[ A]]Φ ;Γ . Or le terme UA'' ne peut se réduire en un pas que vers:
    • (λ _ : B. x) [ ( x/M' ).id ] NM→  M' et dans ce cas nous concluons par hypothèse d'induction.
    • (λ _ : B. x) [ ( x/M ).id ] N' où N→  N' et dans ce cas nous concluons par hypothèse d'induction.
    • x [ ( x/M ).id ] qui appartient bien à [[ A]]Φ ;Γ . En effet, nous savons que M∈[[ A]]Φ ;Γ par hypothèse. De plus par le corollaire 68 nous savons de plus que id∈[[ Φ ;Γ ]]Φ ;Γ . Donc, par le lemme 70, nous obtenons ( x/M ).s∈[[ Φ;x : A,Γ]]Φ ;Γ . Et donc par définition des substitutions réductibles (définition 62) nous avons bien x [ ( x/M ).s ] ∈[[ A]]Φ ;Γ .
  2. Nous ne montrons ici que l'appartenance de UA' à [[ A]]Φ ;Γ , la démonstration de la seconde appartenance étant similaire. Nous remarquons que le terme UA' est un terme neutre et donc par le point 4 du lemme 63, il nous suffit, pour obtenir le résultat, de montrer que tous les réduits en un pas de UA' sont dans [[ A]]Φ ;Γ . Or le terme UA' ne peut se réduire en un pas que vers:
    • ( (λ x : A. λ _ : B. x) [ id ] M') NM→  M' et dans ce cas nous concluons par hypothèse d'induction.
    • ( (λ x : A. λ _ : B. x) [ id ] M) N' où N→  N' et dans ce cas nous concluons par hypothèse d'induction.
    • UA'' et dans ce cas nous concluons par le point 1.
  3. Nous devons montrer que PA× B1(⟨ M, N ⟩) et PA× B2(⟨ M, N ⟩) appartiennent respectivement à [[ A]]Φ ;Γ et [[ B]]Φ ;Γ . Nous ne montrons ici que l'appartenance de PA× B1(⟨ M, N ⟩) à [[ A]]Φ ;Γ , la seconde appartenance étant similaire. Nous remarquons que le terme PA× B1(⟨ M, N ⟩) est un terme neutre et donc par le point 4 du lemme 63, il nous suffit, pour obtenir le résultat, de montrer que tous les réduits en un pas de ce terme sont dans [[ A]]Φ ;Γ . Or ce terme ne peut se réduire en un pas que vers:
    • PA× B1(⟨ M', N ⟩) où M→  M' et dans ce cas nous obtenons le résultat par hypothèse d'induction.
    • PA× B1(⟨ M, N' ⟩) où N→  N' et dans ce cas nous obtenons le résultat par hypothèse d'induction.
    • UA' et nous concluons grâce au point 2.

Lemme 74   Si M et N sont deux termes et s est un une substitution tels que M [ s ] et N [ s ] soient respectivement dans [[ A]]Φ ;Γ et [[ B]]Φ ;Γ alors M, N ⟩ [ s ] est dans T=[[ A× B]]Φ ;Γ .
 Preuve. Il est évident que Φ ;Γ ⊢ T : A× B. Nous devons donc montrer que PA× B1(T) et PA× B2(T) sont respectivement dans [[ A]]Φ ;Γ et [[ B]]Φ ;Γ . Nous ne montrons ici que la première appartenance la démonstration de la seconde appartenance étant similaire. Nous allons raisonner par récurrence sur Σ=ν( M [ s ] ) + ν( N [ s ] ). Nous remarquons que le terme PA× B1( ⟨ M, N ⟩ [ s ] ) est un terme neutre et donc par le point 4 du lemme 63, il nous suffit, pour obtenir le résultat, de montrer que tous les réduits en un pas de ce terme sont dans [[ A]]Φ ;Γ . Or ce terme ne peut se réduire en un pas que vers:
Lemme 75  
  1. Soient un terme M appartenant à [[ A]]Φ;P : B, un terme N appartenant à [[ A]]Φ;Q : C et ξ une variable de choix fraîche. Si Φ;[ξP,Q ] : B+ C est compatible et linéaire alors U=[ξM,N ] appartient à l'ensemble [[ A]]Φ;[ξP,Q ] : B+ C.
  2. Si M et N sont deux termes appartenant à [[ A]]Φ;Γ et si ξ est une variable appartenant à Φ alors U=[ξM,N ] appartient à l'ensemble [[ A]]Φ;Γ.
 Preuve. Nous commençons par remarquer que dans les deux cas, U est un terme bien typé et neutre. De plus, par le point 1 du lemme 63, nous savons que dans les deux cas M et N sont tous deux fortement normalisables et donc que nous allons pouvoir raisonner par récurrence sur Σ=ν(M) + ν(N). Par le point 4 du lemme 63, il nous suffit de montrer que tous les réduits en un pas de U sont réductibles. Nous poursuivons notre analyse en étudiant les différents réduits possibles en un pas. Les réduits en un pas de [ξ ∣ M,N ] sont:
Lemme 76   Soit Ξ un terme de choix fortement normalisable.
  1. Si le terme M [ s ] appartient à [[ A]]Φ;P : B, et si le terme N [ s ] appartient à [[ A]]Φ;Q : C, ξ est une variable de choix fraîche, Φ ;Γ ⊢Ξ ↝ ξ et si Φ;[ξP,Q ] : B+ C est compatible et linéaire alors le terme U=[Ξ ∣ s M,N ] est dans l'ensemble [[ A]]Φ;[ξP,Q ] : B+ C.
  2. Si les deux termes M [ s ] et N [ s ] appartiennent à l'ensemble [[ A]]Φ ;Γ et si Φ ;Γ ⊢Ξ ↝ K alors U=[Ξ ∣ s M,N ] est dans l'ensemble [[ A]]Φ ;Γ .
 Preuve. Nous remarquons que, dans les deux cas, le terme U est neutre. Donc dans les deux cas, par le lemme 63 (point 4), il nous suffit de montrer que tous les réduits de U en un pas sont réductibles. Puisque M [ s ] et N [ s ] sont tous les deux fortement normalisables (par le point 1 du lemme 63), nous allons pouvoir raisonner par récurrence sur la somme Σ=ν(M) + ν(N)+ ν(s) + ν(Ξ) puis par cas sur les réduits possibles de U.
  1. Dans ce cas, les différents réduits de U sont:
    • [Ξ' ∣ s M,N ] où ΞΞ' et dans ce cas nous concluons par hypothèse d'induction puisque le théorème 56, nous garanti que Φ ;Γ ⊢Ξ' ↝ ξ.
    • [Ξ ∣ s M',N ] où M→  M' et dans ce cas nous concluons par hypothèse d'induction puisque le lemme 63 (point 3) nous garantit que M' [ s ] est réductible.
    • [Ξ ∣ s M,N' ] où N→  N' et, dans ce cas, nous concluons par hypothèse d'induction puisque le lemme 63 (point 3) nous garantit que N' [ s ] est réductible.
    • [Ξ ∣ s' M,N ] où s→  s' et, dans ce cas, nous concluons par hypothèse d'induction puisque le lemme 63 (point 3) nous garantit que M [ s ] et N' [ s ] sont réductibles.
    • Ξ=ξ, [ξ ∣ M [ s ] , N [ s ] ] qui appartient bien à [[ A]]Φ;[ξ ∣ P,Q ] : B+C. En effet, nous savons que M [ s ] et N [ s ] sont respectivement dans les ensembles [[ A]]Φ;P : B et [[ A]]Φ;Q : C et donc nous pouvons conclure par le point 1 du lemme 75.
  2. Dans ce cas, les différents réduits de U sont:
    • [Ξ' ∣ s M,N ] où ΞΞ' et dans ce cas nous concluons par hypothèse d'induction puisque le théorème 56 nous garantit que Φ ;Γ ⊢Ξ' ↝ K.
    • [Ξ ∣ s M',N ] où M→  M' et, dans ce cas, nous concluons par hypothèse d'induction puisque le lemme 63 (point 3) nous garantit que M' [ s ] est réductible.
    • [Ξ ∣ s M,N' ] où N→  N' et, dans ce cas, nous concluons par hypothèse d'induction puisque le lemme 63 (point 3) nous garantit que N' [ s ] est réductible.
    • [Ξ ∣ s' M,N ] où s→  s' et, dans ce cas, nous concluons par hypothèse d'induction puisque le lemme 63 (point 3) nous garantit que M [ s ] et N' [ s ] sont réductibles.
    • Ξ=ξ, [ξ ∣ M [ s ] , N [ s ] ] qui appartient bien à [[ A]]Φ;[ξ ∣ P,Q ] : B+C. En effet, nous savons que M [ s ] et N [ s ] sont respectivement dans les ensembles [[ A]]Φ;P : B et [[ A]]Φ;Q : C et donc nous pouvons conclure par le point 2 du lemme 75.
    • Ξ = L, M [ s ] et nous concluons par hypothèse.
    • Ξ = R, N [ s ] et nous concluons par hypothèse.

Lemme 77  
  1. Soient s une substitution et M et N deux termes. Supposons que s vérifie Φ;[ξP,Q ] : B+C,Γ⊢ s ▷ ΦΦ';[ξP,Q ] : B+C,ΓΓ' et que M [ s ] et N [ s ] soient respectivement dans [[ A]]Φ;P : B et [[ A]]Φ;Q : C. Si ξ est une variable de choix fraîche et si ΦΦ';ΓΓ'⊢ξ ↝ ξ alors le terme U= [ξM,N ] [ s ] appartient à l'ensemble [[ A]]Φ;[ξP,Q ] : B+C.
  2. Soient s une substitution et M et N deux termes. Supposons que s vérifie Φ;Γ⊢ s ▷ ΦΦ';ΓΓ' et que M [ s ] et N [ s ] soient tous les deux dans [[ A]]Φ;Γ. Si ξ est une variable de choix telle que ΦΦ';ΓΓ'⊢ξ ↝ K alors le terme U= [ξM,N ] [ s ] appartient à l'ensemble [[ A]]Φ;Γ.
 Preuve. Nous remarquons que, dans les deux cas, le terme U est neutre. Donc dans les deux cas, par le lemme 63 (point 4), il nous suffit de montrer que tous les réduits de U en un pas sont réductibles. Puisque M [ s ] et N [ s ] sont tous les deux fortement normalisables (par le point 1 du lemme 63), nous allons pouvoir raisonner par récurrence sur la somme Σ = ν(M) + ν(N) + ν(s) puis par cas sur les réduits possibles de U. Dans les deux cas, nous raisonnons comme suit:
Lemme 78  
  1. Soient s et t deux substitutions, M et N deux termes et Ξ un terme de choix. Supposons que s vérifie Φ;[ξP,Q ] : B+C,Γ⊢ s ▷ ΦΦ';[ξP,Q ] : B+C,ΓΓ', que M [ ts ] et N [ ts ] soient respectivement dans [[ A]]Φ;P : B et [[ A]]Φ;Q : C, et que Ξ soit fortement normalisable. Si ξ est une variable de choix fraîche et si ΦΦ';ΓΓ'⊢Ξ ↝ ξ alors le terme U= [Ξ ∣ t M,N ] [ s ] appartient à l'ensemble [[ A]]Φ;[ξP,Q ] : B+C.
  2. Soient s et t deux substitutions, M et N deux termes et Ξ un terme de choix. Supposons que s vérifie Φ;Γ⊢ s ▷ ΦΦ';ΓΓ', que M [ ts ] et N [ ts ] soient tous les deux dans [[ A]]Φ;Γ et que Ξ soit fortement normalisable. Si ξ est une variable de choix telle que ΦΦ';ΓΓ'⊢Ξ ↝ K alors le terme U= [Ξ ∣ t M,N ] [ s ] appartient à l'ensemble [[ A]]Φ;Γ.
 Preuve. Nous remarquons que, dans les deux cas, le terme U est neutre. Donc dans les deux cas, par le lemme 63 (point 4), il nous suffit de montrer que tous les réduits de U en un pas sont réductibles. Puisque M [ ts ] et N [ ts ] sont tous les deux fortement normalisables (par le point 1 du lemme 63), nous allons pouvoir raisonner par récurrence sur la somme Σ = ν(M) + ν(N) + ν(s) + ν(t) puis par cas sur les réduits possibles de U. Dans les deux cas, nous raisonnons comme suit:
Lemme 79   Soient un terme M, deux types A et B et un environnement de types linéaire et compatible Φ ;Γ . Si x, y, w1 et w2 sont des variables usuelles fraîches, si ξ est une variable de choix fraîche et si M appartient à l'ensemble [[ A]]Φ ;Γ alors le terme inlB(M) est dans l'ensemble [[ A+ B]]Φ;w1 : A, w2 : B.
 Preuve. Nous allons en fait montrer les cinq points suivants:
  1. La substitution est telle que:
    t= ( ξy :  B/L  ).id∈[[ ξ :    L,Φ;y :    B,w1 :    A, w2 :  B,Γ]]Φ;w1 :    A,   w2 :  B
  2. nous en déduirons que la substitution s=( x/M ).t appartient à l'ensemble [[ ξ : L,Φ;x : A,y : B,w1 : A, w2 : B,Γ]]Φ;w1 : A, w2 : B.
  3. Et donc le terme U''= [ξ ∣ ⟨ x, w2 ⟩,⟨ w1, y ⟩ ] [ s ] est dans l'ensemble [[ A× B]]Φ;w1 : A, w2 : B.
  4. D'où U'= (λ x : A. [ξ ∣ ⟨ x, w2 ⟩,⟨ w1, y ⟩ ]) [ t ] M est dans l'ensemble [[ A× B]]Φ;w1 : A, w2 : B.
  5. Enfin, nous montrerons que le terme inlB(M) est dans l'ensemble [[ A+ B]]Φ;w1 : A, w2 : B.

Nous allons procéder dans l'ordre.

  1. Par le lemme 72, il suffit de montrer que id appartient à [[ Φ;w1 : A, w2 : B,Γ]]Φ;w1 : A, w2 : B ce qui est évident par le corollaire 68.
  2. Par le lemme 70, il suffit de montrer que M∈[[ A]]Φ;w1 : A, w2 : B, ce qui est vrai par le lemme 64, et que t∈[[ ξ : L,Φ;y : B,w1 : A, w2 : B,Γ]]Φ;w1 : A, w2 : B ce que nous avons démontré au point 1.
  3. Par le point 2 du lemme 77, il nous suffit de montrer que s∈[[ ξ : L,Φ;x : A,y : B,w1 : A, w2 : B,Γ]]Φ;w1 : A, w2 : B, ce que nous avons démontré au point 2, et que les deux termes ⟨ x, w2 ⟩ [ s ] et ⟨ w1, y ⟩ [ s ] sont réductibles. Nous ne démontrons ici que la réductibilité de ⟨ x, w2 ⟩ [ s ] , l'autre cas étant similaire. Par le lemme 74, il nous suffit de démontrer que x [ s ] et w2 [ s ] sont réductibles. Or ces deux cas sont trivialement résolus par la définition 62 puisque s est réductible.
  4. Nous remarquons que U' est un terme neutre et donc que, par le point 4 du lemme 63, il nous suffit de montrer que tous les réduits en un pas de U' sont réductibles. De plus puisque M est réductible, par le point 1 du lemme 63, nous pouvons raisonner par récurrence sur ν(M) et par cas sur les différents réduits de U' en un pas qui sont:
    • x : A. [ξ ∣ ⟨ x, w2 ⟩,⟨ w1, y ⟩ ]) [ t ] M' où M→  M' et dans ce cas nous concluons par hypothèse d'induction.
    • U'' et nous concluons par le point 3.
  5. Puisque inlB(M) est de type A+B dans l'environnement Φ ;Γ , nous devons montrer que SA+B(inlB(M)) est dans [[ A× B]]Φ;w1 : A, w2 : B. Puisque SA+B(inlB(M)) est un terme neutre, il nous suffit, par le point 4 du lemme 63, de montrer que tous ses réduits en un pas sont réductibles. Par le point 1 du lemme 63, nous pouvons raisonner par récurrence ν(M) et par cas sur les différents réduits de SA+B(inlB(M)) qui sont:
    • SA+B(inlB(M')) où M→  M' et dans ce cas nous concluons par hypothèse d'induction.
    • U' et dans ce cas nous concluons par le point 4.

Lemme 80   Soient un terme M, deux types A et B et un environnement de type linéaire et compatible Φ ;Γ . Si x, y, w1 et w2 sont des variables usuelles fraîches, si ξ est une variable de choix fraîche et si M appartient à l'ensemble [[ B]]Φ ;Γ alors le terme inrA(M) est dans l'ensemble [[ A+ B]]Φ;w1 : A, w2 : B.
 Preuve. La preuve de ce lemme est similaire à celle du lemme 79.
Lemme 81   Soient un terme M et une substitution s. Si le terme M [ s ] est dans [[ A]]Φ ;Γ alors:
  1. Le terme inlB(M) [ s ] appartient à [[ A+B]]Φ ;Γ .
  2. Le terme inrB(M) [ s ] appartient à [[ B+A]]Φ ;Γ .
 Preuve. Nous ne montrons ici que la preuve du point 1, la démonstration de l'autre point étant similaire. Par la définition 62, il nous faut montrer que U= SA+B(inlB(s)) appartient à [[ A× B]]Φ;w1 : A,w2 : B. Puisque U est neutre, il nous suffit, par le point 4 du lemme 63, de montrer que tous les réduits de U en un pas sont réductibles. Par le point 1 du lemme 63, nous pouvons raisonner par récurrence sur ν(M) + ν(s) et par cas sur les différents réduits de U qui sont:

Enfin, nous pouvons projeter grâce au point 3 du lemme 63 et donc remarquer que:

Remarque 82   Si N1, N2 est réductible alors N1 et N2 sont réductibles. Si inl (N) ou si inr (N) est réductible alors N est réductible.

Nous allons maintenant démontrer le théorème principal de cette section.

4.4.4  Préservation de la réductibilité par composition

Théorème 83   Soient Φ ;Γ et Φ '' deux environnement de types compatibles et linéaires et soit s une substitution appartenant à [[ Φ '']]Φ ;Γ .
 Preuve. Nous remarquons tout d'abord que le terme M [ s ] et la substitution ts sont bien typés dans Φ ;Γ . De même, par le corollaire 45, nous pouvons supposer que Γ=Des(Γ). Nous allons maintenant montrer ces deux propositions ensemble par induction sur les structure de M et de s.

Nous sommes maintenant en mesure de démontrer la normalisation forte de λ Pw/.

Théorème 84 (Normalisation forte de λ Pw/)  

Toute expression bien typée du calcul λ Pw/ est fortement normalisable.

 Preuve. Soit e une expression bien typée du calcul λ Pw/. Si M est un terme par le théorème 83 et le corollaire 68, M [ id ] est réductible. Et donc par le point 1 du lemme 63, M [ id ] est fortement normalisable. Si e est une substitution, nous raisonnons comme précédemment. Si e est un terme de choix, plusieurs cas sont possibles:

Nous en déduisons:

Théorème 85 (Normalisation forte de λ Pw)   Toute expression bien typée du calcul λ Pw est fortement normalisable.
 Preuve.

Avant toute chose nous remarquons que nous pouvons considérer la relation →λ Pw  comme étant R1R2R1 est la relation induite par les règles définissant le λ Pw 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 λ Pw-expressions, O' celui des λ Pw/-expressions, T la congruence ≡  et R' la relation →λ Pw/ . Nous concluons alors par le lemme 8 et par le théorème 84 après avoir remarqué que R2 est fortement normalisante.



Previous Up Next