• Aucun résultat trouvé

Filtrage modulo

Dans le document Programmation et confiance (Page 71-75)

Le travail décrit dans cette section a été réalisé avec Antoine Reilles, dans le cadre de sa thèse.

Gom permet de définir des opérateurs variadiques, utiles pour représenter les listes. Tom offre un filtrage dit associatif, permettant de rechercher et de filtrer des éléments dans ces structures. Nous avons naturellement cherché à savoir si le filtrage offert par Tom correspondait bien au filtrage « classique » sur les termes modulo les axiomes d’associativité et de neutralité. La réponse est oui, sous certaines conditions.

Afin d’apporter des précisions à cette réponse, commençons par définir quelques notions. Un opérateur binaire f : T × T → T est dit associatif s’il satisfait la proposition :

∀x, y, z ∈ T , f (f (x, y), z) = f (x, f (y, z))

La constante e ∈ T est neutre à gauche pour l’opérateur binaire f : T ×T → T si elle satisfait la proposition : ∀x ∈ T , f (e, x) = x. Elle est dite neutre à droite si elle satisfait ∀x ∈ T , f(x, e) = x. La constante e est élément neutre pour l’opérateur binaire f si elle est neutre à gauche et à droite pour cet opérateur.

Une signature associative est composée d’un ensemble de symboles de fonction F d’arité fixe et d’une liste de couples (f, e), avec f ∈ F binaire et e ∈ F constante, tels que f est associatif et e est son élément neutre. On notera FAU cette signature, et T (FAU) l’ensemble des termes engendrés par cette signature. On notera AU la théorie équationnelle engendrée par les équations d’associativité et de neutralité de ces opérateurs. On peut alors définir une relation d’équivalence =AU sur les termes de T (FAU) telle que les termes égaux modulo associativité et élément neutre sont égaux.

Un opérateur variadique est un symbole de fonction pour lequel la fonc-tion arité n’est pas définie. Il peut prendre un nombre quelconque d’argu-ments. On peut voir la définition d’un opérateur variadique fv comme la dé-finition d’une famille d’opérateurs algébriques {fn| n ∈ N, ar(fn) = n}. Une

6.2. Filtrage modulo 67 signature variadique est composée d’un ensemble de symboles de fonctions F d’arité fixe, ainsi que d’un ensemble de symboles de fonction variadiques. On notera Fv cette signature, et T (Fv) l’ensemble des termes engendrés par cette signature.

On peut définir des notions similaires à l’associativité et à l’élimination des éléments neutres pour les opérateurs variadiques. Soit fv un opérateur variadique. On dit qu’il satisfait l’équation d’aplatissement si :

∀t1, . . . , tn, fv(t1, . . . , ti, . . . , tn) = fv(t1, . . . , ti−1, t1, . . . , tn′, ti+1, . . . , tn), avec ti = fv(t1, . . . , tn). fv satisfait l’équation de suppression des vides si :

∀t1, . . . , tn, fv(t1, . . . , ti−1, fv(), ti+1, . . . , tn) = fv(t1, . . . , ti−1, ti+1, . . . , tn) ∀t tel que ∀v1, . . . , vk, t 6= fv(v1, . . . , vk), on a : fv(t) = t.

On peut alors définir une relation d’équivalence =v sur les termes de T (Fv) comme l’équivalence modulo aplatissement et suppression des vides.

Les équations de l’associativité et élément neutre pour les termes conte-nant des symboles associatifs ou neutres définissent une notion de classe d’équivalence, dans laquelle on peut choisir un représentant canonique. On peut faire de même pour les termes contenant des symboles variadiques. Dans les deux cas, il s’agit d’orienter les équations d’une part d’associati-vité et éléments neutres (système de réécriture appelé R), et d’autre part d’aplatissement et élimination des vides (système de réécriture appelé Rv).

La figure 6.1 montre comment passer d’un terme associatif à un terme variadique : il suffit de pourvoir interpréter les termes de T (FAU). Pour cela on se donne une fonction de représentation variadique J K et une fonction auxiliaire [ ]aux : J K    JeK → fv()

Jf (x, y)K → fv(JxK, [y]aux)

Jg(t1, . . . , tn)K → g(Jt1K, . . . , JtnK), ∀g ∈ F

[ ]aux

  

[f (x, y)]aux → JxK, [y]aux

[e]aux → fv()

[g(t1, . . . , tn)]aux → g(Jt1K, . . . , JtnK), ∀g ∈ F.

Théorème 4 La fonction de représentation variadique J K est injective : ∀t1, t2∈ T (FAU), Jt1K = Jt2K ⇒ t1 = t2.

D’un point de vue un peu plus formel on peut définir les fonctions peigne (application orientée de l’axiome d’associativité), supprA (élimination des neutres), aplat (aplatissement des symboles variadiques), supprV (élimina-tion des vides), et on peut montrer des propriétés de commuta(élimina-tion.

u t1=AUt2 u′ t1′=vt2′ R↓ Rv ↓ T (FAU) T (Fv) T (FAU) T (Fv) J K J K

Figure 6.1 – Représentation informelle des liens entre termes associatifs et termes variadiques. Deux termes t1 et t2 sont égaux modulo AU si les formes normales par rapport à R sont identiques. Il en est de même pour deux termes variadiques t

1 et t

2, en utilisant le système Rv. Le point important ici est que la fonction de représentation J K met bien en correspondance les formes normales u et u.

Théorème 5 (commutations) Les fonctions peigne et aplat commutent avec la fonction de représentation variadique :

∀t ∈ T (FAU), aplat(JtK) = Jpeigne(t)K.

Les fonctions supprA et supprV commutent avec la fonction de représenta-tion variadique :

∀t ∈ T (FAU), supprV (JtK) = JsupprA(t)K.

On a alors la commutation de la normalisation associative avec élément neutre, et de la normalisation par aplatissement et élimination des éléments vides avec la fonction de représentation variadique :

6.2. Filtrage modulo 69 On peut résumer ce théorème par le diagramme suivant :

t −−−→J K JtK   ypeigne   yaplat peigne(t) −−−→J K aplat(JtK)   ysupprA   ysupprV supprA(peigne(t)) −−−→ supprV (aplat(JtK))J K Théorème 6 (complétude supprA ◦ peigne)

∀t1, t2 ∈ T (FAU), t1=AUt2⇒ supprA(peigne(t1)) = supprA(peigne(t2)). Théorème 7 (correction supprA ◦ peigne)

∀t ∈ T (FAU), t=AUsupprA(peigne(t)). Théorème 8 (complétude supprV ◦ aplat)

∀t1, t2 ∈ T (FAU), t1=AUt2⇒ supprV (aplat(Jt1K)) = supprV (aplat(Jt2K)). Théorème 9 (correction supprV ◦ aplat)

∀t1 ∈ T (FAU), ∃t2 ∈ T (FAU), supprV (aplat(Jt1K)) = Jt2K ∧ t1=AUt2. L’utilisation de ces théorèmes nous garantit que les termes de T (FAU) d’une même classe d’équivalence sont projetés par la normalisation associa-tive et élément neutre vers un représentant canonique unique. Cette normali-sation est implémentée par la combinaison de fonctions supprA ◦ peigne. Les représentations variadiques de ces termes sont quant à elles projetées par aplatissement et élimination des vides vers un représentant canonique dans T (Fv) unique. Cette normalisation est implémentée par supprV ◦ aplat. Ce représentant est par ailleurs égal à la représentation variadique du représen-tant canonique des termes initiaux.

Dans cette section, nous avons montré les liens entre une algèbre de termes comprenant des symboles associatifs ainsi que des éléments neutres pour ces symboles associatifs et une algèbre de termes comprenant des sym-boles variadiques.

Les formes normales modulo associativité et élément neutre sont alors mises en relation avec les formes normales des termes variadiques correspon-dant. Ainsi, le calcul des formes normales modulo aplatissement et suppres-sion des vides correspond au calcul des formes normales pour l’associativité et élément neutre. On peut alors raisonner sur des algèbres de termes asso-ciatives en utilisant comme représentation concrète des objets variadiques, tels que ceux générés par Gom.

La certification des corrélations entre termes associatifs et termes varia-diques permet alors de donner une base formelle pour la preuve d’algorithmes manipulant des termes modulo associativité et élément neutre, implantés en utilisant des structures associatives.

À retenir :

Un terme fv(t1, . . . , tn), où fv est un opérateur variadique, peut être vu comme un opérateur associatif avec élément neutre. Nous avons défini la fonction de représentation (J K) d’un terme associatif en un terme varia-dique ainsi que des fonctions de mise en forme canonique par aplatissement et élimination des neutres. Nous avons également montré des propriétés d’injection, de commutation, de correction et de complétude, garantissant que les termes AU et que les termes variadiques ont bien des représentants canoniques identiques, à J K près.

Dans le document Programmation et confiance (Page 71-75)

Documents relatifs