7.2 Confluence avec béta-réduction dans les conditions
7.2.3 Systèmes orthonormaux
dσ →
∗β∪R(β)jo i~v ←
∗β∪R(β)jo i~
cσ .
Par hypothèse d’induction suri, on a donc
βnf(~dσ) →
∗Rjo iβnf(~v) ←
∗Rjo iβnf(~cσ)
c’est-à-dire~dσ
′↓
Rjoi
~cσ
′, car~d et~c sont faits de termes algébriques.
On en déduit (7.15) en raisonnant exactement comme au lemme 7.1.15.
La préservation de la confluence est une conséquence directe de la projection de la
réécriture sur les formesβ-normales.
Théorème 7.2.11 Soit R un système conditionnel algébrique qui respecte a:Σ→ N.
Si →
Rjoest confluent surAN
aalors →
β∪R(β)joest confluent sur AN
a.
Preuve. Soient t, u, v tels que t ∈ AN
aet u ←
∗β∪R(β)jot →
∗β∪R(β)jov. En
appli-quant deux fois le lemme 7.2.10, on obtient βnf(u) ←
∗Rjoβnf(t) →
∗Rjoβnf(v) avec
βnf(t), βnf(u) etβnf(v) ∈ AN
a. On conclut par la confluence de →
Rjosur AN
a. En
image :
t
β∪R(β)jo ∗ % % J J J J J J J J J J J J J J β∪R(β)jo ∗ y y tttt tttt tttt tt β ∗u
β ∗βnf(t)
Rjo ∗ $ $ Rjo ∗ z zv
β ∗βnf(u)
Rjo ∗ % %βnf(v)
Rjo ∗ y yw
7.2.3 Systèmes orthonormaux
Dans cette section, nous donnons un critère pour la confluence de→
β∪R(β)joquand les
conditions et les membres droits ne sont pas algébriques. Ce critère exploite la possible
non-faisabilité des paires critiques de la réécriture conditionnelle.
Dans [Ohl02], il est remarqué que les résultats de confluence pour la réécriture normale
et semi-équationnelle pourraient être étendus aux systèmes n’ayant pas de paire critique
faisable. Mais ce raisonnement n’est pas directement applicable car l’infaisabilité des
Chapitre 7 Réécriture conditionnelle combinée au lambda-calcul
paires critiques (qui implique la confluence) peut elle-même nécessiter la confluence.
Nous circonvenons à ce problème en assurant l’infaisabilité des paires critiques par un
critère syntaxique qui ne nécessite pas la confluence.
Exemple 7.2.12 Considérons les deux règles suivantes, issues du système7→
occprésenté
à la section4.2.1:
>(lengthl)x = false ⊃ occ(x::o) (nodey l) 7→ false
>(lengthl)x = true ⊃ occ(x::o) (nodey l) 7→ occo(getl x)
Ces deux règles génèrent la paire critique
(≥(lengthl)x = true ∧ ≥(lengthl)x = false) ⊃ (false,occo(getl x)) .
Les conditions de cette paire critique ne peuvent donc pas être satisfaites par une relation
confluente. En utilisant la stratification de→
R(β)jo, il est aisé de voir que la confluence de
→
R(β)joi
implique l’infaisabilité de la paire critique, qui à son tour implique la confluence
de→
R(β)joi+1
.
Remarque 7.2.13 Dans le cadre de la réécriture du premier ordre, des idées similaires
ont été appliquées dans [GM88,KW97].
D’autre part, dans le cadre de la combinaison du λ-calcul avec la réécriture
condi-tionnelle, il convient de mentionner le travail de Takahashi [Tak93]. Son approche est
de conditionner les règles de réécriture par un prédicat P arbitraire sur les termes. La
confluence est prouvée sous l’hypothèse que P est stable par réduction : si Pσ est vrai
etσ→σ
′, alorsPσ
′est vrai. Ceci ne s’applique pas directement aux systèmes
orthogo-naux, pour lesquels la stabilité des conditions par réécriture provient précisément de la
confluence.
Notre critère est une généralisation du raisonnement appliqué à l’exemple 7.2.12. Il
ne dépend pas du fait que →
R(β)josoit ou non inclus dans =
β∪Rjoet peut donc être
utilisé sur des systèmes ayant des conditions ou des membres droits non-algébriques. Les
systèmes satisfaisant ce critère sont dits « orthonormaux ».
Définition 7.2.14 (Systèmes orthonormaux) Un système conditionnel Rest
ortho-normalsi
— il est linéaire à gauche,
— dans chaque règle~c=~d⊃l7→
Rr, les termes dans~csont clos, en formeβ-normale
et ne contiennent pas de symboles définis,
— pour chaque paire critique~d=~c⊃(s, t), il existei6=j tels que d
i=d
jet c
i6=c
j.
Un système orthonormal est donc linéaire à gauche et semi-clos, mais il peut n’être
compatible avec aucune fonction d’arité applicative a : Σ → N, et n’être pas non plus
algébrique. De plus, dans une règle~d=~c⊃l7→
Rr, les termes~csont en forme→
β∪R(β)jo-normale. La relation →
R(β)joest donc une relation de réécriture normale au sens de la
définition4.1.8.
7.2 Confluence avec béta-réduction dans les conditions
Exemple 7.2.15 Le système présenté en 4.2.1est orthonormal.
Nous prouvons maintenant que→
β∪R(β)joest confluent en profondeur (c.-à-d. que les
relations→
β∪R(β)joi
et→
β∪R(β)joj
commutent pour tout i, j∈N) lorsqueRest
orthonor-mal.
Le premier lemme dit que la confluence de →
β∪R(β)jo iimplique la commutation de
→
β∪R(β)joi+1
avec →
β.
Lemme 7.2.16 SoitRun système orthonormal eti∈Ntel que→
β∪R(β)iest confluent.
Pour tout t, u, v ∈ Λ(Σ), si u ←
∗βt →
∗R(β)joi+1
v, alors il existe un terme w tel que
u→
∗R(β)jo i+1w←
∗βv. En image,
t
R(β) jo i+1 ∗ // β ∗v
β ∗u
R(β)joi+1 ∗ / /w
Preuve. La preuve est presqu’identique à celle du lemme 2.1.15. Nous prouvons
seule-ment que s’il y a une règle ~d=~c ⊃l7→
Rr, une substitution σet un terme utels que
u⊳
βlσ→
R(β)jo i+1rσ, alors il existe un terme vtel que u→
R(β)jo i+1v⊳
βrσ.
Par la linéarité delet la proposition6.1.2, il existe une substitutionσ
′telle queσ⊲
βσ
′et u= lσ
′. Il s’en suit par le lemme 2.3.6 que rσ⊲
βrσ
′et~dσ⊲
β~dσ
′, soit~dσ→
∗β~dσ
′par le lemme 5.1.12.
Pour conclure que le terme w =
defrσ
′convient, il reste à montrer que lσ
′→
Rjo i+1rσ
′, c’est-à-dire que ~dσ
′↓
β∪R(β)joi~c. Or, on a ~dσ ↓
β∪R(β)joi~c, donc ~dσ
′↔
∗β∪R(β)jo i~c. Comme la relation →
β∪R(β)joi
est confluente par hypothèse, on a ~dσ
′↓
β∪R(β)jo i~c,
donc ~dσ
′→
∗β∪R(β)jo i~c, car les termes ~c sont →
β∪R(β)jo-normaux. On en déduit que
lσ
′→
R(β)jo i+1rσ
′.
Le reste de la preuve suit la démarche standard des preuves de confluence pour les
systèmes conditionnels orthogonaux, voir [Ohl02]. La propriété importante est celle des
mouvements parallèles. On utilise les relations →
kR(β)joi
qui sont les clôtures parallèles
des relations →
R(β)joi
, au sens de 2.3.5. Dans notre cas, la propriété des mouvements
parallèles s’énonce comme suit :
Mouvements parallèles. Pour tout i, j∈N, si
∀n, m∈N. {n, m}<
mul{i, j} =⇒ →
β∪R(β)jo ncommute avec →
β∪R(β)jo malors→
kR(β)jo iet→
kR(β)jo jcommutent.
La preuve occupe les lemmes 7.2.17et7.2.18.
Chapitre 7 Réécriture conditionnelle combinée au lambda-calcul
Lemme 7.2.17 Soit R un système orthonormal et i, j ≥ 0. Supposons que la
pro-priété (i) soit vérifiée pour tout n, m tels que {n, m} <
mul{i, j}. Alors, la propriété (ii)
est satisfaite pour toute règle~d=~c⊃l7→
Rr.
t
β∪R(β) jo n ∗ // β∪R(β)jom ∗v
β∪R(β)jom ∗u
β∪R(β)jon ∗ / /w
lσ
R(β )joi / / kR(β)jojrσ
kR(β)joju
R(β)joi = //w
(i) (ii)
Preuve. La cas i = 0 est trivial car →
R(β)jo0
= ∅. Si j = 0, alors u = lσ et w = rσ
convient. Soienti, j > 0 et supposons que dans le pas lσ→
kR(β)jo ju, il y ait une paire
critique entre~d=~c⊃l7→
Rr et une règle~d
′=~c
′⊃l
′7→
Rr
′. Il existe donc p∈ Pos(l)
et deux substitutionsµetµ
′telles qu’on ait une paire critique conditionnelle de la forme
~d
′′= ~c
′′⊃ (l[r
′]
pµ, rµ) ,
avec σ = µ
′◦µ. Comme R est orthonormal, on a |~d
′′| ≥ 2 et il existe n 6= m tels que
d
n′′=d
m′′etc
n6=c
m. Soit h=
defmax(i, j) −1 (donc{h, h}<
mul{i, j}). On a alors
c
n′′←
∗β∪R(β)jo hd
n′′σ = d
m′′σ →
∗β∪R(β)jo hc
m′′,
ce qui est impossible car c
n′′et c
m′′sont des formes →
β∪R(β)joh
-normales distinctes alors
que→
β∪R(β)joh
est confluente.
Il s’en suit que tous les rédexes contractés dans le pas lσ →
kR(β)joju sont dans la
substitutionσ. Comme l est linéaire, on a doncu=lσ
′avec σ→
kR(β)joj
σ
′. Il s’en suit
querσ→
kR(β)joj
rσ
′et il reste à montrer quelσ
′→
R(β)jo irσ
′. Or, on a
~dσ
′←
∗β∪R(β)jo j~dσ →
∗β∪R(β)jo i−1~c
donc comme{j, i−1}<
mul{i, j}, il existew~ tels que
~
dσ
′→
∗β∪R(β)jo i−1~
w ←
∗β∪R(β)jo j~c ,
d’où~dσ
′→
∗β∪R(β)jo i−1~c carRest orthonormal.
Lemme 7.2.18 Soit R un système orthonormal et i, j≥ 0. La propriété (iii) est
sa-tisfaite si et seulement si, pour toute règle~d=~c ⊃l7→
Rr, les propriétés (iv) et (v) le
sont.
7.2 Confluence avec béta-réduction dans les conditions
t
kR(β) jo i / / kR(β)jojv
kR(β)joju
kR(β)joi / /w
lσ
R(β )joi / / kR(β)jojrσ
kR(β)joju
R(β)joi = / /w
lσ
R(β)joj / / kR(β)joirσ
kR(β)joiu
R(β)j = / /w
(iii) (iv) (v)
Preuve. Le sens « seulement si » est trivial. Pour le sens « si », soient trois termes t,u
etvtels queu←
kR(β)jo jt→
kR(β)jo iv. Sit=v(resp.t=u), alorsw=
defu(resp.w=
defv)
convient. Sinon, on raisonne par induction sur t. Si il une des deux réductions est une
réduction de tête, alors on conclut par (iv)et(v). Supposons maintenant qu’il n’y a pas
de réduction de tête. Sitest une abstraction alors on conclut par hypothèse d’induction.
Sinon,test soit une applicationt
1t
2, soit de la formef(t
1, . . . , t
n). Les deux cas se traitent
de la même manière. Prenons celui de l’application. Par hypothèse,u=u
1u
2etv=v
1v
2et on a u
k←
kR(β)jo jt
k→
kR(β)jo iv
kpour tout k ∈ {1, 2}. Par hypothèse d’induction, il
existe w
ktel que u
k→
kR(β)joi
w
k←
kR(β)jo jv
k, donc u
1u
2→
kR(β)jo iw
1w
2←
kR(β)jo jv
1v
2.
Maintenant, une induction sur<
mulpermet d’obtenir la commutation→
β∪R(β)jo iavec
→
β∪R(β)joj
pour touti, j∈N. Il s’en suit que→
β∪R(β)joest confluente « en profondeur ».
Théorème 7.2.19 Si R est un système orthonormal, alors pour tout i, j∈N on a
t
β∪R(β) jo i ∗ // β∪R(β)joj ∗v
β∪R(β)joj ∗u
β∪R(β)joi ∗ / /w
(7.17)
Preuve. Par induction sur>
mul, on prouve la commutation de (7.17) pour touti, j∈N.
La cas de base, dans lequeli=j=0, est trivial.
Maintenant, soit i > 0 et supposons que (7.17) commute pour tout{n, m}<
mul{i, 0}.
Comme{i−1, i−1}<
mul{i, 0}, la relation→
β∪R(β)joi−1
est confluente, donc la commutation
de →
β∪R(β)joi
avec →
β∪R(β)jo0
(=→
β) suit du lemme7.2.16.
Le dernier cas est celui où i, j > 0. par hypothèse d’induction, en utilisant les
lem-mes 7.2.17 et 7.2.18, on obtient la commutation de →
kR(β)joi
avec →
kR(β)joj
. Comme
{i−1, i−1}<
mul{i, j} (resp. {j−1, j−1} <
mul{i, j}), par le lemme 7.2.16, les relations
→
βet →
R(β)joi
(resp. →
R(β)joj
) commutent. Il s’en suit que →
β∪R(β)joi
commute avec
→
β∪R(β)jo j.
Exemple 7.2.20 La relation →
β∪R(β)joinduite par le système présenté en 4.2.1 est
confluente.
Chapitre 8
Préservation de la confluence par
curryfication
L’objectif de ce chapitre est d’étendre à la réécriture conditionnelle le résultat de
Kahrs [Kah95] sur la préservation de la confluence par curryfication de la réécriture non
conditionnelle. Nos résultats ne sont cependant pas complètement satisfaisants car nous
nous restreignons aux règles conditionnelles non-effondrantes, c’est à dire aux règles
dont le membre droit n’est pas une variable (voir la définition 4.1.1), alors que cette
hypothèse n’est pas nécessaire pour la réécriture non conditionnelle [Kah95]. Nous n’avons
cependant pas d’exemple de non préservation de la confluence par curryfication pour la
réécriture conditionnelle effondrante.
La curryfication est une traduction, évoquée en 3.1.13, des termes de Ter(Σ,X) vers
un sous-ensemble des termes algébriques deL(Σ
C), oùΣ
Ccontient un symbolef
Cd’arité
nulle pour chaquef ∈Σ.
Nous procédons selon les étapes suivantes :
(i) Nous utilisons et adaptons le résultat de [Kah95] pour montrer que la confluence
de la réécriture conditionnelle non-effondrante est préservée lors du passage de
Ter(Σ,X) àTer(Σ
CApp,X).
(ii) Nous utilisons le théorème5.3.4 pour passer deTer(Σ
CApp,X)à Λ(Σ
C).
D’autre part, nous montrons que la confluence sur les termes clos n’est pas forcément
préservée par curryfication.
8.1 Curryfication
Nous définissons la curryfication et donnons quelques exemples. En particulier, nous
montrons que la confluence sur les termes clos n’est pas forcément préservée par
curryfi-cation.
Nous avons présenté brièvement aux exemples 3.1.13 et 3.1.14 les curryfications des
signatures Σ
Natet Σ
Listet du système de réécriture 7→
ite. Pour voir comment curryfierun système de réécriture conditionnel, considérons une possible spécialisation au premier
ordre de la fonctionfilter du système (4.1) :
filter(nil) 7→
filter(_)nil
test(x) = true ⊃ filter(x::xs) 7→
filter(_)x::filter(xs)
test(x) = false ⊃ filter(x::xs) 7→
filter(_)filter(xs)
Chapitre 8 Préservation de la confluence par curryfication
où test(_) est un symbole unaire. C’est donc un système conditionnel sur la signature
Σ
filter(_)=
defΣ
List⊎{true,false,test(_),filter(_)}.
On peut lui associer le système suivant, construit avec un symbole d’application et des
symboles d’arité nulle :
filter·nil 7→
filter(_)Cnil
test·x = true ⊃ filter·(cons·x·xs) 7→
filter(_)Ccons·x·(filter·xs)
test·x = false ⊃ filter·(cons·x·xs) 7→
filter(_)Cfilter·xs
(8.2)
C’est donc un système conditionnel sur la signature(Σ
filter(_))
CApp, où
(Σ
filter(_))
C=
defΣ
ListC⊎{true,false,test,filter} .
La curryficationest le processus qui permet de passer de (Ter(Σ
filter(_),X),→
filter(_)) à
(Ter((Σ
filter(_))
CApp,X),→
filter(_)C). Plus généralement, étant donné un ensemble R de
règles conditionnelles sur Ter(Σ,X), et une relation de réécriture conditionnelle →
RX(avecX ∈ {se, jo, o}), nous sommes intéressés par la relation curryfiée →
RXC
, définie sur
Λ(Σ
C) et issue des règlesR
C. Voyons d’abord comment curryfier un ensemble de termes.
Définition 8.1.1 (Curryfication) Étant données deux signaturesΣ,Σ
Cet une injection
(_)
C:Σ→ Σ
Ctelle que tout f ∈Σ est associé à un symbole f
Cd’arité nulle, la fonction
(_)
C:Ter(Σ,X)→Ter(Σ
CApp,X) définie inductivement par
x
C=
defx
(f(t
1, . . . , t
n))
C=
def(f
C·(t
1)
C)· · ·(t
n)
Cest lafonction de curryfication de (_)
C:Σ→Σ
C.
Notons quet
Cest un terme algébrique pour toutt∈ Ter(Σ,X). Il est utile de pouvoir
considérer la curryfication comme une fonction de Ter(Σ
CApp,X) dans Ter(Σ
CApp,X),
en posant (t
1·t
2)
C=
def(t
1)
C·(t
2)
C. Lorsque le contexte le permet, nous désignons par
Σ
Cle couple(Σ
C,(_)
C) où (_)
Cest la fonction de curryfication de(_)
C:Σ→Σ
C.
Définition 8.1.2 (Règles conditionnelles curryfiées) Étant données une fonction
de curryfication(_)
C:Σ→Σ
Cet un ensembleRde règles conditionnelles surTer(Σ,X),
l’ensemble des règles curryfiéespar (_)
Cest l’ensemble
R
C=
def{~d
C=~c
C⊃l
C7→r
C| ~d=~c⊃l7→r∈ R} .
Remarque 8.1.3 L’ensemble de règles conditionnelles R
Cest un TRS sur L(Σ
C) au
même titre queRest un TRS sur Ter(Σ,X).
Voici maintenant un exemple que la confluence sur les termes clos n’est pas préservée
par curryfication : si →
Rest confluent sur Ter(Σ) alors →
RCn’est pas nécessairement
confluent surTer(Σ
CApp).
8.2 Un essai de preuve directe
Dans le document
Définitions par réécriture dans le lambda-calcul : confluence, réductibilité et typage
(Page 141-149)