4. Structure de données sûre 65
4.5. Interactions avec Tom
4.5.5. Les règles du calcul
}
Fig.4.14: Lehook pour l’opérateurconcSeq
ture. Cehook utilise‘concPar(L*,l*)pour effectuer un appel récursif à la fonction de
création (utilisant la construction ‘ de Tom, présentée en section 2.2.4). Il utilise aussi
l’appel à la fonctionrealMake, qui correspond à l’opération de construction originale.
Le calcul des structures vérifie aussi les lois de De Morgan pour la négation. On peut
donc aussi écrire unhook pour l’opérateur de négationneg, qui applique les lois de De
Morgan de manière similaire auhook de l’exemple 22. L’application de ce hook garantit
que dans les structures manipulées seuls les atomes peuvent être en position négative.
Cela simplifie l’application des règles de déduction, en supprimant le besoin de propager
les négations.
4.5.5. Les règles du calcul
Une fois la structure de données définie, ainsi que ses invariants, il est possible de
définir les règles du calcul elles-même comme des règles de réécriture sur ces objets
dans un programmeTom. Ces règles sont appliquées de manière répétée sur la structure
d’entrée du prouveur, calculant tous les successeurs jusqu’à l’obtention dubutà atteindre
(en général, l’unité◦).
Ces règles sont exprimées en utilisant le filtrage de Tom sur la structure de données
générée parGom. Elle sont assez simples, car la relation d’équivalence sur les structures
est intégrée dans la structure de données par l’intermédiaire des invariants. Cependant,
afin d’obtenir un prouveur efficace, il est nécessaire d’imposer certaines restrictions sur
l’application des règles, prenant en compte l’intégration de la relation d’équivalence au
sein même de la structure de données. Ces restrictions, ainsi que la preuve d’équivalence
du système obtenu vis-à-vis du systèmeBVoriginal sont le résultat d’un travail commun
avec Ozan Kahramanoğulları [KMR05a].
Définition 27 (Équivalence). Deux systèmes S et S
0sont équivalents si pour chaque
preuve d’une structure T dans le système S, il existe une preuve de T dans le système
S
0, et vice versa.
L’élaboration du nouveau système de règles pour le calcul des structures, qui prend
en compte les invariants de la structure de données, et permet de réduire le
non-déterminisme du calcul, se fait par raffinements successifs du système original, en
prou-vant l’équivalence du système raffiné avec le système qu’il raffine.
4.5. Interactions avecTom
concCop:make_insert(e,l) {
%match(Struc e) {
o() -> { return l; }
cop(concCop(L*)) -> { return ‘concCop(L*,l*); }
}
%match(StrucCop l) {
concCop(head,tail*) -> {
if (0 < e.compareTo(‘head)) {
return ‘realMake(head,concCop(e,tail*));
}
}
}
}
concPar:make_insert(e,l) {
%match(Struc e) {
o() -> { return l; }
par(concPar(L*)) -> { return ‘concPar(L*,l*); }
}
%match(StrucPar l) {
concPar(head,tail*) -> {
if(0 < e.compareTo(‘tail)) {
return ‘realMake(head,concPar(e,tail*));
}
}
}
}
Fig. 4.15: Leshooks pour les opérateursconcPar etconcCop
On supprime tout d’abord les équations de la relation d’équivalence concernant les
unités. Le système obtenu s’applique aux structures en forme normale par rapport au
système correspondant à l’orientation des règles concernant la négation et l’unité de la
figure 4.10 de la gauche vers la droite. On se donne aussi une restriction sur ces règles, qui
correspond à limiter le non-déterminisme introduit par la commutativité des structures
par etcopar, en rendant l’application des règles setq↓ « paresseuse » : la structure W
dans les règles de la figure 4.16 ne peut pas être une vraie structure par. C’est donc un
atome, ou une structure copar ou seq. Ceci définit alors le systèmeBVul
4.
Propriété 6. Les systèmes BV et BVulsont équivalents.
Démonstration. Le systèmeBVest équivalent au systèmeBVuldans lequel on supprime
la restriction sur la forme des structures W, car les règles d’inférence du système BVul
[a, a] ax
S([R, W], T)
S[(R, T), W] s
1S{R}
S[R,[a, a]] ai
1↓
S{R}
S(R,[a, a]) ai
2↓
S{R}
ShR; [a, a]i ai
3↓
S{R}
Sh[a, a];Ri ai
4↓
Sh[R, T]; [U, V]i
S[hR;Ui,hT;Vi] q
1↓
ShR;Ti
S[R, T] q
2↓
Sh[W, T];Ui
S[W,hT;Ui] q
3↓
ShT; [W, U]i
S[W,hT;Ui] q
4↓
Fig.4.16: Le système BVul
autorisent l’unité◦ à être totalement supprimé du langage des structures BV. On peut
alors simuler chacune des règles d’inférence d’un système dans l’autre.
En ajoutant la restriction surW, qui ne peut pas être unevraie structure par, on doit
montrer que lorsqueW est unevrai structure par, une dérivation équivalente à celle qui
a lieu sans la restriction est possible dans le système BVul. Le cas de la règle q
4↓ est
analogue au cas de la règleq
3↓, on donne donc les dérivations pours
1etq
3↓ :
S([R, T, V], U)
S[([R, U], T), V] s
1S[[(R, T), U], V] s
1S[(R, T),[U, V]] =
Sh[R, V, T];Ui
S[R,h[V, T];Ui] q
3↓
S[R,[V,hT;Ui]] q
3↓
S[[R, V],hT;Ui] =
On doit alors supprimer les équations de la commutativité des structurespar etcopar,
afin d’obtenir un système de déduction manipulant uniquement des représentants
cano-niques. On va aussi introduire une restriction sur l’application des règles permettant de
réduire le non-déterminisme lors de la recherche de preuve, en évitant de développer les
branches non prouvables lorsqu’il est facile de les identifier. On utilisera pour exprimer
ces restrictions la notion l’ensemble d’atomes d’une structure.
Définition 28 (Atomes). Soit une structure S. La notation atS représente l’ensemble
de tous les atomes apparaissant dansS.
Définition 29 (Restrictions). Le système de la figure 4.17, appelé système BVci. Les
équations de la commutativité et de l’unité ne s’appliquent pas aux objets de ce système.
De plus, on impose les restrictions suivantes sur l’application des règles :
– dans les règles s
11a,s
12a, s
13a, s
14a, s
11b, s
12b, s
13b, s
14bon a atR ∩ atW 6=∅;
– dans les règles s
15a,s
16a, s
15b, s
16bon a at(R, U) ∩ atW 6=∅;
– dans les règles q
11↓, q
12↓ on a atR ∩ atT 6=∅ etatU ∩ atV 6=∅;
– dans les règles q
31↓, q
32↓,q
33↓, q
34↓ on a atW ∩ atT 6=∅;
4.5. Interactions avecTom
Cette limitation permet de n’appliquer ces règles d’inférence que si la structure résultante
présente des possibilités d’interaction, et donc potentiellement peut permettre d’atteindre
le résultat.
Théorème 4. Les systèmes BV et BVci sont équivalents.
Démonstration. Les règles d’inférence du système BVci sont des instances du système
BV. La preuve de l’autre direction se fait par analyse de cas sur l’application des règles
d’inférence du système BVul avec commutativité [KMR05a]. L’équivalence du système
BVci avec contraintes et du système BV découle alors des résultats présentés par Ozan
Kahramanoğulları [Kah06].
Le système BVci est alors utilisable comme base pour l’implantation d’un prouveur
dans le système BVdu calcul des structures, en utilisant une structure de données
four-nissant des représentants canoniques pour les classes d’équivalence des structures. en
utilisant la construction %matchdeTom, l’implantation de ces règles est la traduction
directe des règles d’inférence dans le langage défini par la signature algébrique, en
omet-tant le contexte. Les restrictions sur l’application des règles sont implantées en utilisant
des fonctions auxiliaires Java, ce qui permet une écriture efficace et concise.
Dans le document
Réécriture et compilation de confiance
(Page 110-113)