maisy6=
αx. Cependant, on a toujours |[u]|=|[t|
p]| etPos([u]) =Pos([t|
p]).
On ne peut donc pas définir les λ-contextes sur Λ(Σ) comme des termes de Λ(Σ) à
trous, comme on l’a fait en 1.1.19 pour Ter(Σ,X). Par contre, chaque λ-contexte peut
être représenté par un terme à trou deL(Σ).
Définition 1.2.18 (Lambda-contextes) L’ensemble des λ-contextes est le plus petit
ensemble de fonctions Λ(Σ)→ Λ(Σ) qui contient l’identité [ ] :Λ(Σ) →Λ(Σ) et tel que
si C[ ] est un λ-contexte, alors
— pour toutx∈ X, la fonction C[λx.[ ]] :u7→C[ ](λx.u) en est un,
— pour toutt∈Λ(Σ), la fonction C[[ ]·t] :u7→C[ ](u·t) en est un,
— pour toutt∈Λ(Σ), la fonction C[t·[ ]] :u7→C[ ](t·u) en est un,
— pour toutf ∈Σ
n, pour tout t
1, . . . , t
n∈Λ(Σ), pour tout i∈{1, . . . , n}, la fonction
C[f(t
1, . . . , t
i−1,[ ], t
i+1, . . . , t
n)] : u 7→ C[ ](f(t
1, . . . , t
i−1, u, t
i+1, . . . , t
n))
en est un.
SiC[ ]est unλ-contexte, on désigneC[ ](t)parC[t]. Lesλ-contextes sont aussi appelés
« contextes ».
Définition 1.2.19 Soit L ⊆ Λ(Σ). Si C[ ] : Λ(Σ) → Λ(Σ) est un contexte tel que
C[t]∈L pour tout t∈L, alors c’estun L-contexte, noté C[ ] :L→L.
On définit maintenant la relation « sous-terme » dans Λ(Σ).
Définition 1.2.20 Étant donnés t, u∈Λ(Σ), on dit que uest un sous-terme de t s’il
existe un contexte C[ ] différent de l’identité tel quet=C[u].
Remarque 1.2.21 La relation sous-terme sur Λ(Σ) ne préserve pas les classes d’α
-équivalence. En effet,x etysont des sous-termes de[λx.x]car [λx.x] = [λy.y].
1.3 Substitution sans capture
Nous allons maintenant définir la substitution sans capture. Notre définition diffère de
celle de Krivine donnée dans son livre [Kri90]. En effet, cette dernière pose des difficultés
si on a besoin de définir une relation de réécriture surΛ(Σ)comme étant le quotient d’une
relation de réécriture sur L(Σ). C’est typiquement ce que nous faisons à la section 4.3
pour la réécriture conditionnelle puis au chapitre 8 pour traiter la préservation de la
confluence par curryfication.
Cela nous amène à définir la substitution sans capture surΛ(Σ) à partir d’une notion
de substitution sans capture qui est une fonction partielle surL(Σ). Cette façon de faire
semble originale.
Chapitre 1 Structures de termes
Définition 1.3.1 (Substitution partielle sans capture) Étant donnée une valuation
σsurL(Σ), lasubstitution sans capture_σest la fonction partielleL(Σ)→L(Σ)définie
comme suit :
xσ =
defσ(x) si x∈ Dom(σ)
xσ =
defx sinon
f(t
1, . . . , t
n)σ =
deff(t
1σ, . . . , t
nσ) si f∈Σ
n(t
1t
2)σ =
deft
1σ t
2σ
(λx.t
1)σ =
defλx.(t
1σ) si x /∈ Dom(σ)∪FV(σ)
C’est à cause de la dernière clause que la fonction _σ:L(Σ)→L(Σ)n’est pas totale. En
particulier,tσn’est pas définie siBV(t)∩ Dom(σ)6=∅. Par contre, siσ est la valuation
de domaine vide, alorstσest défini.
Lorsque le contexte le permet, nous identifions une substitution _σ à sa valuationσ.
On désigne parFV(σ) l’ensemble {FV(σ(x))| x∈ Dom(σ)} des variables libresde σ, et
parBV(σ) l’ensemble{BV(σ(x))| x∈ Dom(σ)} l’ensemble de sesvariables liées.
Lorsqu’elle est définie, la substitution partielle sans capture correspond à la
substitu-tion du premier ordre. Rappelons qu’une valuasubstitu-tion est une foncsubstitu-tion de domaine fini.
Proposition 1.3.2 Pour tout t ∈ L(Σ) et toute valuation σ : X → Λ(Σ), si tσ est
défini, alorstσ=σ(t).
Preuve. Par induction surt.
t=x∈ X. Si x∈ Dom(x), alors,tσ=σ(x) =σ(t). Sinon,tσ=t=σ(t).
t = f(~t). Comme~tσ est défini, on a~tσ = σ(~t) par hypothèse d’induction. Il s’en suit
que f(~t)σ=f(~tσ) =f(σ(~t)) =σ(f(~t)).
t = t
1t
2. Comme t
1σ et t
2σ sont définis, par hypothèse d’induction t
1σ = σ(t
1) et
t
2σ=σ(t
2), donct
1t
2)σ=σ(t
1θ
2).
t=λx.t
1. Commetσest défini, on atσ=λx.(t
1σ). Or, commet
1σest défini, il suit de
l’hypothèse d’induction que t
1σ=σ(t
1), d’oùtσ=σ(λx.t
1) =σ(t).
Remarque 1.3.3
(i) Notons que tσ est défini si BV(t) est disjoint de FV(σ) et de Dom(σ). C’est en
particulier le cas lorsque tne contient pas de variables liées.
(ii) Grâce au lemme 1.2.10, pour tout t ∈ L(Σ), pour toute substitution σ, il existe
t
′=
αttel que t
′σest défini.
La proposition1.3.2nous permet d’étendre la proposition1.1.16aux substitutions sans
capture.
Proposition 1.3.4 Soient t ∈ L(Σ) et σ, σ
′sont deux substitutions telles que tσ et
tσ
′soient définis. Si FV(t)∩ Dom(σ) = FV(t)∩ Dom(σ
′) et σ(x) = σ
′(x) pour tout
1.3 Substitution sans capture
Preuve. Tout d’abord, par la proposition 1.3.2, comme tσ et tσ
′sont définis, on a
tσ=σ(t)ettσ
′=σ
′(t).
De plus, commetσettσ
′sont définis, on aBV(t)∩ Dom(σ) =BV(t)∩ Dom(σ
′) =∅.
Il s’en suit que FV(t)∩ Dom(σ) =V(t)∩ Dom(σ)etFV(t)∩ Dom(σ) =V(t)∩ Dom(σ).
Par la proposition1.3.4 on a doncσ(t) =σ
′(t), d’oùtσ=tσ
′.
En particulier, siFV(t)∩Dom(σ) =∅, alors on atσ=t. En effet, surFV(t),σcoïncide
avec la substitution de domaine vide.
Si σ est la valuation qui associe t
ià x
ipour i ∈ {1, . . . , n}, alors [t
1/x
1, . . . , t
n/x
n]
désigne la substitution issue deσett[t
1/x
1, . . . , t
n/x
n]désigne son application au terme
t. De plus,σ[u/x]désigne la substitution de domaineDom(σ)∪{x}telle queσ[u/x](x) =u
etσ[u/x](y) =σ(y)pour tout y∈ Dom(σ)\ {x}.
Proposition 1.3.5 Soit t, u ∈ L(Σ) et σ une substitution. Si t(σ[u/x]) est défini et
x /∈FV(σ)∪ Dom(σ), alors (tσ)[u/x]est défini et t(σ[u/x]) = (tσ)[u/x].
Preuve. Par induction surt.
t = y ∈ X. Si y = x, alors x(σ[u/x]) = u = x[u/x] = σ(x)[u/x]car x /∈ Dom(σ). Si
y∈ Dom(σ) alorsy(σ[u/x]) =σ(y) =σ(y)[u/x]car x /∈FV(σ).
t=t
1t
2ett=f(t
1, . . . , t
n). Par hypothèse d’induction.
t = λy.t
1. Comme t(σ[u/x]) est défini, on a y /∈ (Dom(σ)∪{x}∪FV(σ)∪FV(u)) et
t(σ[u/x]) = t
1(σ[u/x]). Par hypothèse d’induction (t
1σ)[u/x] est défini et on a
t
1(σ[u/x]) = (t
1σ)[u/x]. De plus, comme y /∈ Dom(σ)∪FV(σ), tσ = λx.t
1σ et
commey /∈{x}∪FV(u) on a(tσ)[u/x] =λx.((t
1σ)[u/x]).
Étant donnéesR⊆ L(Σ)×L(Σ)et deux substitutionsσ, σ
′, on noteσRσ
′siDom(σ) =
Dom(σ
′) et σ(x)R σ
′(x) pour tout x ∈ Dom(σ). Dans la proposition suivante, nous
utilisons le fait que les valuations sont à domaine fini.
Proposition 1.3.6 Soit un terme t∈ L(Σ) et une substitutionσ.
(i) Sit
′et t
′′sont des termesα-équivalents à t tels que t
′σ et t
′′σsont définis, alors
t
′σest α-équivalent à t
′′σ.
(ii) Sitσ est défini etσ
′=
ασ, alorstσ
′est défini etα-équivalent à tσ.
Preuve.
(i) Par induction sur la taille de t. Soient t
′ett
′′deux termes α-équivalents àt tels
que t
′σett
′′σsoient définis.
t∈ X. Dans ce cas,[t] ={t}, donc t=t
′=t
′′, c.-à-d. t
′σ=t
′′σ.
t=f(~t). Par définition de=
α, on at
′=f(~t
′)ett
′′=f(~t
′′)avec~t
′,~t
′′α-équivalents
à~t. Par hypothèse d’induction, on a~t
′σ=
α~t
′′σ, d’oùf(~t
′)σ=
αf(~t
′′)σ.
t=t
1t
2. Comme pour le cas précédent : Par définition de =
α, on a t
′= t
1′t
2′et
t
′′=t
1′′t
2′′avect
i′, t
i′′α-équivalents àt
i(i∈{1, 2}). Par hypothèse d’induction,
on at
i′σ=
αt
i′′σ, et il s’en suit que(t
1′t
2′)σ=
α(t
1′′t
2′′)σ.
Chapitre 1 Structures de termes
t=λx.t
1. Par définition de =
α, on a t
′= λx
′.t
1′, t
′′= λx
′′.t
1′′et il existe trois
ensembles finis Z, Z
′, Z
′′⊆ X tels que
t
1′[x
′7→z] =
αt
1′′[x
′′7→z] pour tout z∈ X \Z ,
t
1[x7→z] =
αt
1′[x
′7→z] pour tout z∈ X \Z
′,
et t
1′′[x
′′7→z] =
αt
1[x7→z] pour tout z∈ X \Z
′′.
Donc, avec Y =
defZ
1∪ Z
′∪Z
′′on a un sous-ensemble fini de X tel que
t
1[x7→z], t
1′[x
′7→z]ett
′′[x
′′7→z]sont α-équivalents pour tout z∈ X \Y.
Commet
′σett
′′σsont définis, on ax
′, x
′′∈ D/ om(σ)∪FV(σ). Par conséquent,
étant donné une variable z /∈Y∪ Dom(σ)∪FV(σ), on a
t
1′σ[x
′7→z] =t
1′[x
′7→z]σ et t
1′′σ[x
′′7→z] =t
1′′[x
′′7→z]σ .
Il s’en suit que t
1′[x
′7→ z]σ ett
1′′[x
′′7→z]σsont définis, et comme t
1′[x
′7→z]
et t
1′′[x
′′7→z] sont α-équivalents à t
1[x7→ z], par hypothèse d’induction on a
t
1′[x
′7→z]σ=
αt
1′′[x
′′7→z]σ.
Comme t
1′σ[x
′7→z] =
αt
1′′σ[x
′′7→z]pour toute variable non dans l’ensemble
finiY∪ Dom(σ)∪FV(σ), nous avonsλx
′.(t
1′σ) =
αλx
′′.(t
1′′σ). Nous concluons
que (λx
′.t
1′)σ=
α(λx
′′.t
1′′)σ carx
′, x
′′∈ D/ om(σ)∪FV(σ).
(ii) Par induction surt. Rappelons que σetσ
′ont même domaine et même variables
libres.
t=x∈ X. Six∈ Dom(σ), alors tσ=σ(x) =
ασ
′(x); sinon,tσ=x=tσ
′.
t=f(~t). Par hypothèse d’induction,~tσ=
α~tσ
′; donc f(~t)σ=
αf(~t)σ
′.
t=t
1t
2. Par hypothèse d’induction, t
iσ =
αt
iσ
′pour tout i ∈{1, 2}. Il s’en suit
que (t
1t
2)σ=
α(t
1t
2)σ
′.
t=λx.t
1. Commetσest défini, la variablexn’apparaît pas dansDom(σ)∪FV(σ);
et par définition on a tσ=λx.(t
1σ) ainsi que tσ
′=λx.(t
1σ
′). Par hypothèse
d’induction on a t
1σ=
αt
1σ
′, donc(λx.t
1)σ=
α(λx.t
1)σ
′.
Grâce à la propriété1.3.6, nous pouvons définir la substitution sans capture sur Λ(Σ)
à partir de la substitution partielle surL(Σ).
Proposition 1.3.7 Soit une valuation σ :X → Λ(Σ). La relation qui à chaque terme
[t]∈Λ(Σ) associe l’ensemble des [t
′σ
′] pour t
′∈[t] et σ
′∈[σ] tels que t
′σ
′soit défini
est une fonction totale de Λ(Σ) vers Λ(Σ).
Preuve. Soit [t]∈Λ(Σ) etσ
′∈[σ]. Comme le domaine deσ
′est fini, le lemme.1.2.10
implique qu’il existet
′∈[t]tel que BV(t
′) soit disjoint de Dom(σ)et de FV(σ). Il s’en
suit que l’ensemble des[t
′σ
′]tels quet
′σ
′est défini n’est pas vide. La proposition1.3.6dit
que c’est un singleton : sit
′′=
αt
′,σ
′′=
ασ
′ett
′′σ
′′est défini, alors[t
′σ
′] = [t
′′σ
′′].
Définition 1.3.8 (Substitution sans capture) Étant donnée une valuation [σ]de X
dansΛ(Σ), la substitution sans capture surΛ(Σ), notée _[σ] :Λ(Σ)→Λ(Σ), est définie
par[t]σ=
def[t
′σ
′]pour σ
′∈[σ] et t
′∈[t] tel que t
′σ
′est défini.
1.3 Substitution sans capture
Nous identifions dès que possible une substitution _[σ]à sa valuation[σ]. Remarquons
que si tσest défini, alors[t][σ] = [tσ].
Nous allons maintenant vérifier qu’en utilisant la notation de la remarque 1.2.13, la
substitution sans capture est bien celle que nous attendons. Rappelons que θ◦σ est la
substitution issue de la valuation θ◦σ(x) =θ(σ(x))de domaine Dom(σ).
Lemme 1.3.9 Soit un terme t∈Λ(Σ) et une substitutionσ.
(i) Alors,
— xσ=σ(x) si x∈ Dom(σ), xσ=xsinon,
— f(~t)σ=f(~tσ),
— (t
1t
2)σ=t
1σ t
2σ,
— (λx.t
1)σ=λx.(t
1σ) six /∈ Dom(σ)∪FV(σ), et
— (λx.t
1)σ=λz.(t
1[z/x])σsi z /∈FV(t
1)∪ Dom(σ)∪FV(σ).
(ii) Si de plusθ est une substitution telle que Dom(σ)∩(Dom(θ)∪FV(θ)) =∅, alors
(tσ)θ = tθ(θ◦σ) .
Preuve.
(i) On raisonne par cas sur t. Soient t
′∈ L(Σ) etσ
′tels quet= [t
′]etσ= [σ
′], c’est
à diretσ= [t
′][σ
′].
t=x∈ X. Dans ce cas, t
′= xet [t
′][σ
′] = [t
′σ
′]. On a [t
′σ
′] = [σ
′(x)] =σ(x) si
x∈ Dom(σ) et[t
′σ
′] = [x] =xsinon.
t=f(~t). Dans ce cas,t
′=f(~t
′) ettσ= [f(~t
′)σ
′] = [f(~t
′σ
′)] =f([~t
′σ
′]) =f(~tσ).
t=t
1t
2. Dans ce cas,t
′=t
1′t
2′et
tσ = [(t
1′t
2′)σ
′] = [t
1′σ
′t
2′σ
′] = [t
1′]σ
′[t
2′]σ
′= t
1σ t
2σ .
t=λx.t
1. Tout d’abord, supposons quex /∈ Dom(σ)∪FV(σ). Soitu
1∈t
1tel que
t
1σ= [u
1σ
′]. Alors grâce à au lemme1.2.12, on a
λx.t
1σ=λx.[u
1σ
′]
={λy.u
1′| u
1′[y7→z] =
αu
1σ
′[x7→z]pour tout zsauf un nombre fini}
= [λx.u
1σ
′].
Comme x /∈ Dom(σ)∪FV(σ), on a λx.(u
1σ
′) = (λx.u
1)σ
′, et on en déduit
que
(λx.t
1)σ= [λx.u
1][σ
′] = [(λx.u
1)σ
′] = [λx.(u
1σ
′)] =λx.(t
1σ) .
Maintenant, soitz /∈ Dom(σ)∪FV(σ)∪FV(t
1). Alors, grâce à ce qui précède,
on aλz.(t
1[z/x]σ) = (λz.t
1[z/x])σ. Si on montre queλz.t
1[z/x] =λx.t
1, alors
on obtientλz.(t
1[z/x]σ) = (λx.t
1)σ, ce qui conclut la démonstration.
Grâce au lemme1.2.10, il existet
1′∈t
1tel que
Chapitre 1 Structures de termes
Alors, la proposition 1.3.2implique que t
1′[z/x] =t
1′[x7→z]∈t
1[z/x].
Comme z /∈FV(t
1′)∪BV(t
1′), en utilisant la proposition 1.1.18, on en déduit
que pour toute variable z
′,t
1′[x7→z
′] =t
1′[z/x][z7→z
′]. Donc
λx.t
1=λx.[t
1′]
={λy.u
1| u
1[y7→z
′] =
αt
1′[x7→z
′] ∀z
′sauf un nombre fini}
={λy.u
1| u
1[y7→z
′] =
αt
1′[z/x][z7→z
′] ∀z
′sauf un nombre fini}
=λz.[t
1′[z/x]] =λz.t
1[z/x].
(ii) Soit σ
′∈σ et θ
′∈ θ telle que Dom(σ)∩(BV(θ
′)) = ∅ et t
′∈t tel que (t
′σ
′)θ
′soit défini.
CommeV(θ
′)⊆(FV(θ
′)∪BV(θ
′))etDom(σ
′)∩(Dom(θ
′)∪FV(θ
′)∪BV(θ
′)) =∅,
on a Dom(σ
′) ∩(Dom(θ
′) ∪V(θ
′)) = ∅, donc θ
′(σ
′(t
′)) = θ
′◦σ
′(θ
′(t
′)) par
le lemme 1.1.17. Or, la proposition 1.3.2 implique que (t
′σ
′)θ
′= θ
′(σ
′(t
′)) et
t
′θ
′(θ
′◦σ
′) =θ
′◦σ
′(θ
′(t
′)).
On en déduit que [(t
′σ
′)θ
′] = [t
′θ
′(θ
′◦σ
′)], soit(tσ)θ=tθ(θ◦σ).
Remarque 1.3.10 Le lemme 1.3.9.(ii) implique qu’étant donné un terme λx.t et une
substitution σ, on peut toujours se ramener à un cas où x /∈ Dom(σ)∪FV(σ) tout en
restant dans la même classe d’α-équivalence : si x∈ Dom(σ)∪FV(σ), alors pour tout
z /∈ Dom(σ)∪FV(σ)∪FV(t), on a(λx.t)σ=λz.(t[z/x]σ) = (λz.t[z/x])σdansΛ(Σ).
Pour finir, voici comment définir une substitution sur un sous-ensembleL deΛ(Σ), et
comment relier deux substitutions par une relation et une fonction.
Définition 1.3.11 Soit L ⊆ Λ(Σ). Si σ : X → Λ(Σ) est une substitution telle que
tσ∈L pour tout t∈L, alors c’est uneL-substitution, notée σ:X →L.
Définition 1.3.12 Étant donnésL⊆Λ(Σ), une relationR⊆L×Let deux substitutions
σ, σ
′: X → L, on note σ R σ
′si Dom(σ) = Dom(σ
′) et si σ(x) R σ
′(x) pour tout
x∈ Dom(σ).
Dans le cas où σ F σ
′pour une fonction F:L→L, on poseF(σ) =
defσ
′.
Dans le document
Définitions par réécriture dans le lambda-calcul : confluence, réductibilité et typage
(Page 41-46)