3.7 Exemples de combinaisons
3.7.3 Des co-produits à la réécriture d’ordre supérieur
Les duaux catégoriques des produits sont les co-produits. Les produits correspondent,
par l’isomorphisme de Curry-Howard, au « et » logique, et les co-produits correspondent
au « ou » intuitionniste.
Définition 3.7.4 L’extension co-produitd’une signature B estB
+=
defB ⊎{_+_}.
Voici comment définir le système. Soit ty⊆{⇒, 2, Λ,Nat,×}.
— Les termes sont enrichis des constructions suivantes :
t, u∈Λ
ty(B
+, Σ) ::= . . . | inj
1t | inj
2t | case(t, x
1.t
1, x
2.t
2) .
Notons que danscase(t, x
1.t
1, x
2.t
2), les variablesx
1etx
2sont liées respectivement
danst
1et t
2. Les termes sont bien entendu quotientés par =
α, dont la définition
est celle de1.2.6 augmentée du cas suivant :
case(t, x
1.t
1, x
2.t
2) =
αcase(u, y
1.u
1, y
2.u
2)
sit=
αuet pour tout i∈{1, 2},
t
i[x
i7→z] =
αu
i[y
i7→z]pour tout z∈ X sauf un nombre fini.
— Les règles de typage sont les suivantes :
Γ ⊢t:T
iΓ ⊢inj
it:T
1+T
2(i∈{1, 2})
Γ, x:T
1⊢t
1:U
Γ ⊢t:T
1+T
2Γ, x:T
2⊢t
2:U
Γ ⊢case(t, x
1.t
1, x
2.t
2) :U
— Les règles de réduction sont les suivantes :
case(inj
1u, x
1.t
1, x
2.t
2) 7→
+t
1[u/x
1]
case(inj
2u, x
1.t
1, x
2.t
2) 7→
+t
2[u/x
2].
Les réductions des co-produits posent une question difficile à la réécriture : la définition
d’un formalisme cadre pour les systèmes de réécriture avec variables liées. Cette ligne de
recherche a donné lieu à de nombreux travaux :
— Les « Combinatory Reduction Systems » de Klop [Klo80] (voir aussi [KOR93]).
— La réécriture d’ordre supérieure de Wolfram [Wol93] et Nipkow [Nip91, NP98],
étendue à la réécriture conditionnelle d’ordre supérieur [ALS94].
— Les systèmes d’ordre supérieur de van Oostrom et van Raamsdonk [OR94,Oos94,
Raa96].
3.7 Exemples de combinaisons
L’enjeu de ces systèmes est de fournir un mécanisme de filtrage prenant en compte des
variables liées dans les membres gauches de règles et permettant de gérer les paires
critiques dues aux variables actives dans les membres gauche de règles. Nous ne nous
sommes pas intéressés à ce problème difficile.
Chapitre 4
Réécriture conditionnelle
Ce chapitre concerne la réécriture conditionnelle. Nous commençons par les définitions
de règle conditionnelle et de relation de réécriture conditionnelle et donnons quelques
exemples. Ensuite, en utilisant les termes de de Bruijn, nous montrons que la réécriture
conditionnelle sur Λ(Σ) est le quotient par =
αde la réécriture conditionnelle sur L(Σ)
modulo =
α.
4.1 Définitions
Nous commençons par un exemple qui introduit les idées principales de la réécriture
conditionnelle. On aimerait définir, par réécriture, une fonctionfilterparamétrée par une
fonction booléenne p, qui se comporte ainsi :
— filterp[ ]se réécrit en[ ],
— filterp(t::ts) se réécrit ent:: (filterp ts) sip t se réécrit entrue,
— filterp(t::ts) se réécrit enfilterp ts si p tse réécrit en false.
Cette spécification peut être écrite en utilisant des règles de réécriture conditionnelle
(⊃se lit « implique ») :
filterp[ ] 7→ [ ]
p x = true ⊃ filterp(x::xs) 7→ x:: (filterp xs)
p x = false ⊃ filterp(x::xs) 7→ filterp xs
(4.1)
Si nous essayons de définir une relation de réécriture → satisfaisant notre spécification,
cela donne
filterp(t::ts) → t:: (filterp ts) si p t →
∗true.
En d’autres termes, lors de la définition de → dans le pas
filterp(t::ts) → t:: (filterp ts),
nous avons besoin de savoir sip t→
∗true, donc d’utiliser la relation→. Cette circularité
est résolue par une définition inductive de la réécriture conditionnelle, dans laquelle
la relation → est stratifiée en relations (→
i)
i∈N, dont la correction est assurée par le
théorème du point fixe de Tarski. On pose → =
defS
i∈N
→
i, avec, dans notre exemple,
→
0=
def∅et→
i+1définie en fonction de →
ipar
Chapitre 4 Réécriture conditionnelle
Venons en aux définitions formelles. Nous autorisons, dans l’évaluation des conditions,
l’utilisation d’une relation auxiliaire quelconque. De ce fait, dans le cas oùL⊆ Ter(Σ,X),
les définitions présentées ici sont des extensions de celles présentées dans [DO90,Ohl02].
De plus, notre définition de réécriture conditionnelle normale est plus large que celles que
nous avons pu trouver dans la littérature.
Définition 4.1.1 (Règles de réécriture conditionnelle) Soit L ⊆Λ(Σ). Une règle
de réécriture conditionnelle surL est un tuple écrit sous la forme
d
1=c
1∧ . . . ∧ d
n=c
n⊃ l 7→ r
oùd
1, . . . , d
n, c
1. . . , c
n, l, r∈L.
Dans une règle de réécriture conditionnelle, on distingue
— lemembre gauche l (aussi appelé lhs),
— lemembre droit r (aussi appelé rhs),
— les conditions d
1=c
1∧· · ·∧ d
n=c
n.
Nous supposons que les membres gauches sont des termes algébriques qui ne sont pas des
variables et queFV(~d,~c, r)⊆FV(l).
Si r∈ X, alors~d=~c⊃l7→r est dite effondrante.
Les règles de réécriture conditionnelle sont souvent appelées simplement « règles de
réécriture ». Lorsque|~d|=|~c|=0, la règle~d=~c⊃l7→rest dite « non conditionnelle ».
Notons que pour les TRS algébriques à gauche, la notion de règle non-conditionnelle
effondrante définie en3.1.16est un cas particulier de règle conditionnelle effondrante.
Dans toute la suite, le symbole R désigne un ensemble de règles de réécriture. Les
symboles définis (resp. constructeurs) deRsont les symboles définis (resp. constructeurs)
du TRS{(l, r) |~d=~c⊃l7→
Rr}.
Remarque 4.1.2 (Extension des remarques 2.2.2 et 2.4.2)
— Les notions de règles de réécriture conditionnelle sur Λ(Σ), Ter(Σ,X) et Ter(X)
sont des conséquences immédiates de la définition4.1.1.
— SiRest un ensemble de règles de réécriture surL⊆Λ(Σ), alors(L,R)est un TRS
au sens de la définition2.4.1.
— L’extension de la notion de règle de réécriture conditionnelle à uneΣ-algèbre libre
Ter(Σ
A,X
A) se fait comme pour les relations de réécriture en 2.2.2 et les TRS
en 2.4.2 : on dit que ~d = ~c ⊃l 7→ r est une règle de réécriture sur Ter(Σ
A,X
A)
si i(~d) = i(~c) ⊃ i(l) 7→ i(r) en est une sur Ter(Σ,X), où i est l’isomorphisme
canonique deTer(Σ
A,X
A)→Ter(Σ,X).
Remarque 4.1.3 Les conditions des règles conditionnelles ne sont pas symétriques : la
conditiond=cn’est pas la même que la condition c=d. Cette distinction est justifiée
par la possibilité de définir des relations de réécriture conditionnelles qui évaluent les
conditions de façon asymétrique. C’est le cas par exemple, pour les règles définissant
filteren 4.1, de la conditionp x=true qui est évaluée en testant sip t→
∗true.
Les notions de système algébrique et de système applicatif à droite définies en 3.1.8
4.1 Définitions
Définition 4.1.4 (Règles conditionnelles applicatives et algébriques) Une règle
conditionnelle ~d=~c⊃l7→r est
— applicative à droite sir est applicatif,
— applicativesi elle est applicative à droite et si les termes de ~d,~c sont applicatifs,
— algébrique à droite sir est algébrique,
— algébriquesi elle est algébrique à droite et si les termes de ~d,~c sont algébriques.
Un système de réécriture conditionnel R est applicatif à droite (resp. applicatif,
algé-brique à droite,algébrique) si toutes ses règles le sont.
Étant donné un ensembleRde règles de réécriture conditionnelles, on peut construire
de nombreuses relations de réécritures selon la façon dont on évalue des conditions : par
conversion, par joignabilité ou par réduction. Dans chaque cas on peut choisir d’autoriser
des pas d’une autre relation de réécriture.
Définition 4.1.5 (Relations de réécriture conditionnelle) Soient L⊆Λ(Σ),R un
ensemble de règles de réécriture conditionnelle sur L et →
Rune relation de réécriture
sur L.
— La relation de réécritureR-conditionnelle semi-équationnelle issue de R sur L est
la relation→
R(R)seL
stratifiée par (→
R(R)seLi
)
i∈N, où→
R(R)seL0
=∅ et pour tout i∈N,
→
R(R)seLi+1
est la plus petite relation sur L qui est close par contexte sur L et telle
que, pour toute règle~d=~c⊃l7→
Rr, pour toute substitution σ:X →L,
si ~dσ ↔
∗R(R)seLi∪R
~cσ alors lσ →
R(R)seLi+1
rσ .
— La relation de réécriture R-conditionnelle par joignabilité issue de R sur L est la
relation →
R(R)jo Lstratifiée par (→
R(R)jo Li)
i∈N, où →
R(R)jo L0= ∅ et pour tout i ∈ N,
→
R(R)jo Li+1est la plus petite relation sur L qui est close par contexte sur L et telle
que, pour toute règle~d=~c⊃l7→
Rr, pour toute substitution σ:X →L,
si ~dσ ↓
R(R)joLi∪R
~cσ alors lσ →
R(R)joLi+1
rσ .
— La relation de réécritureR-conditionnelle orientée issue de R sur L est la relation
→
R(R)oL
stratifiée par (→
R(R)oLi
)
i∈N, où →
R(R)oL0
=∅ et pour tout i∈N, →
R(R)o Li+1est la plus petite relation sur L qui est close par contexte sur L et telle que, pour
toute règle~d=~c⊃l7→
Rr, pour toute substitution σ:X →L,
si ~dσ →
∗R(R)oLi∪R
~cσ alors lσ →
R(R)oLi+1
rσ .
Remarque 4.1.6 Rappelons que le pas de réécriture conditionnelle, c’est-à-dire le fait
de savoir si un terme se réécrit en un autre, n’est en général pas décidable [Kap84]
(voir aussi [Ohl02]), même pour des systèmes de réécriture donnant lieu à des relations
fortement normalisantes.
Il est parfois pratique d’écrire « réécriture se-R-conditionnelle », « réécriturejo-R
-condi-tionnelle » et « réécriture o-R-conditionnelle » au lieu de, respectivement, « réécriture
Chapitre 4 Réécriture conditionnelle
R-conditionnelle semi-équationnelle », « réécritureR-conditionnelle par joignabilité », et
« réécritureR-conditionnelle orientée ». Lorsque→
R=∅, on écrit→
RXau lieu de→
R(R)X(X∈{se, jo, o}). Dans ce cas, nous parlons de « réécriture X-conditionnelle » au lieu de
« réécritureX-R-conditionnelle ».
Nous devons vérifier que nous avons bien défini des relations de réécriture.
Proposition 4.1.7 SoitL⊆Λ(Σ),Run ensemble de règles de réécriture conditionnelle
surLet→
Rune relation de réécriture sur L. Alors→
R(R)XLi
est une relation de réécriture
sur L pour toutX∈{se, jo, o}, et tout i∈N.
Preuve. Par induction suri∈N, en utilisant le lemme2.2.3.
Lorsque le contexte le permet, nous écrivons→
RXi
pour désigner→
RXLi
. Une forme de
réécriture conditionnelle importante en pratique est la réécriture conditionnellenormale.
C’est un cas particulier de réécriture orientée et de réécriture par joignabilité.
Définition 4.1.8 (Relation de réécriture conditionnelle normale) SoitL⊆Λ(Σ),
Run ensemble de règles de réécriture conditionnelle surL, →
Rune relation de réécriture
surLetX∈{jo, o}. Si pour toute règle~d=~c⊃l7→
Rrles termes~c sont clos et en forme
→
R(R)X-normale, alors la relation de réécriture →
R(R)Xest une relation de réécriture
R-conditionnelle normale.
La propriété suivante, dont la preuve est longue mais évidente, dit qu’il n’y a en fait
qu’une seule relation de réécriture normale.
Proposition 4.1.9 SoitL⊆Λ(Σ),Run ensemble de règles de réécriture conditionnelle
surLet→
Rune relation de réécriture surL. Alors →
R(R)joestR-normale si et seulement
si→
R(R)ol’est aussi et dans ce cas→
R(R)jo=→
R(R)o.
Preuve. La preuve se fait par induction sur les stratifications de →
R(R)joet →
R(R)o.
Pour i ∈ N et X ∈ {jo, o}, nous disons que →
R(R)Xi+1
est normale si pour toute règle
~d=~c⊃l7→
Rrles termes~csont clos et en forme→
R(R)Xi
-normale. Par convention, nous
disons que→
R(R)X0
est toujours normale. Il est évident que si→
R(R)Xest normale, alors
→
R(R)Xi
est normale pour touti≥0.
— Tout d’abord, supposons que →
R(R)josoit normale. On montre par induction
sur i ∈ N que →
R(R)oi
est normale et que →
R(R)oi
⊆→
R(R)jo. Il s’en suit que
→
R(R)o⊆→
R(R)jo, et donc que→
R(R)oest normale.
Le cas de basei=0 est trivial parce que→
R(R)jo0
=∅=→
R(R)o 0.
Supposons la propriété vraie pour i ≥0, et montrons que →
R(R)oi+1
est normale.
Pour toute règle ~d = ~c ⊃ l 7→
Rr, comme les termes ~c sont en forme →
R(R)jo-normale, ils sont en forme en forme→
R(R)oi
-normale par hypothèse d’induction. Il
s’en suit que→
R(R)oi+1
est normale.
Maintenant, si t →
R(R)oi+1
u, alors il existe une règle ~d = ~c ⊃ l 7→
Rr, une
substitution σ:X → L et un contexte C[ ] :L →L tels que t=C[lσ],u= C[rσ]
4.2 Exemples
Dans le document
Définitions par réécriture dans le lambda-calcul : confluence, réductibilité et typage
(Page 86-93)