Previous Up Next

Chapitre 2  Définitions préliminaires

2.1  Introduction

Le but de ce chapitre est de donner un certain nombre de définitions et de résultats classiques. Le lecteur familier avec les notions de base de la réécriture (algèbre de termes, système de réécriture, confluence, normalisation forte, λ-calcul, typage…) peut passer ce chapitre.

Nous commencerons par rappeler les définitions de base concernant les relations binaires sur un ensemble. Nous donnerons alors des définitions formelles de normalisation et de confluence pour une relation ainsi que quelques résultats concernant ces notions. Nous définirons ensuite les notions d'algèbre de termes, de règle et de système de réécriture du premier ordre et nous présenterons quelques résultats simples ayant trait à la confluence et à la normalisation des systèmes de réécriture du premier ordre. Nous conclurons ce chapitre par une présentation rapide du λ-calcul [Chu41] et d'une extension du λ-calcul possédant un mécanisme explicite de gestion des substitutions [BR95].

2.2  Rappels sur la notion de relation binaire

Définition 1   Soit E un ensemble:

Si nous considérons l'ensemble des entiers naturels N: l'égalité est une relation d'équivalence sur cet ensemble alors que la relation d'ordre usuelle > est un ordre strict au sens de la définition précédente. Cet ordre est, de plus, nœthérien.

Définition 2 (Extensions d'une relation binaire)   Soient E un ensemble et une relation binaire sur cet ensemble.

Si 1 et 2 sont deux relations binaires, nous définissons leur union, notée 1 ∪ →2, comme étant la plus petite relation contenant à la fois 1 et 2.

Définition 3 (Ordre lexicographique)   Soient E1 et E2 deux ensembles et >1 et >2 deux ordres sur, respectivement, E1 et E2. Nous définissons l'ordre lexicographique >lex induit par >1 et >2 sur l'ensemble E1× E2 comme suit:
  (e1,e2)>lex(e1',e2') ⇔ 



      e1>1e1'  
ou
      e1=e1'  et  e2>2e2'

Il est à remarquer que:

2.3  Terminaison et confluence

Définition 4 (Réduit d'un terme et formes normales)   Soient E un ensemble et une relation binaire sur E.
Lemme 5 (Relation entre les différentes notions de normalisabilité)   Soit E un ensemble.
Remarque 6   Soient E un ensemble et une relation binaire sur cet ensemble. La relation est fortement normalisante sur E si et seulement si la relation + est fortement normalisante sur E.
Lemme 7   Soient E un ensemble et une relation binaire sur E. La relation est fortement normalisante sur E si et seulement s'il existe un ordre nœthérien strict > tel que: ee ' implique e>e '.

Nous utiliserons le lemme suivant pour prouver la terminaison de certains systèmes de réécriture.

Lemme 8   Soit O un ensemble. Soient R1 et R2 deux relations sur O telles que: Pour tout terme a O tel que T(a) est R'-fortement normalisable, a est (R1R2)-fortement normalisable.
 Preuve. Par contradiction [FKP99].

Les propriétés de normalisation (faible ou forte) garantissent l'existence d'une "valeur" pour les éléments de E mais pas l'unicité de cette valeur. L'unicité (en cas d'existence) est assurée par la notion de confluence décrite ci-dessous.

Définition 9 (Confluence)   Soient E un ensemble et une relation binaire sur E.

Ces trois notions de confluence sont bien évidement liées.

Remarque 10   Toute relation confluente est localement confluente.
Lemme 11 (Newman)   Toute relation localement confluente et fortement normalisante sur un ensemble est confluente sur cet ensemble.

Ce lemme est classique [New42]. Voir aussi le livre de Baader et Nipkow [BN98].

Il est à remarquer que les deux conditions de ce lemme sont nécessaires. En effet, il existe des relations localement confluentes et non fortement normalisantes qui ne sont pas confluentes et bien évidement toute relation non localement confluente n'est pas confluente.

Nous ne donnerons ici qu'un exemple du premier cas. Considérons la relation →  définie sur l'ensemble { a,b,c,d } et dont le graphe est le suivant:

Cette relation est trivialement non fortement normalisante (bien que faiblement normalisante), puisque par exemple a→  b→  a… Elle est non confluente car, par exemple, a—→*  c et a—→*  d bien que c et d ne possèdent pas de réduit en commun. Pourtant cette relation est localement confluente.

Lemme 12   Toute relation fortement confluente est confluente.

Enfin nous concluons cette section par lemme suivant:

Lemme 13 (Lemme d'interprétation)   Soit R= R1 R2 l'union de deux relations. Si:
  1. R1 est confluente et fortement normalisante,
  2. il existe une relation R' sur les R1-formes normales telle que:
    1. R'⊂ R*,
    2. Pour toutes expressions e1 et e2:
            e1     R2 e2     implique      R1(e1)—→* R'  R1(e2)
      R1(e) désigne l'unique forme normale pour R1 de e.

alors R est confluente si et seulement si R' l'est.

 Preuve. La preuve de ce lemme peut être trouvée dans [CHL96].

2.4  Réécriture du premier ordre

2.4.1  Algèbre de termes

Définition 14 (Signature)   Une signature est un ensemble Σ muni d'une fonction d'arité, notée ar( ), de Σ dans N. Les éléments d'une signature seront par la suite généralement notés f, g,…
Notation 15   Dans la suite de ce document, nous nous autoriserons à partitionner l'ensemble Σ en une union infinie d'ensembles i)iN où chaque Σi est l'image réciproque de l'entier i par la fonction ar( ).
Définition 16 (Algèbre de termes du premier ordre)   Étant donné une signature Σ et un ensemble X de variables, possiblement infini, nous définissons l'algèbre des termes A=T(Σ, X) comme suit:

Cette notion d'algèbre de termes nous permettra de définir tous les systèmes de réécriture du premier ordre. Pour les systèmes de réécriture d'ordre supérieur nous aurons aussi besoin d'une notion de lieur.

De très nombreux exemples d'algèbres de termes peuvent être donnés.

Exemple 17  
  1. Définissons la signature Σ1=({0,s},{ar(0)=0, ar(s)=1}). L'algèbre A1=T1,∅) est une représentation de l'ensemble des entiers naturels puisque tout entier naturel peut être vu soit comme l'entier nul représenté par 0, soit comme le successeur d'un entier n représenté par s(n)n est la représentation de n.
  2. Définissons maintenant la signature Σ2 en ajoutant à la signature Σ1 le symbole plus d'arité 2. L'algèbre A2=T2,∅) est une représentation des sommes d'entiers telles que:

    plus(3,plus(7,4)).

Définition 18 (Variables d'un terme)   Étant donné une algèbre de termes A=T(Σ, X), et un terme t de cette algèbre, nous définissons l'ensemble des variables de t, BV(t) par induction sur la structure de t comme suit:

Nous aurons ainsi BV(plus(x,plus(s(y),0)))={x,y}.

Définition 19 (Termes clos)   Soit A une algèbre de termes. Nous appellerons dans la suite terme clos tout terme t de cette algèbre tel que BV(t)=∅.
Définition 20 (Position dans un terme)   Une position est une suite finie (un mot) d'entiers naturels strictement positifs. Nous noterons par la suite une position i1.i2.… in quand la suite ne sera pas vide et є la suite vide.

Étant donné une algèbre de termes T(Σ, X), et un terme t de cette algèbre, nous définissons l'ensemble des positions de t, Pos(t) par induction sur la structure de t comme suit:

Nous appellerons position propre toute position autre que la position є.

Ainsi l'ensemble des positions de plus(s(0),s(s(y))) est {є,1,2,1.1,2.1,2.1.1}

Les positions dans un terme nous permettent, de définir les notions de sous-terme à une position donnée et de sous-terme d'un terme.

Définition 21 (Sous-termes d'un terme)   Étant donné un terme t et une position p de ce terme, nous définissons le sous-terme de t à la position p, notée tp, par induction sur p:

Nous dirons qu'un terme t' est un sous-terme d'un terme t s'il existe une position pPos(t) telle que t'=tp.

Ainsi, plus(s(0),s(s(y)))∣1.1=s(0)∣1=0∣є=0 et plus(s(0),s(s(y)))∣2=s(s(y)).

Définition 22 (Greffe d'un terme à une position)   Soient t et t' deux termes et p une position de t. Nous définissons la greffe du terme t' à la position p dans le terme t, noté t[t']p par induction sur p comme suit:

2.4.2  Règles et systèmes de réécriture du premier ordre

Dans cette section, nous allons définir la notion de règle de réécriture et de système de réécriture du premier ordre.

Définition 23 (Règles de réécriture)   Supposons donnée une algèbre de termes A=T(Σ, X). Une règle de réécriture, notée g →  d, est la donnée de deux termes g et d appelés respectivement membre gauche et membre droit de la règle tels que:
  1. g n'est pas une variable,
  2. BV(d)⊂ BV(g).

Ainsi, suivant cette définition, si on considère l'algèbre représentant l'ensemble des expression entières:

Définition 24 (Système de réécriture)   Un système de réécriture sur une algèbre de termes est la donnée d'un ensemble de règles de réécriture de cette algèbre.

Avant de définir la notion de relation de réduction du premier ordre engendrée par un système de réécriture il nous faut préciser la notion de substitution du premier ordre (ou remplacement).

2.4.3  Remplacement du premier ordre

Cette section est consacrée à la définition de la notion de remplacement de premier ordre. Un remplacement est une fonction des variables d'une algèbre de termes dans les termes de cette algèbre. Nous utiliserons de tels objets pour transformer les termes.

Définition 25 (Remplacement)   Soit T(Σ, X) une algèbre de termes. Un remplacement σ est une fonction de X dans T(Σ, X) telle que pour toute variable x de X, sauf un nombre fini d'entre elles, σ(x)=x.

Nous appellerons par la suite domaine d'un remplacement σ, noté dom(σ), l'ensemble des variables x X telles que σ(x)≠ x et codomaine de ce remplacement, noté codom(σ), l'ensemble xdom(σ) BV(σ(x)).

Remarquons que nous pouvons aussi représenter les remplacements comme étant des ensembles (finis) de couples (x,t) où x est une variable et t un terme.

Définition 26 (Application d'un remplacement à un terme)   Étant donné un remplacement σ et un terme t, nous définissons l'application de σ à t, notée t σ, par induction sur la structure du terme t comme suit:

Nous aurons donc par exemple plus(x,y)σ=plus(0,y) si σ={(x,0)}.

Définition 27 (Renommage)   Un renommage est un remplacement ρ tel que xdom(ρ), ρ(x)∈ X.
Définition 28   Nous dirons par la suite que deux termes t1 et t2 sont unifiables si et seulement s'il existe un remplacement σ, appelé unificateur de t1 et t2, tel que t1σ=t2σ.
Définition 29   Étant donné deux remplacements ρ1 et ρ2, nous dirons que ρ1 est plus général que ρ2, ce que nous noterons dans la suite de ce document ρ1>>ρ2, si et seulement s'il existe un remplacement ρ3 tel que: ρ23∘ρ1
Définition 30 (Unificateur le plus général de deux termes)   Nous appellerons un unificateur le plus général de deux termes unifiables t1 et t2, un élément de l'ensemble des unificateurs de t1 et t2 qui est minimal pour l'ordre >>.

2.4.4  Relation induite par un système de réécriture

Nous allons, dans cette section, définir la relation (de réduction) induite par un système de réécriture, pour cela nous avons besoin de définir la notion de clôture par contexte d'une relation binaire.

Définition 31 (Relation de réduction en tête)   Soient A= A(Σ, X) une algèbre de termes et R un système de réécriture sur A. La relation de réduction en tête induite par R, notée —→Rh , est définie comme suit. Le terme e ' est un réduit du terme e par la relation —→Rh  si et seulement si:
  1. Il existe une règle G→  D appartenant au système R,
  2. Il existe un remplacement de premier ordre σ,
  3. e=Gσ et e '=Dσ .
Exemple 32   Le terme 3 est un réduit en tête de plus(3,0) par le système de réécriture {plus(n,0)→  n}. Il suffit de prendre σ={n↦ 3}
Définition 33 (Contexte)   Un contexte C pour une algèbre T(Σ,X) est un terme de l'algèbre T(Σ∪{ },X) contenant exactement une occurrence du symbole 0-aire (d'arité 0) ∉Σ.

Étant donné un contexte C et un terme tT(Σ,X), la notation C(t) désigne le terme Cσ de l'algèbre T(Σ,X)σ={(,t)}.

Ainsi si nous considérons le contexte C=plus(,0) alors C(3)=plus(3,0).

Définition 34 (Clôture par contexte d'une relation)   Soient A= A(Σ, X) une algèbre de termes et R une relation binaire sur A.

La relation R est dite close par contexte pour A si: Pour tout symbole de fonction n-aire f de Σ, pour tous termes t1,…,tn, s'il existe un i∈[1… n] et un terme ti' tel que ti R ti' alors:

f(t1,…,ti,…,tnR f(t1,…,ti',…,tn)

ou, de manière équivalente, pour tout contexte C et pour tous termes t R t', C(tR C(t').

La clôture par contexte d'une relation R est la plus petite relation R' contenant R et close par contexte.

Remarque 35   Un terme t1 est un sous-terme d'un terme t2 si et seulement si il existe un contexte C tel que t2=C(t1).

Il nous est maintenant possible de définir la notion de relation (de réduction) induite par un système de réécriture.

Définition 36 (Relation de réduction)   Soient A= A(Σ, X) une algèbre de termes et R un système de réécriture sur A. La relation de réduction induite par R, notée R , est définie comme étant la clôture par contexte de la relation —→Rh .

Ainsi, le terme plus(0,3) est un réduit du terme plus(0,plus(3,0)) par la relation induite par le système de réécriture { plus(n,0)→  n}.

Définition 37   Soient l1→  r1 et l2→  r2 deux règles d'un système de réécriture R telles que l1 soit unifiable avec un sous-terme de l2 qui ne soit pas une variable (ce sous-terme doit être propre si l1→  r1 = l2→  r2).

Dans ce cas, il existe un contexte C, un terme u et un unificateur plus général σ de u et l1 tels que l2=C(u). Nous appellerons alors le couple de terme (C(r1)σ,r2σ) une paire critique du système R.

Une paire critique (t1,t2) est dite joignable s'il existe un terme t tel que:

Ainsi, le système:

R=



    f(f(x,y),z)→ f(x,f(y,z))
    f(i(t),t)→ e
  → 

possède une paire critique obtenue en applicant l'unificateur le plus général ρ={ xi(t), yt } à ses deux règles. Cette paire est: (f(i(t),f(t,z))   ,     f(e,z) )

La notion de paire critique est très importante vis à vis de celle de confluence. En effet:

Lemme 38 (Paires critiques du premier ordre et confluence locale [BN98])   Soit R un système de réécriture du premier ordre. Si toutes les paires critiques sont joignables alors le système R est localement confluent.

Concluons ce rapide aperçu de la notion de réécriture du premier ordre et d'algèbre de terme par la définition de congruence.

Définition 39 (Congruence)   Supposons donnée une algèbre de termes A=T(Σ, X). Une congruence (sur A) est une relation d'équivalence telle que:
  t1≡     t1',     …     tn≡    tn'     ⇒ f(t1,…,tn)≡ f(t1',…,tn')
Définition 40 (Réécriture modulo)   Supposons données une algèbre de termes A=T(Σ, X), une congruence et →  une relation de réécriture. Nous dirons qu'un terme t1 se réécrit par la relation →  quotientée par la congruence en un terme t2 si et seulement si:
  ∃ t1', ∃ t2', t1≡ t1' →  t2'≡ t2

2.5  Le λ-calcul

Les algèbres de termes du premier ordre, (définition 16), et les systèmes de réécriture du premier ordre ne permettent pas de modéliser les fonctions d'ordre supérieur (telles que, par exemple, la fonction map). Ces fonctions ne peuvent être modélisées que dans le cadre des formalismes de réécriture d'ordre supérieur.

Comme nous l'avons déjà mentionné dans l'introduction de ce document, le λ-calcul [Chu41] est le plus ancien et, sans doute, le mieux connu des systèmes de réécriture d'ordre supérieur. Les formalismes présentés dans la suite de ce document n'en sont que des extensions.

Nous présenterons, dans cette section, le λ-calcul avant de rappeler que ce formalisme n'est pas fortement normalisant. Nous présenterons alors un système de types simples permettant de retrouver la terminaison ainsi que de garantir la cohérence des données. Nous conclurons cette section par la présentation d'une extension très simple de ce calcul à la gestion explicite du mécanisme de substitution.

2.5.1  Le λ-calcul non typé

Nous nous donnons un ensemble infini dénombrable X de variables.

L'ensemble des λ-termes est donné par la grammaire suivante.

  (Termes) t::=x(Variable)
  t t(Application)
 λ xt(Abstraction)
  où x X

Intuitivement, le λ-terme λ x. t représente une fonction qui associe la valeur t à la variable x. Le terme f t représente l'application de la fonction f à un argument t.

Comme en mathématiques, la variable x de la construction λ x. t est une variable muette (ou liée) au sens où, par exemple, les deux termes λ x. x et λ y. y représentent la même fonction. Ces deux termes seront dit α-équivalents. Nous allons maintenant donner une formalisation de cette notion. Pour cela il nous faut introduire la notion d'ensemble des variables libres d'un λ-terme.

Définition 41 (Variables Libres)   L'ensemble des variables libres d'un λ-terme t, noté FV(t), est défini par induction sur la structure de t comme suit:
FV(x) = {x}
FV( t1 t2) =  FV(t1)∪ FV(t2)
FVx. t1) =  FV(t1)∖{x}

Ainsi, nous avons:

FVx. x) = 
FVx. y) = {y}
FV( (λ x. y) z) = {y,z}
Définition 42 (Variables liées)   L'ensemble des variables liées d'un λ-terme t, noté BV(t), est défini par induction sur la structure de t comme suit:
BV(x) = 
BV( t1 t2) =  BV(t1)∪ BV(t2)
BVx. t1) = {x}∪ BV(t1)

Ainsi, nous avons:

BVx. x) = {x}
BVx. y) = {x}
BV( (λ x. y) z) = {x}
Définition 43 (Application d'un remplacement à un λ-terme)   Un remplacement σ dans le λ-calcul est un remplacement tel que défini pour le premier ordre (Définition 25) mais à valeur dans l'ensemble des λ-termes.

L'application d'un remplacement ρ={(x1,t1),…,(xn,tn)} à un λ-terme est défini comme suit:

xσ =def σ(x) 
( t1 t2 =def  t1σ t2σ
xi. t =def λ xi. (tρ'i)ρ'i={(xj,tj)}j∈{1,…,i−1,i+1,…,n}
y. t =def λ y. (tρ)y∉{x1,…,xn}

Nous sommes désormais en mesure de définir formellement la notion de termes α-équivalents.

Définition 44 (α-équivalence)   Deux termes t1 et t2 sont dit α-équivalents, ce que nous noterons par la suite t1=α t2, si et seulement si:

Nous travaillerons désormais tout au long de cette section modulo α-équivalence.

Définition 45 (Substitution)   Une substitution σ est un couple { xt } formé d'une variable x et d'un λ-terme t. Étant donné un λ-terme t et une substitution σ={ xt' } , nous définissons l'application de σ au terme t par induction sur t comme suit:
x{ xt' }  =def t'
y{ xt' }  =def y si yx
( t1 t2){ xt' }  =def ( t1{ xt' } t2{ xt' } )
y. t1){ xt' }  =def λ y. (t1{ xt' } ) si xy et y FV(t')

Remarquons que la condition sur l'abstraction n'est pas restrictive puisque si y∈{x}∪ FV(t'), il nous suffit de remplacer λ y. t1 par un terme λ z. t1' qui lui soit α-équivalent et tel que z∉{x}∪ FV(t).

Nous pouvons également remarquer que l'application d'une substitution à un λ-terme n'est pas défini à l'aide de règles du λ-calcul mais en dehors de ce calcul (de manière implicite).

Grâce à la notion de substitution du λ-calcul, nous pouvons désormais définir l'unique règle de réduction du λ-calcul:

-règle)   (λ xtt'→β  tx ←   t' } 
Notation 46   Nous noterons λ  (ou, quand la confusion ne sera pas possible, → ) la clôture par contexte de la β-règle:

Le formalisme du λ-calcul est confluent sur l'ensemble de ses termes:

Lemme 47 (Confluence du λ-calcul [Bar84])   Le système de réécriture induit par la β-règle est confluent.

Cependant, le λ-calcul ne possède pas la propriété de normalisation forte comme le prouve l'exemple suivant:

Exemple 48 (Contre exemple de terminaison du λ-calcul)   Le terme Ω ΩΩ=defλ x. ( x x) n'est pas fortement normalisant. En effet, nous avons la séquence de réduction infinie suivante:
Ω Ω=def λ x. ( x x) Ω
 → ( x x){ x ← Ω }
 = Ω Ω
 

De plus la trop grande puissance du λ-calcul nous ôte tout espoir:

Lemme 49 (Indécidabilité de la terminaison)   Il n'est pas possible de décider de la normalisation forte des λ-termes.
 Preuve. [Bar84]

Il est donc nécessaire de donner un critère syntaxique de normalisation forte pour les λ-termes. Ce critère devra bien évidement être correct (tout λ-terme le vérifiant devant être fortement normalisable) mais ne pourra être complet (il existera des λ-termes fortement normalisables qui ne vérifierons pas ce critère).

L'un des critères les plus connus est sans doute le "bon typage" dans un système de types simples.

2.5.2  Le système de types simples

De nombreux systèmes de types ont été proposés pour le λ-calcul [Bar93]. Nous présenterons ici le plus simple d'entre eux.

Définition 50 (Types simples)   L'ensemble des types simples du λ-calcul [Bar84] est défini par la grammaire suivante:
(Types)   A::=ι(Type primitif)
 AA(Type fonctionnel)

Intuitivement, le type ι représente les types de bases (entiers,réels, (chaînes de) caractères …) alors que les types fonctionnels représentent les types des fonctions. Le type intbool est le type des fonctions des entiers dans les booléens (par exemple celui de la fonction est_paire).

Nous utiliserons désormais les notations A, B, C …pour désigner des types simples.

Définition 51 (λ-termes annotés)   L'ensemble des λ-termes annotés est donné par la même grammaire que l'ensemble des λ-termes mais où nous avons remplacé la construction λ x. t du λ-calcul par λ x : A. tA est un type.
Définition 52 (Environnement de types)   Un environnement de types, Γ, est un ensemble de couples x : A, où x est une variable et A est un type simple, tel que toute variable x apparaît au plus une fois dans Γ.
Définition 53 (Jugement de typage)   Un jugement de typage est un triplet Γ⊢ t : AΓ est un environnement de types, t est un λ-terme annoté et A est un type.

Nous dirons que le λ-terme annoté t possède le type A dans l'environnement Γ s'il est possible de dériver le jugement Γ⊢ t : A en appliquant l'ensemble de règles suivant:

 
Γ⊢ x : A
   (Var)
si (x,A)∈Γ
 
x : A,Γ⊢ t : B
Γ⊢λ x : A. t : AB
   (Abs)
 
Γ⊢ t1 : AB     Γ⊢ t2 : A
Γ⊢ ( t1 t2) : B
   (App)
Notation 54   Dans la suite, nous utiliserons la notation Γ⊢ t : A pour exprimer que t possède le type A dans l'environnement Γ.

Nous aurons ainsi n : ι⊢ (λ x : ι. x) n : ι par la dérivation suivante:

 
n : ι,x : ι⊢ x : ι
   (Var)
n : ι⊢ λ x : ι. x : ι→ι
   (Abs)     
 
n : ι⊢ n : ι
   (Var)
n : ι⊢ (λ x : ι. x) n : ι
   (App)
Théorème 55 (Préservation de types par réduction [Bar93])   Soient t et t' deux λ-termes, Γ un environnement de types et A un type. Si Γ⊢ t : A et t→  t' alors Γ⊢ t' : A.
Théorème 56 (Normalisation forte du λ-calcul simplement typé [Bar93])   Soient t un λ-terme, Γ un environnement de types et A un type. Si Γ⊢ t : A alors t est fortement normalisable.

2.5.3  Extensions aux systèmes de substitutions explicites

Nous présentons ici la plus simple des extensions du λ-calcul permettant la gestion explicite de la substitution: le λx-calcul [BR95, BG99]. L'idée principale de ce calcul est d'enrichir la syntaxe du λ-calcul d'un constructeur de substitution explicite en remplaçant la méta--notation t{ xt' } par la construction syntaxique t [ x/t' ] et de transposer les méta--règles de substitutions du λ-calcul en des règles explicites du λx-calcul.

Définition 57 (Grammaire du λx-calcul)   Les termes du λx-calcul sont donnés par la grammaire suivante:
(Termes) t::=x(Variable)x X.
  t t(Application)
 λ x. t(Abstraction)
  t [ x/t ] (Substitution Explicite)

Remarquons que les termes du λ-calcul sont en particulier des termes du λx-calcul.

Définition 58 (Variables libres et liées d'un terme du λx-calcul)   Soit t un terme du λx calcul. L'ensemble des variables libres de t est défini par induction sur t comme suit:
FV(x) = {x}
FV( t1 t2) =  FV(t1)∪ FV(t2)
FVx. t1) =  FV(t1)∖{x}
FV( t [ x/t' ] ) = ( FV(t)∖{x})∪ FV(t')

L'ensemble des variables liées de t est défini par induction sur t comme suit:

BV(x) = 
BV( t1 t2) =  BV(t1)∪ BV(t2)
BVx. t1) = {x}∪ BV(t1)
BV( t [ x/t' ] ) = {x}∪ BV(t)∪ BV(t')

Comme dans le cas du λ-calcul, nous travaillerons modulo α-conversion.

Définition 59 (Règles de réduction du λx-calcul)   Les règles de réductions du λx-calcul sont:
x. t) t'→  t [ x/t' ]
x [ x/t ] → t
y [ x/t ] → ysi yx
( t1 t2) [ x/t' ] →  t1 [ x/t' ] t2 [ x/t' ]
y. t) [ x/t' ] → λ y. ( t [ x/t' ] )si yx

Nous noterons λx  la relation engendrée par les règles ci-dessus.

Lemme 60 (Confluence du λx-calcul [BR95])   La relation λx  est confluente.
Théorème 61 (Simulation [BG99])   Si t et t' sont deux λ-termes tels que tλ  t' alors t—→λx+  t'.

Une conséquence de ce théorème est la non terminaison des λx-termes. Il nous faut donc donner un système de types pour le λx-calcul. Pour cela, nous gardons la grammaire des types (Définition 50) et nous étendons la notion de λ-termes annotés aux λx-termes.

Définition 62 (Système de types pour le λx-calcul)   Les règles de typage du λx-calcul sont:
 
Γ⊢ x : A
   (Var)
si (x,A)∈Γ
 
x : A,Γ⊢ t : B
Γ⊢λ x : A. t : AB
   (Abs)
 
Γ⊢ t1 : AB     Γ⊢ t2 : A
Γ⊢ ( t1 t2) : B
   (App)
 
Γ⊢ t' : B     x : B,Γ⊢ t : A
Γ⊢ t [ x/t' ] : A
   (Sub)
 
Théorème 63 (Préservation de types par réduction)   Soient t et t' deux λx-termes, Γ un environnement de types et A un type. Si Γ⊢ t : A et tλx  t' alors Γ⊢ t' : A.
 Preuve. Par induction sur la structure de t puis par cas sur la règle de réduction utilisée [Blo97].
Théorème 64 (Normalisation forte du λx-calcul simplement typé [Blo97])   Soient t un λx-terme, Γ un environnement de types, A un type. Si Γ⊢ t : A alors t est fortement normalisable pour la réduction λx .

Previous Up Next