Chapitre 5 Systèmes de réduction d'expressions avec motifs
Ce chapitre est consacré à la présentation et à l'étude d'un
formalisme de réécriture d'ordre supérieur incorporant un système de
filtrage sur des motifs "à la ML". Ce formalisme, que nous
appellerons en français Systèmes de Réduction d'Expressions avec
Motifs ou en anglais Expressions Reduction Systems with
Patterns (ERSP), reprend globalement le principe du système de
filtres utilisé pour le λ Pw-calcul (c.f.
chapitre 4). Le formalisme des ERSP est une
extension au filtrage du formalisme bien connu des ERSs [Kha90]
et plus précisément des SERSs [BKR00].
Les ERSP peuvent aussi être considérés comme une extension à la
réécriture d'ordre supérieur du λ Pw-calcul (bien que les mécanismes
de substitution et de filtrage soient implicites dans ce cadre) tout
comme les formalismes de réécriture d'ordre supérieur
classiques [Klo80, Nip91, Kha90] peuvent être considérés
comme des extensions du λ-calcul.
En tant qu'extension des ERSs, les ERSP permettent de combiner la
réécriture du premier ordre et un mécanisme d'abstraction. En tant qu'extension du
λ Pw-calcul, ils permettent en fait de combiner la réécriture du
premier ordre et une version "implicite" du λ Pw-calcul.
De même, tout comme les ERSs permettent de redéfinir le λ-calcul,
les ERSP permettent de redéfinir le λ Pw-calcul. Cette
redéfinition étant par essence même au moins aussi longue que la
définition présentée au chapitre 4, nous ne la
proposerons pas dans cette courte introduction. En revanche, la
version "implicite" du λ Pw-calcul, qui consiste en fait en une
généralisation de la règle β au filtrage, est très aisément
présentable. En effet, cette règle, qui d'une certaine manière peut
être considérée comme un "modèle" du mécanisme de réduction à
l'œuvre dans les langages de programmation fonctionnelle modernes
est la suivante:
(βPM) app(λ X. M,N)→ M{X by N}
|
où X est une méta-variable de motif, une variable pouvant être
remplacée par n'importe quel motif, et M et N sont des
méta-variables de termes, des variables pouvant être remplacées par
n'importe quel terme. Informellement, la βPM-règle peut être
traduite par: "Pour connaître la valeur de l'application d'une
fonction (éventuellement définie par cas) λ X. M à un
argument N, il suffit de connaître la valeur du terme M dans
lequel le terme N a été filtré par le motif X".
Ainsi, si nous nous donnons la définition suivante pour la fonction
plus sur les entiers:
plus(N,M)→plus
app(λ | ⎡
⎣ | ξ ∣ 0,s(n) | ⎤
⎦ | . | ⎡
⎣ | ξ ∣ M,s(plus(n,M)) | ⎤
⎦ | ,N)
|
nous obtiendrons la séquence de réduction suivante (dans laquelle nous
identifierons les notation 3 et s(s(s(0))) pour plus de clarté).
plus(4,2) | →plus | app(λ [ξ ∣ 0,s(n) ]. [ξ ∣ 2,s(plus(n,2)) ],4) |
| →βPM | [ξ ∣ 2,s(plus(n,2)) ]{[ξ ∣ 0,s(n) ] by 4} |
| = | [ξ ∣ 2,s(plus(n,2)) ]{ξ ▷ 2,n ▷ 3 } |
| = | s(plus(3,2)) |
| —→* | 6 |
La suite de ce chapitre sera organisée comme suit. Tout d'abord nous
présenterons, dans la section 5.1, la grammaire
formelle des ERSP ainsi que certaines notions de base telles que
l'ensemble des variables libres d'un terme ou encore la notion de
variables libres localisées d'un terme. La
section 5.2 sera alors consacrée à la définition de la
notion de règle de réécriture et de réduction induite par un
système de réécriture et à la présentation de quelques résultats
préliminaires tels que la préservation de l'ensemble des variables
libres d'un terme par réduction.
La section 5.4 sera alors consacrée à la définition
d'un sous ensemble des ERSP correspondant aux systèmes orthogonaux
des formalismes de réécriture d'ordre supérieur classiques: les
systèmes l-constructeurs orthogonaux. Ces systèmes seront à la fois
orthogonaux et ne permettront le filtrage que sur des fonctions dites
constructeurs qui ne peuvent être réduites. La
section 5.5 est consacrée à la
démonstration de la confluence, par la méthode classique de Tait et
Martin-Löf [Bar84], des sytèmes l-constructeurs
orthogonaux.
5.1 Définition des ERSP
Cette section est consacrée à la définition des Systèmes de
Réduction d'Expressions avec Motifs (ERSP).
Nous allons tout d'abord présenter la syntaxe des ERSP. Nous
définirons alors les notions de variable libre et liée
dans un ERSP. Les ERSP utilisant une extension du système de
filtre du λ Pw-calcul, nous aurons à nouveau besoin d'une notion de
variable libre localisée qui généralise la notion classique de
variable libre et de la notion de terme acceptable.
Nous donnerons alors une relation réalisant le filtrage d'un terme par
un motif puis nous définirons la notion de règle de réécriture
dans les ERSP avant de présenter la notion de relation de
réduction admissible dans notre formalisme. Informellement, la
relation de réduction admissible induite par système de réécriture
R sera la restriction de la notion de réécriture induite par R
aux termes acceptables.
Pour présenter la grammaire des ERSP, nous avons besoin de plusieurs
ensembles de variables. Tous ces ensembles sont supposés infinis
dénombrables et deux à deux disjoints. Nous utiliserons dans le cadre
des ERSP:
-
Un ensemble UV de variables (usuelles) qui seront par
la suite notées x, y, z, …
- Un ensemble CV de variables de choix qui seront par la
suite notées ξ, ψ, …
- Un ensemble B de lieurs qui seront par la suite
notés λ, µ, …
- Un ensemble F de symboles de fonction équipé
d'une fonction ar() d'arité. Ces symboles de fonction serons
notés f, g, …
- Un ensemble TV de méta-variables de termes qui serons notées
M, N, …
- Enfin un ensemble PV de méta-variables de motifs qui seront
notées X, Y, …
Nous utiliserons dans la suite les notations x, y,…pour
dénoter indifféremment une variable usuelle, une variable de choix,
une méta-variable de terme ou une méta-variable de motif.
Grâce à ces six ensembles nous pouvons présenter la grammaire des
ERSP.
Définition 1 (Grammaire des ERSP)
Les méta-motifs et les
méta-termes des ERSP sont donnés par:
(Méta-motifs) P | ::= | x | Variable (usuelle) |
| ∣ | X | Méta-variable de motif |
| ∣ | f(P,…,P) | Méta-motif algébrique |
| ∣ | [ξ ∣ P,…,P ] | Méta-motif de choix |
| ∣ | @(P,…,P) | Méta-motif de contraction |
| ∣ | _ | Wildcard |
|
|
|
(Méta-termes) T | ::= | x | Variable (usuelle) |
| ∣ | M | Méta-variable de terme |
| ∣ | f(T,…,T) | Méta-terme algébrique |
| ∣ | [ξ ∣ T,…,T ] | Méta-terme de choix |
| ∣ | µ P. T | Méta-abstraction |
| ∣ | T{P by T} | Méta-filtrage |
Ces constructions sont "l'union" de celles du λ Pw-calcul
et des formalismes classiques de réécriture d'ordre supérieur.
Nous supposons de plus que:
-
Les constructeurs [ξ ∣ . ] et @(.) sont d'arité variable
non nulle.
- Une même variable de choix ξ apparaît toujours avec la
même "arité": un méta-terme de la forme
µ [ξ ∣ x ]. [ξ ∣ u,v ] n'est pas autorisé.
Dans la suite les méta-termes seront notés T, L, R, … et
les méta-motifs P, Q, …
Un motif est un méta-motif dans lequel il n'y a aucune
occurrence de méta-variable de motif. Les motifs seront notés p,
q,…dans la suite de ce document.
Un pré-terme est un méta-terme ne contenant que des
motifs et ne contenant aucune occurrence de méta-variable de terme.
Un terme est un pré-terme sans occurrence du constructeur de
méta-filtrage. Les termes et les pré-termes serons notés t, u, …
La fonction fibonnaci
spécifiée par les équations:
fib(0)=0
fib(1)=1
fib(n+2)=fib(n)+fib(n+1)
peut ainsi être définie comme suit:
-
Nous nous donnons une représentation des entiers naturel par 0
et s, deux symboles de fonction + et fib d'arité 2 (le
symbole + sera noté en position infixe),
- une variable de choix ξ d'arité 3,
- un lieur λ et un symbole de fonction app d'arité 2,
- et les règles:
app(λ X. M,N) | | M{X by N} |
fib(M) | | app(
λ | ⎡
⎣ | ξ ∣ 0,s(0),s(s(x)) | ⎤
⎦ | . | ⎡
⎣ | ξ ∣ 0,s(0),fib(x)+fib(s(x)) | ⎤
⎦ | ,
M) |
|
| |
|
Intuitivement, cette dernière règle défini le résultat de
l'application de la fonction
fib à un argument M, comme étant le résultat de l'application de
M à la fonction retournant 0 si M=0, 1 si M=1 et
fib(n+1)+fib(n) si M=n+2.
Comme dans le cadre du λ Pw-calcul, il nous faut définir l'ensemble
des variables liées par un méta-motif.
Définition 2 (Variables et méta-variables de motifs liées par un motif)
L'ensemble PMV(P) (resp. Var(P)) des méta-variables de motifs (resp. variables) liées
par un méta-motif P est l'ensemble des méta-variables (resp.
variables) apparaissant dans le motif P.
Ainsi, nous avons:
PMV(f(X,x)) | = | {X} |
Var(f(X,x)) | = | {x} |
Définition 3 (Méta-motif linéaire)
Un méta-motif P sera dit linéaire si
chaque variable et chaque méta-variable de motif apparaît au plus un fois
dans P.Un méta-terme T sera dit p-linéaire
si tout les méta-motifs de T sont linéaires.
Le méta-motif f(X,x) sera ainsi linéaire tandis que les
méta-motifs f(X,X) et f(x,x) ne le seront
pas.
Notation 4
Dans toute la suite de ce chapitre, nous utiliserons la notation
P∈ P' pour exprimer le fait que P est un sous-méta-motif de
P'.
Une position dans un méta-terme est un mot sur l'alphabet
N. L'ensemble des positions d'un
méta-terme T, noté Pos(T), est défini par une extension de la
définition 20.
Définition 5 (Positions dans un méta-terme) L'ensemble, Pos(T), des
positions d'un méta-terme T est défini par induction sur la
structure de T comme suit:
-
Pos(x)=Pos(M)={є}
- Pos(f(T1,…,Tn))=Pos([ξ ∣ T1,…,Tn ])={є}∪∪i=1n(∪p∈Pos(Ti)i.p).
- Pos(µ P. T)={є}∪(∪p∈Pos(T)
1.p)
- Pos(T1{P by T2})
={є}∪(∪p∈Pos(T1)
1.1.p)∪(∪p∈Pos(T2) 2.p)
Nous appellerons position propre toute
position autre que la position є.
La définition de l'ensemble des positions d'un méta-filtrage peut être
justifiée en considérant que informellement
T1{P by T2} "est équivalent" quand nous raisonnons sur les
positions à "app(λ P. T1,T2)".
Nous allons maintenant définir le sous-méta-terme à une position
donnée d'un méta-terme donné. Cette définition est une extension de la
définition 21.
Définition 6 (Sous-méta-termes d'un méta-terme)
Étant donné un méta-terme T et une position p de ce méta-terme,
nous définissons le sous-méta-terme de T à la position p, noté
T∣p, par induction sur p comme suit:
T∣є | =def | T |
f(T1,…,Tn)∣i.p | =def | Ti∣p |
| =def | Ti∣p |
µ P. T∣1.p | =def | T∣p |
T1{P by T2}∣1.1.p | =def | T1∣p |
T1{P by T2}∣2.p | =def | T2∣p |
|
|
Nous aurons besoin au cours de la preuve de confluence de la notion de
position rigide.
Définition 7 (Position rigide)
Soit T un méta-terme. L'ensemble, RP(T), des
positions rigides de T est:
RP(T)= | ⎧
⎨
⎩ | p∈Pos(T)∣ T∣p∉ TV
| ⎫
⎬
⎭ |
Nous allons maintenant présenter la notion de chemin de liaison
à une position p dans un méta-terme T. Informellement ce "chemin"
est l'ensemble des variables et méta-variables qui se trouvent liées sur
le chemin décrit par la position p depuis la racine de T.
Définition 8 (Chemin de liaison)
Soit T un méta-terme et p une position de T. Nous définissons
le chemin de liaison de T à la position
p, noté PP(T,p), par induction sur p comme suit:
PP(T,є) | =def | ∅ |
PP(f(T1,…,Tn),i.p) | =def | PP(Ti,p) |
PP([ξ ∣ T1,…,Tn ],i.p) | =def | PP(Ti,p) |
PP(µ P. T,1.p) | =def | PMV(P)∪Var(P)∪ PP(T,p) |
PP(T1{P by T2},1.1.p) | =def | PMV(P)∪Var(P)∪ PP(T1,p) |
PP(T1{P by T2},2.p) | =def | PP(T2,p) |
Ainsi, si T=M{f(X,x) by µ [ξ ∣ Y,s(Y) ]. N},
nous avons:
PP(T,2) | = | ∅ |
PP(T,1.1) | = | {X,x} |
PP(T,2.1) | = | {Y,ξ} |
Nous supposerons dans la suite que les différents méta-motifs se
trouvant sur un même chemin de liaison d'un méta-terme ne partagent
pas de méta-variables de motifs i.e. nous supposons que nous ne serons jamais
dans le cas λ X. λ X. M. En revanche nous pourrons
avoir un méta-terme de la forme λ f(X,X). M.
Cette restriction peut être considérée comme une extension des
conventions dites de Barendregt [Bar84].
Nous allons maintenant définir l'ensemble des méta-variables
(libres) et des variables libres d'un méta-terme.
Définition 9 (Méta-variables, variables libres et variables liées)
L'ensemble des méta-variables d'un méta-terme T, noté
FMV(T), est défini par induction sur T comme suit:
FMV(x) | =def | ∅ |
FMV(M) | =def | {M} |
FMV(f(T1,…,Tn)) | =def | ∪1≤ i≤ n FMV(Ti) |
FMV([ξ ∣ T1,…,Tn ]) | =def | ∪1≤ i≤ n FMV(Ti) |
FMV(µ P. T) | =def | FMV(T) |
FMV(T1{P by T2}) | =def | FMV(T1)∪ FMV(T2) |
Cet ensemble est celui des méta-variables de termes apparaissant
(obligatoirement libres) dans T. Il nous permettra en particulier
de définir les règles de réductions dans les ERSP.L'ensemble des variables libres
d'un méta-terme T, noté FV(T), est défini par induction sur
T comme suit:
FV(x) | =def | {x} |
FV(M) | =def | ∅ |
FV(f(T1,…,Tn)) | =def | ∪1≤ i≤ n FV(Ti) |
FV([ξ ∣ T1,…,Tn ]) | =def | {ξ}∪∪1≤ i≤ n FV(Ti) |
FV(µ P. T) | =def | FV(T)∖Var(P) |
FV(T1{P by T2}) | =def | ( FV(T1)∖Var(P))∪ FV(T2) |
Toute variable apparaissant dans un méta-terme T qui n'est pas
libre dans T est liée dans
T. Nous noterons par la suite, BV(T), l'ensemble des
variables liées de T. Nous supposerons disjoints les ensembles des
variables libres et liées d'un pré-terme. Nous travaillerons tout au
long de ce chapitre modulo α-conversion sur les pré-termes.
Ainsi si nous considérons le méta-terme suivant:
T=f(u,x,M){f(X,x) by µ | ⎡
⎣ | ξ ∣ x',s(y) | ⎤
⎦ | . g(N,t)} |
Nous aurons:
PMV(T) | = | {X} |
FMV(T) | = | {M,N} |
FV(T) | = | {u,t} |
BV(T) | = | {x,x',y,ξ} |
Notation 10
Nous noterons désormais MV(T)=def PMV(T)∪ FMV(T).
Dans tous les formalismes de réécriture d'ordre supérieur classiques
existe une notion de méta-terme bien formé:
Définition 11 (Méta-terme bien formé)
Un méta-terme T sera dit bien formé si
et seulement si FV(T)=∅.
Ainsi le méta-terme
T=f(u,x,M){f(X,x) by µ [ξ ∣ x,s(y) ]. g(N,t)}
n'est pas bien formé puisque FV(T)={u,t} alors que le
méta-terme λ [ξ ∣ x,y ]. M est, lui, bien formé.
Nous aurons de plus besoin, comme dans le cas du λ Pw-calcul du
sous-ensemble des termes acceptables. En effet, si nous
considérons la βPM-règle et le terme
t=app(λ [ξ ∣ x,y ]. [ξ ∣ y,x ],0), nous
comprenons, bien que nous n'ayons pas encore défini la notion de
réduction dans le cadre des ERSP, que la réduction t→βPM x
sera "possible" dans ce nouveau formalisme comme dans le cadre du λ Pw-calcul.
Nous présentons donc d'ores et déjà les notions de variables
libres localisées d'un pré-terme et de terme acceptable.
Définition 12 (Variables libres localisées d'un pré-terme)
Soit t un pré-terme, ξ une variable de choix et i un
entier inférieur à l'arité de ξ. Par α-conversion,
nous pouvons supposer que ξ
n'apparaît pas liée dans t. Nous définissons alors l'ensemble
des variables libres
localisées de t (pour la variable de choix ξ et le
choix i) par induction sur t comme suit:
FVξi(x) | =def | {x} |
FVξi(f(t1,…,tn)) | =def | ∪1≤ j≤ n FVξi(tj) |
FVξi([ξ ∣ t1,…,tn ]) | =def | FVξi(ti) |
FVξi([ψ ∣ t1,…,tn ]) | =def | {ψ}∪∪1≤ j≤ n FVξi(tj) |
FVξi(µ p. t) | =def | FVξi(t)∖Var(p) |
FVξi(t1{p by t2}) | =def | ( FVξi(t1)∖Var(p))∪ FVξi(t2) |
Ainsi,
FVξi([ψ ∣ x,y,z ])={x,y,z,ψ}
pour tout i et même, puisque nous travaillons modulo
α-conversion:
FVξ1(µ | ⎡
⎣ | ξ ∣ x,y | ⎤
⎦ | . | ⎡
⎣ | ξ ∣ f(x,z),u | ⎤
⎦ | )=
FVξ1(µ | ⎡
⎣ | ψ ∣ x,y | ⎤
⎦ | . | ⎡
⎣ | ψ ∣ f(x,z),u | ⎤
⎦ | )={z,u} |
Remarque 13
Nous remarquons que:
-
FVξi(t)⊂ FV(t)
- Cette inclusion est une égalité si ξ∉ FV(t)
Définition 14 (pré-termes acceptables)
L'ensemble des pré-termes
acceptables est défini par induction sur la structure des
pré-termes comme suit:
-
les variables usuelles sont acceptables,
- si t1,…,tn sont acceptables alors
f(t1,…,tn) et [ξ ∣ t1,…,tn ] sont
acceptables,
- si t est acceptable, p est un motif tel que pour tout
[ξ ∣ p1,…,pn ]∈ p nous avons pour tout 1≤ i,j ≤ n
(i≠ j):
( FVξj(t)∖ BV(pj))⋂ BV(pi)=∅
|
alors µ p. t est acceptable
- Si t2 et
µ p. t1 sont acceptables alors t1{p by t2} est
acceptable.
Par cette définition, les pré-termes
µ [ξ ∣ x,x ]. [ξ ∣ x,x ] et
µ [ξ ∣ x,u ]. [ξ ∣ x,u ] sont acceptables alors que
t=µ [ξ ∣ x,y ]. [ξ ∣ y,x ] ne l'est pas car, par exemple,
FVξ1([ξ ∣ y,x ])={y} et que
({y}∖{x})∩{y}≠∅.
Nous aurons de plus besoin de la notion de contexte.
Définition 15 (Pré-contexte)
Un pré-contexte est un pré-terme
possédant une et une seule occurrence du symbole de fonction 0-aire
. Cette définition est une extension naturelle aux
pré-termes des ERSP de la définition 33.Un contexte est un pré-contexte ne possédant aucune
occurrence du constructeur de méta-filtrage.
Nous remarquons que la notion de pré-terme acceptable n'est pas close
par pré-contexte. En effet bien que le pré-terme [ξ ∣ x,y ] soit
acceptable, le pré-terme µ [ξ ∣ y,y ]. [ξ ∣ x,y ] ne l'est
pas.
Nous devons maintenant définir les notions de méta-substitution
et de substitution.
Définition 16 (Méta-substitutions et substitutions)
Une méta-substitution σ est un quadruplet
(σ TV,σ PV,σ UV,σ CV) tel que:
-
σ TV est un remplacement (c.f.
définition 25) de l'ensemble
TV dans celui des termes,
- σ PV est un remplacement de l'ensemble
PV dans l'ensemble des motifs,
- σ UV est un remplacement de l'ensemble
UV dans l'ensemble des termes,
- σ CV est un remplacement de l'ensemble
CV dans l'ensemble des entiers.
Par la suite, noterons fréquemment σm le couple
(σ TV,σ PV) et σv le couple
(σ UV,σ CV).
Une substitution est une méta-substitution telle que
σm=id.
Une méta-substitution σ sera dite bien
formée si et seulement si:
⎛
⎜
⎜
⎝ | | FV(σm(M)) | ⎞
⎟
⎟
⎠ | ⋂dom(σv)=∅
|
Comme dans les cas des remplacements du premier ordre
(définition 25) et des
substitutions dans les λ-calculs, nous pouvons voir les
méta-substitutions comme des couples d'ensembles de couples.
Définition 17 (Union de deux méta-substitutions) L'union de deux
méta-substitutions σ1 et σ2 est notée
σ1 ⊔ σ2. Cette union (des deux ensembles) n'est
définie que si:
∀ | | ∈(dom(σ1)⋂dom(σ2)),
σ1( | | )=σ2( | | )
|
Nous sommes désormais en mesure définir l'opération de filtrage
d'un terme par un motif. Cette opération est une
opération ensembliste retournant un ensemble de substitutions.
Nous donnerons dans la suite de ce chapitre un critère permettant
d'assurer l'unicité de la substitution retournée.
Définition 18 (Filtrage)
L'opération de filtrage d'un terme t par
un motif p, notée { { p by t } } , retourne un ensemble de
substitutions défini par induction sur p comme suit:
| id | ∈ | { { _ by t } } |
| {x ▷ t } | ∈ | { { x by t } } |
| σ1 ⊔ … ⊔ σn | ∈ | { { @(p1,…,pn) by t } } |
où σi∈{ { pi by t } } |
| σ1 ⊔ … ⊔ σn | ∈ | { { f(p1,…,pn) by f(t1,…,tn) } } |
où σi∈{ { pi by ti } } |
∀ i, | {ξ ▷
i} ⊔ σi | ∈ | { { [ξ ∣ p1,…,pn ] by t } } |
où σi∈{ { pi by t } } |
Dans la suite, nous utiliserons la notation { { p by t } } pour dénoter
l'unique élément de cet ensemble quand celui-ci sera un singleton.
Nous remarquons que:
-
dans les trois derniers cas, { { p by t } } n'est
défini que si ⊔ l'est.
- Toute les substitutions de { { p by t } } sont bien formées puisqu'elles ne
lient pas de méta-variables.
- Le non déterminisme
de l'opération { { by } } provient uniquement du constructeur motif de
choix. En d'autres termes, si aucun motif de choix n'est présent dans
p, alors, sous réserve d'existence, { { p by t } } est unique.
L'ensemble { { [ξ ∣ 0,x ] by 0 } } contient deux
substitution {a ▷ 1 } et {a ▷ 2, x ▷ 0
}. Ceci vient du fait que le motif [ξ ∣ 0,x ] contient
deux sous-motifs qui se "chevauchent".
Définition 19 (Méta-substitution acceptable et linéaire)
Soit S un ensemble de variables et de méta-variables de termes. Une
méta-substitution σ est dite
p-linéaire par rapport à S
(respectivement acceptable par rapport à S) si et seulement si:
∀ | | ∈ S, σ | | est p-linéaire (resp. acceptable)
|
Une méta-substitution σ est dite acceptable (resp.
p-linéaire) si et seulement si σ est acceptable (resp.
linéaire) par rapport à dom(σ).
Lemme 20
Si t est un terme acceptable et si la substitution σ
appartient à { { p by t } } alors σ est acceptable.
-
- Preuve.
Nous raisonnons par induction sur la structure du motif p.
-
Si p= _ alors, par définition de { { by } } , nous devons
avoir σ=id et le résultat est alors immédiat.
- Si p=x, par hypothèse.
- Si p=f(p1,…,pn) alors, par définition de
{ { by } } , nous devons avoir t=f(t1,…,tn) et
∀ i, { { pi by ti } } est défini. Puisque, par définition des
termes acceptables, chaque ti est acceptable, par hypothèse d'induction pour
tout i, l'ensemble { { pi by ti } } est composé de substitutions
acceptables. Le résultat est alors immédiat.
- Si p=@(p1,…,pn) ou p=[ξ ∣ pi,…,pn ]
nous raisonnons comme dans le cas précédent.
Nous allons maintenant définir l'application d'une méta-substitution
σ à un méta-terme T.
Définition 21 (Application d'une méta-substitution)
Soient σ=(σm,σv) une méta-substitution et T un
méta-terme. L'application de
σ à T (ou instanciation de T par
σ) est définie comme un ensemble de termes, noté σ(T),
qui est obtenu en deux pas:
-
Tout d'abord, nous évaluons le remplacement du premier ordre
σm(T). Nous obtenons alors un pré-terme t. Si t
n'est pas un pré-terme, l'application n'est pas définie.
- Nous évaluons alors l'ensemble σv(t) par induction sur
la structure de t, en utilisant l'α-conversion pour
éviter les captures de variables, comme suit:
σv x | ∈ | σv(x) | si x∈dom(σv) |
x | ∈ | σv(x) | si x∉dom(σv) |
µ p. t' | ∈ | σv(µ p. t) | si t'∈σv(t) |
f(t'1,…,t'n) | ∈ | σv(f(t1,…,tn)) | si t'i∈σv(ti) |
[ξ ∣ t'1,…,t'n ] | ∈ | σv([ξ ∣ t1,…,tn ]) | si
t'i∈σv(ti) et
ξ∉dom(σv) |
t'i | ∈ | σv([ξ ∣ t1,…,tn ]) | si
t'i∈σv(ti) et (ξ ▷ i)∈σv |
t' | ∈ | σv(t1{p by t2}) | si
t'2∈σv(t2), σ'v∈{ { p by t'2 } } |
| | | t'∈(σ'v ⊔ σv)(t) |
Nous remarquons de plus que si le méta-terme T ne contient pas de
constructeur de méta-filtrage alors, sous réserve d'existence,
σ(T) est un singleton.
Enfin, nous remarquons que le second pas de cette instanciation est
nécessaire y compris dans le cas où σv=id. En effet, le
pré-terme t peut contenir des constructeurs de méta-filtrage qui doivent
être éliminés par cette seconde phase.
Afin de clarifier le fonctionnement de cette opération, considérons la
méta-substitution σ=(σm,σv) où
σm={X ▷ [ξ ∣ x,f(z,y) ],M ▷
[ξ ∣ g(x,x),z ],N ▷ f(x,x)} |
et |
σv=id |
Afin d'évaluer l'instanciation du méta-terme T=M{X by N}
par σ, nous commençons par appliquer le remplacement du premier
ordre
t=σm(T)= | ⎡
⎣ | ξ ∣ g(x,x),z | ⎤
⎦ | { | ⎡
⎣ | ξ ∣ x,f(z,y) | ⎤
⎦ | by f(x,x)} |
Nous appliquons alors une passe d'α-conversion et obtenons:
t= | ⎡
⎣ | ξ ∣ g(x',x'),z | ⎤
⎦ | { | ⎡
⎣ | ξ ∣ x',f(z,y) | ⎤
⎦ | by f(x,x)} |
Nous devons alors évaluer
{ { [ξ ∣ x',f(z,y) ] by f(x,x) } } . Nous obtenons
{σ1,σ2} où σ1={ξ ▷ 1,x' ▷
f(x,x)} et σ2={ξ ▷ 2,z ▷ x,y ▷ x}.
Finalement nous obtenons l'ensemble:
⎧
⎨
⎩ | g(f(x,x),f(x,x)),x | ⎫
⎬
⎭ |
Lemme 22
Si t est un pré-terme acceptable et si la substitution
σ est acceptable par rapport à FV(t) alors σ(t)
ne contient que des termes acceptables.
-
- Preuve.
Nous raisonnons par induction sur la structure du terme t.
-
Si t=x, alors le résultat est immédiat par hypothèse.
- Si t=f(t1,…,tn) ou si
t=[ξ ∣ t1,…,tn ], le résultat est immédiat par hypothèse d'induction.
- Si t=µ p. t' alors, par α-conversion, nous
pouvons supposer que codom(σ)∩Var(p)=∅. Dès
lors le résultat est immédiat par hypothèse d'induction.
- Si t=u{p by t'} alors, par α-conversion, nous
pouvons supposer que codom(σ)∩Var(p). Dès lors, par
hypothèse d'induction σ(t') ne contient que des termes acceptables et donc,
par le lemme 20,
{ { p by t' } } ne contient que des termes acceptables. Nous en
déduisons que si σ'∈{ { p by t' } } alors
σ' ⊔ σ est acceptable par rapport à FV(u).
Le résultat est alors obtenu par hypothèse d'induction.
5.2 Règles de réécriture et relation de réduction
Cette section définit formellement les notions de système de
réécriture et de relation de réduction dans le cadre des
ERSP. Nous présenterons de plus un certain nombre de résultats
techniques tels que la préservation de l'ensemble des variables libres
et de la notion d'acceptabilité par réduction.
Définition 23 (ERSP)
Un système de réduction d'expressions
avec motifs, ou ERSP, R est un ensemble de règles de
réécriture
notées indifféremment L→ R ou (L,R) telles que:
-
L et R sont des méta-termes bien formés,
- L=f(T1,…,Tn) ou L=µ P. T,
- MV(R)⊂ MV(L),
- L ne contient aucune occurrence du constructeur de méta-filtrage.
La βPM-règle,
app(λ X. M,N)M{X by N}, appartient
à ce formalisme. En revanche, ni M→ 0, ni f(x)→ x, ni
f(M)g(M,N), ni f(M)λ X. M ne
sont des règles dans ce formalisme.
Afin de garantir la préservation des variables libres par réduction,
nous aurons besoin de satisfaire la condition de chemin.
Définition 24 (Condition de chemin)
Soit M une méta-variable de terme et T un méta-terme. Soient alors
p1,…,pn l'ensemble de toutes les positions des occurrences
de M dans T et l1,…,ln les chemins de liaison associés
à ces positions. Une méta-substitution σ satisfait la
condition de chemin pour la
méta-variable de terme M et le méta-terme T si et seulement si:
∀ | | ∈ FV(σm(M)), (∀ 1≤ i≤
n, | | ∈σm li)∨(∀ 1≤ i≤ n, | | ∉σm li)
|
où σm li=def∪x∈ l FV(σm x).Nous étendons cette notion aux règles de réécriture comme suit: une
méta-substitution σ satisfait la condition de chemin
pour une méta-variable de terme M et une règle de réécriture L→ R si
et seulement si σ satisfait la condition de chemin pour M
et ↦(L,R) où ↦ est un nouveau symbole de
fonction.
Nous remarquons que si σ satisfait la condition de chemin pour
un méta-terme T, alors σ satisfait la condition de chemin
pour tout sous-méta-terme de T.
Le contre-exemple classique à la condition de chemin est obtenu en
considérant la η-règle du λ-calcul [Kha90, BKR00]. Une
règle similaire mais utilisant le filtrage est la règle:
λ f(X). M→ M. La méta-substitution
σ={X ▷ x, M ▷ x} ne satisfait pas la
condition de chemin pour M et cette règle.
Contrairement au λ Pw-calcul pour lequel nous pouvions
vérifier que les règles préservaient la notion d'acceptabilité
par réduction (c.f. lemme 20), nous
ne pouvons ici assurer que cette notion sera préservée par réduction
grâce aux règles de réécriture. Nous avons fait le choix de réduire le
système de réduction induit par un système de règles plutôt que de
réduire la notion de règles de réécriture. Pour cela nous introduisons
maintenant la notion de méta-substitution admissible.
Définition 25 (Méta-substitution admissible)
Une méta-substitution σ est dite
admissible pour un méta-terme T
si et seulement si:
-
L'ensemble σ(T) ne contient que des termes
acceptables.
- La méta-substitution σ satisfait la condition de
chemin pour toutes les méta-variables de termes de FMV(T).
Une méta-substitution σ est dite admissible pour une
règle L→ R si et seulement si σ est admissible pour
↦(L,R) où ↦ est un nouveau symbole de
fonction.
Quelques remarques s'imposent à ce stade. Tout d'abord, la notion
d'admissibilité d'une méta-substitution σ pour une règle
L→ R implique que σ(L) et σ(R) soient définis et
donc en particulier dom(σm)⊂ MV(L).
Remarquons aussi que si L→ R est une règle et si σ est
admissible pour L→ R alors σ(L) est un singleton puisque
L ne contient pas d'occurrence du constructeur de méta-filtrage.
Définition 26 (Relation de réduction induite par un système)
Soit R un ERSP. Un terme
t1 se réécrit (par R) en
t2, ce que nous noterons t1—→aR t2 (ou plus simplement
t1→R t2 quand la confusion ne sera pas possible) si et
seulement si:
-
il existe une règle L→ R appartenant à R,
- il existe une méta-substitution σ bien formée et
admissible pour L→ R,
- et il existe un contexte C tel que:
t1=C(σ(L)) |
et |
t2∈ C(σ(R)) |
Remarquons que, bien que la relation de réduction —→a soit
définie sur l'ensemble de tous les termes, la réduction ne peut avoir
lieu que dans des sous-termes acceptables.
Avant de développer un exemple concret et complet de réduction, nous
allons démontrer que la relation —→a préserve bien les variables
libres et les termes acceptables.
Lemme 27
Si L→ R est une règle de réécriture et σ est une
méta-substitution admissible pour L→ R, alors:
∀ t∈σ(R), ∀ ξ∈ CV ,∀
i∈ar(ξ),
FVξi(t)⊂ FVξi(σ(L))
|
-
- Preuve.
Soit t∈σ(R). Supposons que x appartienne à
FVξi(t). Remarquons tout d'abord que, par définition
des méta-termes bien formés
(définition 11), x∉ FV(R).
Donc x a été introduite par la méta-substitution σ. Plus
précisément, il existe une méta-variable de terme M appartenant au domaine
de σ telle que x∈ FV(σ M). Donc, il existe une
position pr de R telle que l'on ait:
-
R∣pr=M
- si lpr est le chemin de liaison de R à la position
p, alors x∉σ(lpr).
Par définition des règles de réécriture, nous devons avoir
M∈ FMV(L). Il existe donc un position pl tel que
L∣pl=M. Considérons le chemin de liaison lpl
de L à la position pl. x ne peut appartenir à lpl
puisque σ satisfait la condition de chemin pour M. Deux cas
sont alors possibles:
-
Si ξ∈σ lpl alors, par la
remarque 13, nous avons FVξi(σ
L)= FV(σ L). Le résultat est alors immédiat puisque
x∈ FV(σ M)⊂ FV(σ L).
- Si ξ∉σ lpl, alors par définition des
règles de réécriture nous savons que
ξ∉ FV(L)∪ FV(R). Nous obtenons donc
x∈ FVξi(σM)⊂ FVai(σ L)
Nous déduisons de ce fait:
Lemme 28 (Préservation des variables
libres localisées) Si R est
un ERSP, t1 et t2 sont deux termes tels que t1—→aR t2
alors:
∀ ξ, ∀ i,
FVξi(t2)⊂ FVξi(t1)
|
-
- Preuve.
Le résultat est immédiat par induction sur la définition de
la relation
t1—→aR t2 et par le
lemme 27.
Corollaire 29 (Préservation des variables
libres) Si R est un ERSP, t1 et
t2 sont deux termes tels que t1—→aR t2 alors:
-
- Preuve.
Immédiat par le lemme 28 et la
remarque 13.
Lemme 30 (Preservation de la notion d'acceptabilité)
Si s est un terme acceptable et si s →R t, alors t est
un terme acceptable.
-
- Preuve.
Par induction sur la définition de s →R t et le
lemme 28.
Nous n'utiliserons désormais, sauf mention explicite du contraire, que
des termes acceptables.
Il est désormais temps de présenter un exemple concret de ERSP.
5.3 Un exemple concret
Cette section est consacrée à un exemple concret de ERSP et de
réduction dans le cadre de ce formalisme. Nous allons pour cela tout
d'abord définir un ERSP représentant la fonction map qui prend en
entrée une fonction f et une liste l et retourne la liste composée
des résultats de la fonction f appliquée aux éléments de l. Puis nous
donnerons une séquence de réductions pour un terme de ce ERSP.
La fonction map peut être spécifiée en Ocaml [Obj]
par le programme suivant:
type 'a liste =
| Vide
| Cons of 'a * 'a liste
let rec map(f,l) =
match l with
| Vide -> Vide
| Cons(h,t) -> Cons(f(h),map(f,t))
Pour pouvoir encoder cette fonction dans les ERSP il nous faut
donner au minimum les symboles de fonction suivants:
-
Vide d'arité 0.
- Cons et map d'arité 2.
Nous nous donnons alors le système de réduction R={L→ R} suivant:
L | =def | map(µ X. F,L) |
R | =def | [ξ ∣ Vide,Cons(F{X by h},map(µ X. F,t)) ]{[ξ ∣ Vide,Cons(h,t) ] by L} |
Nous enrichissons notre signature des deux symboles de fonctions
Zero d'arité 0 et S d'arité 1 ce qui nous permettra d'encoder
les entiers naturels dans notre système. Le terme définissant
la fonction pred sur les entiers est alors:
pred=defµ | ⎡
⎣ | ψ ∣ Zero,S(n) | ⎤
⎦ | . | ⎡
⎣ | ψ ∣ Zero,n | ⎤
⎦ |
Nous pouvons dès lors réduire le terme:
t1=map(pred,Cons(Zero,Cons(S(S(Zero)),Vide))) |
Pour cela, nous devons tout d'abord remarquer que t1=σ(L)
avec:
σm | = | { X ▷ [ψ ∣ Zero,S(n) ], F ▷
[ψ ∣ Zero,n ], L ▷
Cons(Zero,Cons(S(S(Zero)),Vide))
} |
et |
σv | = | id |
Donc t1—→aR σ(R) si ce dernier terme est défini.
Or nous avons:
σm(R) | = |
[ξ ∣ Vide,Cons(F{X by h},map(µ X. F,t)) ]{[ξ ∣ Vide,Cons(h,t) ] by L} | = |
|
[ξ ∣ Vide,Cons(
[ψ ∣ Zero,n ]{[ψ ∣ Zero,S(n) ] by h},map(pred,t)) ] |
{[ξ ∣ Vide,Cons(h,t) ] by Cons(Zero,Cons(S(S(Zero)),Vide))} |
|
Nous devons évaluer:
{ { [ξ ∣ Vide,Cons(h,t) ] by Cons(Zero,Cons(S(S(Zero)),Vide)) } } |
ce qui nous donne:
ρ=def{ξ ▷ 2, h ▷ Zero,t ▷ Cons(S(S(Zero)),Vide) } |
De plus, nous avons:
(id ⊔ ρ)([ξ ∣ Vide,Cons([ψ ∣ Zero,n ]{[ψ ∣ Zero,S(n) ] by h},map(pred,t)) ])= |
(id ⊔ ρ)(Cons([ψ ∣ Zero,n ]{[ψ ∣ Zero,S(n) ] by h},map(pred,t)))= |
Cons(ρ([ψ ∣ Zero,n ]{[ψ ∣ Zero,S(n) ] by h}),map(pred,Cons(S(S(Zero)),Vide))) |
Il nous faut alors calculer:
{ { [ψ ∣ Zero,S(n) ] by (id ⊔ ρ)(h) } } = |
{ { [ψ ∣ Zero,S(n) ] by Zero } } |
Le résultat de ce calcul est:
d'où:
(id ⊔ ρ ⊔ ρ')([ψ ∣ Zero,n ])= |
Zero |
Donc finalement nous avons:
t1—→aR Cons(Zero,map(pred,Cons(S(S(Zero)),Vide)))=t2 |
Une seconde étape de réécriture nous conduit à la forme normale
attendue:
Cons(Zero,Cons(S(Zero),Vide)) |
5.4 Vers un ensemble d'ERSP confluents
Cette section est consacrée à l'introduction d'un sous-ensemble des
ERSP, les ERSP l-constructeurs et orthogonaux,
dont nous démontrerons la confluence dans la section suivante.
Intuitivement, un ERSP orthogonal est un ERSP linéaire
gauche (i.e. pour chaque règle L→ R, toute méta-variable apparaît
au plus une fois dans L) et non recouvrant (sans paire
critique). Il est connu que les systèmes du premier
ordre [BN98] et d'ordre supérieur
orthogonaux [Raa96] sont confluents.
Un ERSP l-constructeur est un ERSP dans lequel l'ensemble des
symboles de fonction peut être partitionné en l'ensemble des
constructeurs qui ne peuvent pas être réduits (mais sur
lesquels on peut filtrer) et l'ensemble des symboles définis
(qui sont les symboles de tête des membres gauche des règles) et dont
tout les motifs sont linéaires. La nécessité des systèmes
l-constructeurs est évidente pour la confluence. En effet,
considérons par exemple le système non l-constructeur suivant:
R: | ⎧
⎨
⎩ | a | | b |
app(µ a. c,M) | | c{a by M} |
|
|
Le terme app(µ a. c,b) possède alors clairement
deux réduits non joignables c et app(µ a. b,b).
Ainsi R n'est donc pas confluent.
Malheureusement, les ERSP l-constructeurs orthogonaux ne sont pas
confluents pour la réduction admissible. En effet nous considérons à
présent le système composé uniquement de la βPM-règle dont il
est clair qu'il est tout à la fois orthogonal et l-constructeur. Le
terme t=app(λ [ξ ∣ x,y ]. [ξ ∣ 0,1 ],3)
possède, par —→aR , deux réduits 0 et 1 non joignables. La
raison de ce phénomène est que le terme t contient deux motifs x
et y se recouvrant mutuellement. La non confluence est, dans ce cas,
totalement normale puisque le terme t correspond informellement à un
système de réécriture de premier ordre "non orthogonal". Il nous
faudra donc restreindre la relation de réduction induite par un ERSP.
Nous allons à présent formaliser les notions que nous venons
d'introduire.
Définition 31 (Systèmes l-constructeurs)
Un ERSP R est dit l-constructeur
si et seulement si:
-
L'ensemble F des symboles de fonctions peut être
partitionné en deux ensembles Fc et Fd,
appelés respectivement ensembles des
symboles constructeurs et
définis, tels que:
- [•]
Tout élément de Fd est le symbole de tête d'un
membre gauche de règle de R.
- Les symboles de fonction apparaissant dans les motifs
présents dans les règles de R sont des symboles
constructeurs.
- Pour toute règle (L, R)∈R, L et R sont tous deux des
méta-termes p-linéaires (c.f.
définition 3).
Exemple 32 Le système suivant est l-constructeur.
R1: | ⎧
⎪
⎨
⎪
⎩ | app(λ X. M,N) | | M{X by N} |
plus(0,N) | | N |
plus(s(M),N) | | s(plus(M,N)) |
|
|
En revanche les deux systèmes suivants ne sont pas l-constructeurs.
et
En effet, le symbole f apparaît tout à la fois en tête d'une règle
et dans un motif du système R2 et le méta-terme
µ f(X,X). 0 n'est pas p-linéaire dans le système
R3.
Nous allons maintenant définir les méta-motifs et les méta-termes
l-constructeurs.
Définition 33 (Méta-termes et méta-motifs l-constructeurs)
Soit R un système l-constructeur.Un méta-motif est dit
l-constructeur s'il est linéaire et
si ses symboles de fonctions sont des symboles constructeurs de
R.
Un méta-terme est dit l-constructeur
s'il ne contient que des méta-motifs l-constructeurs.
Si nous considérons le système R1 défini précédemment, le
méta-motif s(X) est l-constructeur alors que
plus(X,Y) ne l'est pas puisque plus n'est pas un
symbole constructeur de R1.
Bien que la définition 33 dépende
d'un ERSP R donné, nous ferons désormais un abus de notation en
écrivant qu'un méta-motif ou un méta-terme est simplement
l-constructeur sans préciser le système quand cela ne sera pas
nécessaire à la compréhension.
Définition 34 (Méta-substitution l-constructeur)
Une méta-substitution σ est dite
l-constructeur pour un
méta-terme T si et seulement si σ(T) est défini et
σm(T) est un pré-terme l-constructeur.Une méta-substitution est dite l-constructeur pour une règle
L→ R si elle est l-constructeur pour
↦(L,R) où ↦ est un nouveau symbole
de fonction.
Ainsi, dans le système R1 de
l'exemple 32, la substitution
σ={X ▷ plus(0,0), M ▷ 0, N ▷ 0} n'est pas
l-constructeur pour le membre droit de la βPM-règle. En revanche
la méta-substitution
θ={X ▷ [ξ ∣ 0,s(x) ],M ▷ [ξ ∣ 0,x ],N ▷
plus(3,4)} est, elle, l-constructeur pour la
βPM-règle.
Lemme 35
Soient p un motif et t un terme l-constructeur. Si { { p by t } }
est défini, alors ∀σ∈{ { p by t } } ,∀
x∈dom(σ), σ(x) est un terme l-constructeur.
-
- Preuve.
Le résultat est immédiat par induction sur la structure de p.
Lemme 36
Si t est un pré-terme l-constructeur et si σ est une
substitution telle que ∀ x∈dom(σ), σ(x) est
l-constructeur alors, sous réserve d'existence, σ(t) ne
contient que des termes l-constructeurs.
-
- Preuve.
Nous raisonnons par induction sur la structure de t. Le seul cas
non immédiat est le cas où t=t1{p by t2}. Dans ce cas,
nous savons, par hypothèse d'induction, que σ(t2) ne contient que des termes
l-constructeurs. Soit t2'∈σ(t2). Par le
lemme 35, nous savons que
∀σ'∈{ { p by t2' } } ,∀ x∈dom(σ'), σ(x)
est un terme l-constructeur. Le résultat est alors immédiat par hypothèse d'induction
appliquée à t1.
Lemme 37
Soit T un méta-terme. Si σ est une méta-substitution
l-constructeur pour T alors σ(T) ne contient que des termes
l-constructeurs.
-
- Preuve.
La preuve est obtenue par induction sur la structure de T. Le seul
cas non immédiat est celui où T=T1{P by T2}. Dans ce
cas nous savons que σm(T) est un pré-terme l-constructeur et
donc, par hypothèse d'induction, que σ(T2) ne contient que des termes
l-constructeurs. De même, nous savons, par hypothèse d'induction, que σm(T1)
est un pré-terme l-constructeur. Nous concluons alors par le
lemme 36.
Nous sommes maintenant en mesure de définir la réduction
l-constructeur.
Définition 38 (Réduction l-constructeur) Soit R est un ERSP l-constructeur. Nous dirons qu'un terme s
se réécrit
l-constructeur en t, ce que nous noterons s—→cR t, si et
seulement si:
-
il existe une règle (L,R)∈R,
- il existe une méta-substitution bien formée l-constructeur
pour (L,R)
- il existe un contexte C, tel que:
Ainsi, si nous considérons le système R1 de
l'exemple 32, nous avons
plus(0,0)—→cR1 0 mais nous n'avons pas
t=app(λ plus(0,0). 3,plus(0,0))—→cR1
3 car le terme t n'est pas l-constructeur.
Lemme 39 (Préservation des terme l-constructeurs)
Si s est un terme l-constructeur et si s—→c t alors t est
un terme l-constructeur.
-
- Preuve.
Le résultat est immédiat par induction sur le contexte considéré
dans la réduction et par le
lemme 37.
Après avoir introduit les notions d'objet l-constructeurs, nous alons
désormais définir les systèmes de réécriture orthogonaux.
Définition 40 (Systèmes linéaires gauches)
Une règle de réécriture L→ R est dite linéaire gauche si et seulement si toute méta-variable de terme
possède au plus une occurrence dans L.Un ERSP R est dit linéaire gauche si et seulement si
toutes ses règles sont linéaires gauches.
Définition 41 (Radicaux et superpositions) Un terme t est appelé radical si et seulement s'il existe une règle L→ R telle que t=σ(L).
Un système R={(L1,R1),…,(Ll,Rk)} est dit
non superposant si et seulement si:
-
Pour tout radical σ(Li) contenu dans un autre radical
σ'(Lj) (avec i≠ j), σ(Li) est en fait contenu
dans un σ'(M) où la méta-variable de terme M appartient à
dom(σ').
- Pour tout radical σ(L) contenu strictement dans
σ'(L), σ(L) est en fait contenu dans un σ'(M)
où la méta-variable de terme M appartient à dom(σ').
Cette définition est en fait "équivalente" à l'absence de paire
critique telle que présentées à la
définition 37.
Définition 42 (Systèmes orthogonaux)
Un ERSP R est dit orthogonal si et
seulement si il est linéaire gauche et non superposant.
Ainsi, le système R1 de
l'exemple 32 est orthogonal. En
revanche, si nous considérons le système:
Ce système n'est pas orthogonal puisque ces deux règles se
superposent, par exemple, sur le terme
µ _ . f(0).
Définition 43 (Motifs superposables)
Deux motifs p et q seront dit
superposables si et seulement si il
existe un terme t tel que { { p by t } } et { { q by t } } sont tous les
deux définis.
Les motifs f( _ ,x) et f(y,g(0))
sont superposables tout comme les motifs [ξ ∣ 0,s(x) ] et
0.
Définition 44 (Motifs et termes déterministes) L'ensemble des motifs déterministes est
le plus petit sous ensemble des motifs linéaires tel que:
-
les motifs _ et x sont déterministes,
- si p1,…,pn sont déterministes alors
f(p1,…,pn) et @(p1,…,pn) sont
déterministes,
- si p1,…,pn sont déterministes et si pour tous i≠
j pi et pj ne sont pas superposables alors
[ξ ∣ p1,…,pn ] est déterministe.
Un pré-terme acceptable t est dit
déterministe si tout les motifs
apparaissant dans t sont déterministes.
Ainsi, le motif
[ξ ∣ s(0),s(s(0)) ] est
déterministe mais pas le motif
[ξ ∣ s(0),s(_) ].
Nous remarquons que si un méta-terme est déterministe alors ses
sous-méta-termes aussi.
Remarque 45
Nous remarquons que cette définition implique que si p est
déterministe alors { { p by t } } contient au plus une
substitution.
Définition 46 (Méta-substitutions déterministes) Une méta-substitution σ est dite
déterministe pour un méta-terme
T si et seulement si:
-
σ est admissible pour T,
- Le pré-terme σm(T) est déterministe.
Une méta-substitution est dite déterministe pour une règle
L→
R si elle est déterministe pour
↦(L,R) où ↦ est un nouveau symbole
de fonction.
Ainsi la méta-substitution σ={ X ▷ x,Y ▷ y} n'est pas
déterministe pour le méta-terme T=µ f(X,Y). 0.
Lemme 47
Soient p un motif déterministe et t un terme déterministe alors,
sous réserve d'existence, { { p by t } } est unique et ∀
x∈dom({ { p by t } } ), { { p by t } } (x) est un terme déterministe.
-
- Preuve.
Le fait que { { p by t } } soit, sous réserve d'existence, tel que
∀σ∈{ { p by t } } ,∀ x∈dom(σ), σ(x) soit
un terme déterministe est immédiat par induction sur p.
Il ne nous reste donc plus qu'a démontrer que, sous réserve
d'existence, { { p by t } } est uniquement défini. Pour cela nous
raisonnons une fois encore par induction sur p. Le seul cas non
immédiat par hypothèse d'induction est le cas où p=[ξ ∣ p1,…,pn ], dans lequel
nous concluons grâce au fait que p est déterministe.
Lemme 48
Si t est un pré-terme déterministe et si σ est une
substitution telle que ∀ x∈dom(σ), σ(x) est
déterministe alors, sous réserve d'existence, σ(t) est unique
et déterministe.
-
- Preuve.
Nous raisonnons par induction sur la structure de t. Le seul cas
non immédiat est le cas où t=t1{p by t2}. Dans ce cas,
nous savons que σ(t2) est unique et déterministe. Par le
lemme 47, nous savons que
{ { p by σ(t2') } } est unique et que pour tout
x appartenant à dom({ { p by σ(t2') } } ), le pré-terme { { p by σ(t2') } } (x) est
déterministe. Le résultat est alors immédiat par hypothèse d'induction appliquée à
t1.
Lemme 49
Soit T un méta-terme. Si σ est une méta-substitution
déterministe pour T alors σ(T) est unique et déterministe.
-
- Preuve.
La preuve est obtenue par induction sur la structure de T. Le seul
cas non immédiat est le cas où T=T1{P by T2}. Dans ce
cas nous savons que σm(T) est un pré-terme déterministe et
donc, par hypothèse d'induction, que σ(T2) est unique et déterministe. De
même, nous savons que σm(T1) est un pré-terme déterministe.
Nous concluons alors par le
lemme 48.
Nous pouvons maintenant définir la relation de réduction
déterministe induite par un ERSP.
Définition 50 (Réduction déterministe)
Soit R un ERSP. Un terme s se réécrit de manière déterministe en t,
ce que nous noterons désormais s—→dR t si et seulement si:
-
il existe une règle (L,R)∈R,
- il existe une méta-substitution déterministe pour (L,R) et
bien formée,
- il existe un contexte C, tel que:
Enfin nous définissons la relation de réduction l-constructeur
déterministe induite pas un ERSP R, notée —→c,dR , par:
—→c,dR =—→cR ∩—→dR .
Les ERSP orthogonaux préservent les termes déterministes par
réduction déterministe.
Lemme 51 (Préservation du déterminisme)
Soit R un ERSP orthogonal. Si s est un terme déterministe et
si s—→dR t alors t est un terme déterministe.
-
- Preuve.
Le fait que t soit acceptable découle de la préservation des
termes acceptables par réduction admissible
(lemme 30). Il ne nous reste donc
plus qu'à prouver que tous les motifs apparaissant dans t sont
déterministes. Pour cela nous raisonnons par induction sur la
définition de s—→dR t.
-
Si s=σ(L) et t=σ(R) pour une règle (L,R)
∈R, le résultat est immédiat par le
lemme 49.
- Si s=µ p. s' et t=µ p. t' avec s'—→dR t'
alors nous concluons par hypothèse d'induction pour les motifs apparaissant dans
t' et par hypothèse sur s pour les sous motifs de p.
- Les autres cas sont immédiats par hypothèse d'induction.
Nous allons dans la prochaine section démontrer que les ERSP
orthogonaux et l-constructeurs sont confluents.
5.5 Confluence des ERSP
Cette section est consacrée à la démonstration de la confluence de la
relation —→c,d pour les ERSP orthogonaux et
l-constructeurs. La preuve de cette propriété est obtenue par la
méthode de Tait et Martin-Löf [Bar84] et peut être résumée
en quatre points clés:
-
dans un premier temps, nous allons définir une relation de réduction
"parallèle" >>>c,dR ,
- nous montrerons alors que >>>*c,dR =—→c,dR* ,
- puis, en utilisant les termes de
Takahashi [Tak89, Tak93], nous montrerons que la
relation >>>c,dR est fortement confluente pour les
ERSP l-constructeurs et orthogonaux,
- nous conclurons alors en nous souvenant que la forte confluence
implique la confluence.
Afin de pouvoir définir la relation >>>c,d , il nous faut étendre
la notion de relation de réduction induite par un ERSP aux
méta-substitutions.
Définition 52 (Relation de réduction sur les méta-substitutions) Soit → une relation de réduction sur l'ensemble des termes.
La méta-substitution σ se réduit (par →) en la
méta-substitution ρ, ce que nous noterons σ→ρ,
si et seulement si:
-
Les méta-substitutions σ et ρ ont même domaine.
- Pour toute méta-variable de terme M∈dom(σ), σ(M)→ρ(M).
- Pour toute variable usuelle x∈dom(σ), σ(x)→ρ(x).
- Pour toute méta-variable de motif X∈dom(σ), σ(X)=ρ(X).
- Pour toute variable de choix ξ∈dom(σ), σ(ξ)=ρ(ξ).
Nous somme désormais en mesure de définir la relation >>>.
Définition 53 (Relation de réduction parallèle) Soit R un ERSP.
Nous définissons la relation de l-constructeurs déterministe
parallèle induite par R, notée >>>c,dR , par induction sur
l'ensemble de termes comme suit:
-
x >>>c,dR x pour toute variable usuelle x.
- Si t1 >>>c,dR t1', …, tn >>>c,dR tn' alors:
| f(t1,…,tn) | | R f(t1',…,tn') |
|
et |
| ⎡
⎣ | ξ ∣ t1,…,tn | ⎤
⎦ | | | R | ⎡
⎣ | ξ ∣ t1',…,tn' | ⎤
⎦ |
|
|
- Si t >>>c,dR t' alors
µ p. t >>>c,dR µ p. t'.
- Si σ >>>c,dR ρ alors pour toute règle L→ R de
R telle que σ soit l-constructeur et déterministe pour L→ R, σ(L) >>>c,dR ρ(R).
Afin de simplifier les notations, il nous arrivera désormais d'omettre
le système R dans la relation parallèle.
Remarque 54 Pour tout terme s on a: s >>>c,d s.
De même, si s >>>c,d s' et si s n'est pas un radical, alors les
symboles de tête de s et s' sont les mêmes. De plus, si
s= G(s1,…,sn) alors s'=
G(s1',…,sn') où ∀ i, si >>>c,d si' avec G
un symbole de fonction, un constructeur de choix ou une abstraction.
Nous somme maintenant en mesure de donner la démonstration de
>>>*c,d =—→c,d* .
Lemme 55
Soient R un ERSP l-constructeur et p est un motif
l-constructeur déterministe. Si t est un terme tel que t—→c,d* t' et
{ { p by t } } est défini alors { { p by t' } } est aussi défini (et c'est
un singleton) et
{ { p by t } } —→c,d* { { p by t' } } .
-
- Preuve.
Nous raisonnons par induction sur la structure de p.
-
Si p=x ou p= _ , le résultat est immédiat.
- Si p=f(p1,…,pn), alors, par définition de
p, f est un constructeur. Par définition de { { by } } , nous
devons avoir t=f(t1,…,tn) et de plus tous les
{ { pi by ti } } doivent être définis. Le terme t n'est pas un
radical (pas plus que ses réduits successifs) puisque son symbole
de tête est un constructeur. Nous devons donc obligatoirement avoir
t'=f(t1',…,tn') où ∀
i,ti—→c,d* ti'. Nous savons de plus que les pi sont tous
l-constructeurs et déterministes. Donc, par hypothèse d'induction, nous savons que tous les
{ { pi by ti } } sont définis et que ∀ i,
{ { pi by ti } } —→c,d* { { pi by ti' } } . Montrons que { { p by t' } }
est défini. Pour cela, il nous suffit de montrer que
⊔i { { pi by ti' } } est défini ce qui est immédiat puisque p
est linéaire par hypothèse. Dès lors le fait que
{ { p by t } } —→c,d* { { p by t' } } est évident par hypothèse d'induction.
- Si p=@(p1,…,pn) nous
raisonnons comme dans le cas précédent.
- Si p=[ξ ∣ p1,…,pn ], puisque p est déterministe, il
existe un unique i tel que { { pi by t } } soit défini et
donc { { p by t } } ={ξ ▷ i } ⊔
{ { pi by t } } . Par hypothèse d'induction, nous obtenons le fait que { { pi by t' } }
est uniquement défini et que
{ { pi by t } } —→c,d* { { pi by t' } } . Donc, puisque p est
déterministe, nous savons que ∀ j≠ i, { { pj by t' } }
n'est pas défini. Nous obtenons donc l'unicité de la définition de { { p by t' } } .
Remarquons que le lemme précédent est faux si p n'est pas
l-constructeur. En effet, considérons le système R={ a→ b },
le motif non linéaire p1=f(x,x) et le motif "non
constructeur" p2=a. Alors { { f(x,x) by f(a,a) } }
est bien défini et f(a,a)—→c f(a,b) mais
{ { f(x,x) by f(a,b) } } n'est pas défini. De même
{ { a by a } } est défini et a—→c b mais { { a by b } } n'est pas
défini.
Corollaire 56 Soient R un ERSP l-constructeur, P un méta-motif et T un
méta-terme. Soient alors σ et ρ deux méta-substitutions
telles que σ(P) est un motif l-constructeur déterministe et
σ(T)—→c,d* ρ(T). Si { { σ(P) by σ(T) } } est défini
alors { { ρ(P) by ρ(T) } } est aussi défini et:
{ { σ(P) by σ(T) } } | | * { { ρ(P) by ρ(T) } } |
-
- Preuve.
Immédiat par le lemme 55 puisque, par
définition, σ(P)=ρ(P).
Nous sommes désormais en mesure de démontrer que la réduction est
"stable par application". Il nous faudra pour cela "α-convertir"
certains méta-termes.
Lemme 57
Soient σ=(σm,σv) une méta-substitution, T un
méta-terme, et S un ensemble de variables de choix et de variables
usuelles. Supposons que σ satisfait la condition de chemin
(c.f. définition 24) pour toute
méta-variable de terme M de T. Il existe alors une méta-substitution
σ'=(σ'm,σv) et un méta-terme T' tels que
σm(T)=ασ'm(T'), T' ne diffère de T que
sur l'ensemble des variables (usuelles et de choix) liées et aucune
des variables liées de σ'm(T') n'appartient à S.
-
- Preuve.
La condition de chemin garantit que pour toute méta-variable de terme M de
T, il existe un unique ensemble de variables (usuelles et de
choix) VM tel que x∈ VM si et seulement
si x∈∪p σm( PP(T,p)) où p décrit
l'ensemble des positions de T telles que T∣p=M. De
même pour toute méta-variable de motif X de T, il existe un
unique VX= BV(σm(X)). Considérons enfin,
l'ensemble A des variables (usuelles et de
choix) liées dans T. Nous définissons alors un renommage de
∪M∈ T VM∪∪X∈ T VX∪
A dans un ensemble V' tel que V'∩
S=∅. Nous définissons alors T' en appliquant à T le
renommage de premier ordre ρ. Enfin nous définissons σ'm
comme suit: σ'm(X)=ρ(σm(X)) et
σ'm(M)=ρ(σm(M)).
Lemme 58
Soient σ=(σm,σv) une méta-substitution et T un
méta-terme. Supposons que σ satisfait la condition de chemin
pour toute méta-variable de terme M de T. Il existe alors une
méta-substitution σ'=(σ'm,σ'v) et un méta-terme
T tels que σ(T)=ασ'(T'), T' ne diffère de T
que sur l'ensemble des variables (usuelles et de choix) liées et
BV(σ'(T'))∩(dom(σ'v)∪codom(σ'v))=∅.
-
- Preuve.
Nous utilisons le lemme 57 pour construire σ'm
et T' à l'aide de S=dom(σv)∪codom(σv) puis nous
choisissons σ'=(σ'm,σv).
Lemme 59
Soient R un ERSP l-constructeur et σ et ρ deux
méta-substitutions telles que σ—→c,dR* ρ. Si T est un
méta-terme tel que σ soit l-constructeur et déterministe pour
T, alors il en est de même pour ρ et
σ(T)—→c,dR* ρ(T).
-
- Preuve.
Par le lemme 58, nous pouvons supposer que σ,
ρ et t satisfont les conditions sur les variables liées. Nous
raisonnons alors par induction sur la structure de T.
-
Si T=x ou T=M, le résultat est immédiat.
- Si T=f(T1,…,Tn) ou
T=[ξ ∣ T1,…,Tn ] le résultat est immédiat par hypothèse d'induction.
- Si T=µ P. T', la remarque du début de cette preuve
nous permet d'applique directement l'hypothèse d'induction puisqu'on ne peut avoir
de capture de variables quand nous appliquons σv à
µ σm(P). σm(T').
- Si T=T1{P by T2}, nous savons alors que
σ(P)=ρ(P) et, par hypothèse d'induction, que ρ est
déterministe et l-constructeur pour T2 et que
σ(T2)—→c,d* ρ(T2). Donc, par le
corollaire 56,
{ { ρ(P) by ρ(T2) } } est défini et
{ { σ(P) by σ(T2) } } —→c,d* { { ρ(P) by ρ(T2) } } . De
plus, par le lemme 47,
{ { ρ(P) by ρ(T2) } } est unique.
D'où nous déduisons:
σ ⊔ { { σ(P) by σ(T2) } } | | * ρ ⊔ { { ρ(P) by ρ(T2) } } |
Nous concluons alors par hypothèse d'induction sur T1 avec
σ ⊔ { { σ(P) by σ(T2) } } et
ρ ⊔ { { ρ(P) by ρ(T2) } } .
Ce lemme nous permet d'obtenir la propriété fondamentale suivante:
Lemme 60
Soit R un ERSP l-constructeur. Si σ—→c,dR* ρ et si
σ est l-constructeur et déterministe pour la règle L→ R alors
σ(L)—→c,dR* ρ(L) et ρ est l-constructeur et
déterministe pour L→ R.
-
- Preuve.
Nous remarquons tout d'abord que σ et ρ sont identiques
sur l'ensemble PV. Afin de montrer que ρ est l-constructeur
et déterministe
pour L→ R il nous faut montrer que:
-
La méta-substitution ρ satisfait la condition de chemin
pour L→ R. Soit M une méta-variable de terme de L→ R. Nous savons
que σ satisfait la condition de chemin
pour L→ R i.e. si p1,…,pn sont les positions des
différentes occurrences de M dans L→ R et l1,…,ln leurs
chemins de liaison associés alors:
∀ | | ∈ FV(σ(M)), (∀ 1≤ i≤
n, | | ∈σ li)∨(∀ 1≤ i≤
n, | | ∉σ li)
|
Soit maintenant x∈ FV(ρ(M)). Par le
corollaire 29, x∈ FV(σ(M)) d'où
le résultat puisque pour tout i, σ(li)=ρ(li).
- ρ(L) et ρ(R) ne contiennent que des termes
acceptables. Par hypothèse σ est l-constructeur déterministe
pour L→ R et donc σ(L) et σ(R) sont tous deux
des termes l-constructeurs et déterministes. Il en est donc de même,
par le lemme 59, pour ρ.
Il nous faut maintenant démontrer que
σ(L)—→c,dR* ρ(R). Pour cela nous raisonnons par induction
sur ν=Σi=1…
n∣σ(xi)—→c,dR* ρ(xi)∣ où
dom(σ)∩( TV∪ UV)={x1,…,xn}.
-
Si ν=0 le résultat est immédiat puisque σ=ρ dans
ce cas.
- Si ν>0 alors il existe un i tel que σ(xi)—→c,d*
s—→c,d ρ(xi). Nous définissons alors la méta-substitution
ρ' comme étant la méta-substitution égale à ρ sauf sur la
variable xi et telle que ρ'(xi)=s. Par hypothèse d'induction, nous
obtenons alors σ(L)—→c,d* ρ'(R). Puisque par définition
ρ'—→c,d* ρ, nous concluons que ρ'(L)—→c,d* ρ(L)
par le lemme 59, d'où le résultat.
Nous pouvons maintenant démontrer que —→c,d* = >>>*c,d
Théorème 61
Soient R un ERSPet s un terme.
Si s—→c,d t alors s >>>c,d t.
-
- Preuve.
Soit s—→c,d t. Nous raisonnons par induction sur la définition
de —→c,d . Le seul cas non immédiat par hypothèse d'induction est le cas où
s=σ(L) et t=σ(R) pour une règle L→ R. Mais, dans
ce cas, puisque >>>c,d est réflexive nous avons
σ >>>c,d σ et le résultat est immédiat par la définition 53.
Théorème 62
Soient R un ERSP l-constructeur et s un terme. Si
s >>>c,dR t alors s—→c,dR* t.
-
- Preuve.
Nous raisonnons par induction sur la définition de s.
-
Si s est une variable, le résultat est immédiat.
- Si s=f(s1,…,sn) et
t=f(t1,…,tn) où ∀ i,si >>>c,d ti,
alors, par hypothèse d'induction, ∀ i,si—→c,d* ti et donc nous avons la
séquence de réductions suivante:
- Si s=[ξ ∣ s1,…,tn ] et
t=[ξ ∣ t1,…,tn ] où ∀ i,si >>>c,d ti,
alors, nous raisonnons comme dans le cas précédent.
- Si s=µ p. s1 et
t=µ p. t1 où s1 >>>c,d t1,
alors, le résultat est immédiat par hypothèse d'induction.
- Si enfin s=σ(L) et t=ρ(L) avec σ
l-constructeur déterministe pour la règle L→ R et
σ—→c,d* ρ. Puisque L est un membre gauche de règle
nous savons que pour toute méta-variable de terme M (resp. toute variable
usuelle x) appartenant à dom(σ), σ M
(resp. σ x) est structurellement plus petit que s. Donc,
par hypothèse d'induction, nous savons que pour toute méta-variable de terme M (resp. toute
variable usuelle x) σ(M)—→c,d* ρ(M)
(resp. σ(x)—→c,d* ρ(x)) i.e. σ—→c,d* ρ. Nous
concluons alors par le lemme 60.
Corollaire 63
Soient R un ERSP l-constructeur et s un terme.
Nous allons maintenant démontrer la confluence forte de
—→c,d . Pour ce faire, nous allons associer à tout terme t
l-constructeur déterministe un unique terme, noté
#(t). Cet unique terme sera tel que si t >>>c,d t' alors
t' >>>c,d #(t). La démonstration de la confluence forte sera
alors immédiate.
Définition 64
Soit R un ERSP l-constructeur.
A tout terme t nous associons son terme de Takahashi, noté
#(t), par induction sur t comme suit:
-
Si t=x alors #(x)=x.
- Si t=f(t1,…,tn) (resp. t=µ p. t' ou
t=[ξ ∣ t1,…,tn ]) et si t n'est pas un radical
l-constructeur déterministe alors
#(t)=f(#(t1),…,#(tn)) (resp. t=µ p. #(t') ou
t=[ξ ∣ #(t1),…,#(tn) ]).
- Si t est un radical l-constructeur déterministe σ(L)
d'une règle L→ R alors #(t)=#(σ)(R) où
#(σ) est obtenue à partir de σ comme suit:
- [•]
Pour toute variable de choix (resp. toute méta-variable de motif)
x de dom(σ):
- Pour toute variable usuelle (resp. toute méta-variable de terme)
x de dom(σ):
Afin de pouvoir conclure nous avons besoin de deux lemmes
"similaires" aux lemmes 55 et
59 et d'un corollaire "similaire" au
corollaire 56.
Lemme 65
Soient R un ERSP l-constructeur et p est un motif
l-constructeur déterministe. Si t est un terme tel que t >>>c,d t' et
{ { p by t } } est défini alors { { p by t' } } est aussi défini (et c'est
un singleton) et
{ { p by t } } >>>c,d { { p by t' } } .
-
- Preuve.
c.f. preuve du lemme 55. Il suffit de
remplacer dans cette preuve —→c,d* par >>>c,d .
Corollaire 66 Soient R un ERSP l-constructeur, P un méta-motif et T un
méta-terme. Soient alors σ et ρ deux méta-substitutions
telles que σ(P) est un motif l-constructeur déterministe et
σ(T) >>>c,d ρ(T). Si { { σ(P) by σ(T) } } est défini
alors { { ρ(P) by ρ(T) } } est aussi défini et:
{ { σ(P) by σ(T) } } | | { { ρ(P) by ρ(T) } } |
-
- Preuve.
Immédiat par le lemme 65.
Lemme 67
Soient R un ERSP l-constructeur et σ et ρ deux
méta-substitutions telles que σ >>>c,dR ρ. Si T est
méta-terme tel que σ satisfasse la condition de chemin pour
T et soit déterministe et l-constructeur pour T, alors il en est de
même pour ρ et σ(T) >>>c,dR ρ(T).
-
- Preuve.
c.f. preuve du lemme 59. Il suffit de
remplacer dans cette preuve —→c,d* par >>>c,d et
"lemme 55" par "lemme 65".
Lemme 68
Soit R est un ERSP l-constructeur orthogonal.
-
#(t) est défini et
unique pour tout terme t.
- t >>>c,dR #(t).
-
- Preuve.
Nous raisonnons par induction sur la structure de t. Le seul cas
non évident est le cas où t est une instance l-constructeur
déterministe. Dans ce cas nous avons t=σ(L) et nous pouvons
supposer sans perte de généralité que σv=id. Dès lors,
puisque, pour toute méta-variable de terme M∈dom(σ), σ(M) est structurellement plus petit que σ(L)
nous savons que:
-
#(σ) est définie et unique et
- σ >>>c,dR #(σ)
Par le lemme 67, nous savons
alors que #(σ)(R)=#(t) est défini et unique. Nous
concluons alors grâce à la définition 53.
Corollaire 69
Si t est un terme l-constructeur déterministe alors #(t) aussi.
Définition 70 (Positions Rigides Minimale)
Soient R un ERSP l-constructeur orthogonal et t un
terme. L'ensemble, MRP(t), des positions rigides minimales
est défini comme suit:
-
Si t est un radical l-constructeur déterministe σ(L)
alors MRP(t)=RP(L).
- Si t n'est pas un tel radical alors:
- [•]
Si t=x alors MRP(x)={є}.
- Si t=f(t1,…,tn) ou
t=[ξ ∣ t1,…,tn ] alors
MRP(t)={є}∪ ∪1≤ i≤ n{i.MRP(ti)}.
- Si t=µ p. t' alors MRP(t)={є}∪ {i.MRP(t')}.
Nous remarquons que l'orthogonalité de R est nécessaire pour
garantir l'unicité de cet ensemble.
Lemme 71
Soit R un ERSP l-constructeur orthogonal. Si t >>>c,dR s et
si pour tout p∈MRP(t) nous savons que t∣p
n'est pas un radical l-constructeur déterministe alors pour toute
position rigide minimale p de t, p∈Pos(s) et
t∣p >>>c,dR s∣p.
-
- Preuve.
Nous raisonnons par induction sur t. Soit t >>>c,dR s
satisfaisant les hypothèses. Supposons que t soit un radical
l-constructeur déterministe. Par la
définition 70, є∈MRP(t) et donc
t∣є=t n'est pas un radical et donc, par la remarque 54, t=f(t1,…,tn) et
s=f(t1',…,tn') avec ti >>>c,dR ti', t=µ p. t et
s=µ t'. avec t >>>c,dR t' ou t=[ξ ∣ t1,…,tn ] et
s=[ξ ∣ t1',…,tn' ] avec ti >>>c,dR ti' . Nous
continuons en supposant que t=f(t1,…,tn) les autre
cas étant similaires. Par hypothèse d'induction, pour toute position rigide minimale
p de ti, p∈Pos(ti') et
ti∣p >>>c,d ti'∣p. Le résultat est
alors immédiat.
Lemme 72
Soient R un ERSP l-constructeur orthogonal et un terme t tel
que t >>>c,dR s. Si t=f(t1,…,tn) et
s=f(s1,…,sn) (resp. t=[ξ ∣ t1,…,tn ] et
s=[ξ ∣ s1,…,sn ] ou t=µ p. t et
s=µ p. s) où ti >>>c,dR si et t est un radical
l-constructeur déterministe σ(L) alors s est aussi un radical
l-constructeur déterministe ρ(L) pour une méta-substitution
ρ telle que σ >>>c,dR ρ.
-
- Preuve.
Nous démontrons toutes ces propriétés ensembles par cas sur le
terme t.
-
Si t=x ou si t=[ξ ∣ t1,…,tn ], nous obtenons le
résultat par vacuité puisque ces termes ne peuvent être des radicaux.
- Si t=f(t1,…,tn) alors nous savons que
t=σ(L) où
L=f(T1,…,Tn) et ∀ i,
ti=σ(Ti). Puisque le système R est linéaire gauche nous
savons que toute méta-variable de terme M apparaît au plus une fois dans
L. Ainsi pour toute méta-variable de terme M apparaissant à la position
p dans L nous définissons ρm(M)=s∣p. Il
nous faut alors de démontrer que s∣p est
défini. Pour cela considérons les deux cas suivants:
- [•]
Si p∈{1,…,n} (i.e. tp=M) alors σ(M)=tp
et, dans ce cas, s∣p=sp est bien défini. De plus,
nous remarquons que, dans ce cas σ(M) >>>c,d ρ(M) par
hypothèse.
- Sinon, considérons p' le plus long préfixe strict de
p. Puisque R est orthogonal, il ne possède pas de radicaux se
superposant ou, en d'autres termes, pour toute position rigide
minimale de t p'', t∣p'' n'est pas un
radical. Remarquons alors que p' est une telle position rigide
minimale. Ainsi, par le lemme 71, et donc
s∣p' existe et
t∣p' >>>c,d s∣p'. Nous concluons
alors en remarquant que, puisque t∣p ne peut être
un radical, la position p est bien une position de s et que
t∣p >>>c,d s∣p.
- Si t=µ p. t' nous raisonnons comme dans le cas précédent.
Lemme 73
Soit R un ERSP l-constructeur orthogonal.
Si t >>>c,dR s alors s >>>c,dR #(t).
-
- Preuve.
Nous raisonnons par induction sur la définition de t >>>c,dR s.
-
Si t=x alors s=x et #(x)=x. Le résultat est alors
immédiat.
- Si t n'est pas un radical l-constructeur déterministe le
résultat est immédiat par hypothèse d'induction.
- Si t est un radical l-constructeur déterministe σ(L)
pour une règle L→ R alors nous voulons démontrer que
s >>>c,d #(t)=#(σ)(R). Remarquons tout d'abord
que, puisque L ne contient pas de variable usuelle ou de choix
libre, nous pouvons supposer que σv=id. Deux cas sont alors
possibles:
- [•]
Si s et t ont même symbole de tête. Alors, par le
lemme 72, s
est de la forme ρ(L) avec σ >>>c,d ρ et ρ
l-constructeur déterministe pour L→ R. Il nous suffit donc,
par la définition 53, de démontrer que
ρ >>>c,d #(σ). Or nous savons que pour toute
variable M apparaissant dans L, σ(M) est
structurellement plus petit de t et donc que, par hypothèse d'induction,
ρ(M) >>>c,d #(σ)(M). le résultat est alors
immédiat.
- Sinon s=ρ(R) avec σ >>>c,d ρ et dans ce cas, par le
lemme 67, il nous suffit de
démontrer que ρ >>>c,d #(σ) ce qui est évident
par hypothèse d'induction.
Théorème 74
Si R est un ERSP l-constructeur orthogonal alors la relation
>>>c,d est confluente.
-
- Preuve.
Par le lemme 12, il nous
suffit de démontrer que >>>c,d est fortement
confluente. Considérons alors un terme t tel que t >>>c,d s1
et t >>>c,d s2. Il nous suffit alors d'appliquer le
lemme 73 à s1 et s2 pour conclure.
Théorème 75 (Confluence des ERSP)
Soit R un ERSP l-constructeur orthogonal. La relation
—→c,d est confluente.
-
- Preuve.
Par le théorème 74 et le corollaire 63.