• Aucun résultat trouvé

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(~)

Rjo i

βnf(~v) ←

Rjo i

βnf(~cσ)

c’est-à-dire~

Rjo

i

~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

Rjo

est confluent surAN

a

alors

β∪R(β)jo

est confluent sur AN

a

.

Preuve. Soient t, u, v tels que t ∈ AN

a

et u ←

β∪R(β)jo

t →

β∪R(β)jo

v. 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

Rjo

sur 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 z

v

β

βnf(u)

Rjo % %

βnf(v)

Rjo y y

w

7.2.3 Systèmes orthonormaux

Dans cette section, nous donnons un critère pour la confluence de

β∪R(β)jo

quand 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→

occ

pré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(β)jo

i

implique l’infaisabilité de la paire critique, qui à son tour implique la confluence

de

R(β)jo

i+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(β)jo

soit ou non inclus dans =

β∪Rjo

et 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=~dl7

R

r, 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

j

et c

i

6=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=~cl7

R

r, les termes~csont en forme

β∪R(β)jo

-normale. La relation

R(β)jo

est 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(β)jo

est confluent en profondeur (c.-à-d. que les

relations

β∪R(β)jo

i

et

β∪R(β)jo

j

commutent pour tout i, j∈N) lorsqueRest

orthonor-mal.

Le premier lemme dit que la confluence de

β∪R(β)jo i

implique la commutation de

β∪R(β)jo

i+1

avec

β

.

Lemme 7.2.16 SoitRun système orthonormal eti∈Ntel que

β∪R(β)i

est confluent.

Pour tout t, u, v ∈ Λ(Σ), si u ←

β

t →

R(β)jo

i+1

v, alors il existe un terme w tel que

u→

R(β)jo i+1

w←

β

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

R

r, une substitution σet un terme utels que

u⊳

β

lσ→

R(β)jo i+1

rσ, alors il existe un terme vtel que u→

R(β)jo i+1

v⊳

β

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σ⊲

β

et~

β

~

, soit~

β

~

par le lemme 5.1.12.

Pour conclure que le terme w =

def

convient, il reste à montrer que lσ

Rjo i+1

, c’est-à-dire que ~

β∪R(β)joi

~c. Or, on a ~

β∪R(β)joi

~c, donc ~

β∪R(β)jo i

~c. Comme la relation

β∪R(β)jo

i

est confluente par hypothèse, on a ~

β∪R(β)jo i

~c,

donc ~

β∪R(β)jo i

~c, car les termes ~c sont

β∪R(β)jo

-normaux. On en déduit que

R(β)jo i+1

.

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(β)jo

i

qui sont les clôtures parallèles

des relations

R(β)jo

i

, 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 n

commute avec

β∪R(β)jo m

alors

kR(β)jo i

et

kR(β)jo j

commutent.

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=~cl7

R

r.

t

β∪R(β) jo n // β∪R(β)jom

v

β∪R(β)jom

u

β∪R(β)jon / /

w

R(β )joi / / kR(β)joj

kR(β)joj

u

R(β)joi = //

w

(i) (ii)

Preuve. La cas i = 0 est trivial car

R(β)jo

0

= ∅. Si j = 0, alors u = lσ et w = rσ

convient. Soienti, j > 0 et supposons que dans le pas lσ→

kR(β)jo j

u, il y ait une paire

critique entre~d=~cl7

R

r et une règle~d

=~c

⊃l

7→

R

r

. 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

n

6=c

m

. Soit h=

def

max(i, j) −1 (donc{h, h}<

mul

{i, j}). On a alors

c

n′′

β∪R(β)jo h

d

n′′

σ = d

m′′

σ →

β∪R(β)jo h

c

m′′

,

ce qui est impossible car c

n′′

et c

m′′

sont des formes

β∪R(β)jo

h

-normales distinctes alors

que

β∪R(β)jo

h

est confluente.

Il s’en suit que tous les rédexes contractés dans le pas lσ →

kR(β)joj

u sont dans la

substitutionσ. Comme l est linéaire, on a doncu=lσ

avec σ→

kR(β)jo

j

σ

. Il s’en suit

querσ→

kR(β)jo

j

et il reste à montrer quelσ

R(β)jo i

. Or, on a

~

β∪R(β)jo j

~

β∪R(β)jo i−1

~c

donc comme{j, i−1}<

mul

{i, j}, il existew~ tels que

~

β∪R(β)jo i−1

~

w ←

β∪R(β)jo j

~c ,

d’où~

β∪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

R

r, 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(β)joj

v

kR(β)joj

u

kR(β)joi / /

w

R(β )joi / / kR(β)joj

kR(β)joj

u

R(β)joi = / /

w

R(β)joj / / kR(β)joi

kR(β)joi

u

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 j

t→

kR(β)jo i

v. Sit=v(resp.t=u), alorsw=

def

u(resp.w=

def

v)

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

1

t

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

1

u

2

etv=v

1

v

2

et on a u

k

kR(β)jo j

t

k

kR(β)jo i

v

k

pour tout k ∈ {1, 2}. Par hypothèse d’induction, il

existe w

k

tel que u

k

kR(β)jo

i

w

k

kR(β)jo j

v

k

, donc u

1

u

2

kR(β)jo i

w

1

w

2

kR(β)jo j

v

1

v

2

.

Maintenant, une induction sur<

mul

permet d’obtenir la commutation

β∪R(β)jo i

avec

β∪R(β)jo

j

pour touti, j∈N. Il s’en suit que

β∪R(β)jo

est 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(β)jo

i−1

est confluente, donc la commutation

de

β∪R(β)jo

i

avec

β∪R(β)jo

0

(=→

β

) 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(β)jo

i

avec

kR(β)jo

j

. 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(β)jo

i

(resp.

R(β)jo

j

) commutent. Il s’en suit que

β∪R(β)jo

i

commute avec

β∪R(β)jo j

.

Exemple 7.2.20 La relation

β∪R(β)jo

induite 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ùΣ

C

contient un symbolef

C

d’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 Σ

Nat

et Σ

List

et du système de réécriture 7→

ite. Pour voir comment curryfier

un 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(_)C

nil

test·x = true ⊃ filter·(cons·x·xs) 7→

filter(_)C

cons·x·(filter·xs)

test·x = false ⊃ filter·(cons·x·xs) 7→

filter(_)C

filter·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

RX

C

, 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Σ,Σ

C

et une injection

(_)

C

:Σ→ Σ

C

telle que tout f ∈Σ est associé à un symbole f

C

d’arité nulle, la fonction

(_)

C

:Ter(Σ,X)→Ter(Σ

CApp

,X) définie inductivement par

x

C

=

def

x

(f(t

1

, . . . , t

n

))

C

=

def

(f

C

·(t

1

)

C

)· · ·(t

n

)

C

est lafonction de curryfication de (_)

C

:Σ→Σ

C

.

Notons quet

C

est 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

Σ

C

le couple(Σ

C

,(_)

C

) où (_)

C

est 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

:Σ→Σ

C

et un ensembleRde règles conditionnelles surTer(Σ,X),

l’ensemble des règles curryfiéespar (_)

C

est l’ensemble

R

C

=

def

{~d

C

=~c

C

l

C

7→r

C

| ~d=~cl7→r∈ R} .

Remarque 8.1.3 L’ensemble de règles conditionnelles R

C

est 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

R

est confluent sur Ter(Σ) alors

RC

n’est pas nécessairement

confluent surTer(Σ

CApp

).

8.2 Un essai de preuve directe