• Aucun résultat trouvé

¬(True ∧ ¬x) ∼= x ¬True ∨ x ∼= x (trans.) False∨ x ∼= x (trans.) Garrett Birkhoff Garrett Birkhoff était un mathématicien américain (19 janvier 1911 – 22 no-vembre 1996), fils du ma-thématicien George Bir-khoff (1884 – 1944). Il est entré à l’université de Cambridge dans le but d’y étudier la phy-sique mathématique mais il y étudia finalement l’algèbre abstraite. Bien qu’il ne possédait au-cun doctorat, il se consa-cra à l’enseignement et à la recherche. Il fonda notamment une nouvelle branche des mathéma-tiques, l’agèbre univer-selle, avec la publica-tion en 1935 de son ar-ticle « On the Structure of Abstract Algebras ». Cinq théorèmes portent le nom de Théorème de Bir-khoff. Trois sont dûs à George Birkhoff et deux sont dûs à Garrett Bir-khoff.

Théorème 2.50. Soit (Σ = (S, F), E) une spécification équationnelle, le théo-rème de Birkhoff nous assure que, pour tous termes t et t0 :

E ` t ∼= t0 ssi E|= t ∼= t0

Autrement dit le raisonnement équationnel est correct et complet.

2.3 Réécriture

Retournons quelques instants sur le problème du mot. Étant donnée une équation t ∼= t0, on se pose la question de savoir si elle est valide dans tous les modèles d’une spécification équationnelle E donnée. Notons que ce problème est indécidable en général. Nous avons présenté dans une section précédente un système d’inférence pour la logique équationnelle qui nous permet de dériver l’équation t ∼= t0 si et seulement si l’équation est valide dans tous les modèles de E. Cependant, les preuves équationnelles (c’est-à-dire les preuves obtenues à partir du système d’inférence de la logique équationnelle) sont fortement non-déterministes et ne sont, par conséquent, pas adaptées au calcul. L’idée de base de la réécriture est la suivante : puisque l’on souhaite effectuer un raisonnement modulo une congruence (=E), c’est-à-dire une relation d’équivalence stable par contexte, il est équivalent de raisonner dans l’algèbre quotient correspondante T (Σ, X )/=E, c’est-à-dire l’algèbre dont le domaine est l’ensemble des classes d’équivalence engendrées par =E. Une idée pourrait alors consister à donner un représentant unique à chaque classe d’équivalence, ramenant le problème de la validité d’une équation à celle de l’égalité des “représentants” de la classe d’équivalence des termes en question. Il devient alors nécessaire d’exhiber, pour une spécification équationnelle donnée E et un terme t, une procédure de calcul du représentant de la classe d’équivalence de t dans E. C’est, historiquement, ce qui a motivé l’introduction des systèmes de réécriture de termes. Par ailleurs, l’attribution 36

2.3. RÉÉCRITURE

d’un représentant unique par classe d’équivalence d’objets est à la base de bien des raisonnements destinés à prouver l’équivalence entre deux objets (minimalisation des automates, formes normales des fonctions booléennes, . . . ).

2.3.1 Définitions

On supposera dans la suite l’existence d’une signature Σ = (S, F) et d’un en-semble dénombrable de variables X . La notion de terme fait donc référence aux éléments de T (Σ, X ).

Définition 2.51. Une règle de réécriture (sous-entendu sur Σ et X ) est une paire de termes (l, r) de même sorte notée l → r telle que Var(r) ⊆ Var(l). l est le membre gauche de la règle et r le membre droit. Un système de réécriture est un ensemble de règles de réécriture.

Définition 2.52.Soit R un système de réécriture et t un terme. La relation de réduction engendrée par R, notée →R est la plus petite relation contenant R stable par substitution et par contexte. Autrement dit, t →Rt0 ssi il existe :

un contexte C ;

une règle de réécriture l → r de R ;

une substitution σ ;

tels que t = C[σ(l)] et t0 = C[σ(r)]. On dit alors que t est réécrit (ou se réécrit ou se réduit) en t0par R (en un pas). On note =Rla plus petite relation d’équivalence contenant →R.

Remarque. En tant que relation binaire, les notations, définitions et propriétés de la section précédente s’appliquent à →R. Par ailleurs, on confondra souvent un système de réécriture avec la relation de réduction qu’il engendre.

Par ailleurs, si p est une propriété sur les termes (être linéaire, être clos, . . . ), alors la règle de réécriture l → r vérifie :

pà gauche si l vérifie p ;

pà droite si r vérifie p ;

psi l et r vérifient p.

Un système de réécriture vérifie une propriété p ssi toutes les règles qui le constituent la vérifie.

Exemple 2.53. Soit Σ la signature définie dans l’exemple 2.39 augmentée du symbole fibo : Nat × Nat → Nat. Le système de réécriture R suivant :

zero + x → x

succ(x) + y → succ(x + y) fibo(zero) → zero

fibo(succ(zero)) → succ(zero)

fibo(succ(succ(x ))) → fibo(x ) + fibo(succ(x ))

sé-quence suivante :

fibo(succ(succ(zero)) + z ) →R fibo(succ(succ(zero) + z )) →R fibo(succ(succ(zero + z ))) →R fibo(succ(succ(z )))

R fibo(z ) + fibo(succ(z ))

La partie soulignée de chaque terme (appelé radical ou redex) correspond au sous-terme filtrant la règle de réécriture appliquée.

2.3.2 Preuves de propriétés

L’utilisation des systèmes de réécriture a pour objectif, au delà de fournir un moyen opérationnel pour effectuer des preuves équationnelles, de permettre de prou-ver des propriétés sur les calculs qu’ils modélisent. Par exemple, lorsqu’un système de réécriture modélise le processus d’évaluation d’une fonction, les questions suivantes sont d’intêret :

la fonction est-elle définie pour toutes les valeurs d’entrée possibles ?

l’évaluation de la fonction fournit-elle pour toute entrée un résultat en temps fini ?

les calculs sont-ils non ambiguë, autrement dit le système modélise-t-il bien une relation fonctionnelle ?

Par ailleurs, sous certaines conditions, un système de réécriture, vu comme la spéci-fication inductive d’une relation, permet d’effectuer des preuves par induction.

Certaines propriétés d’un système de réécriture réfèrent aux propriétés corres-pondantes sur les relations de réduction qu’elles engendrent. En particulier, on dira qu’un système de réécriture est confluent, termine, . . . ssi la relation de réduction as-sociée est confluente, termine, . . . D’autres propriétés ne s’expriment pas directement sur la relation de réduction engendrée. C’est le cas de la propriété de confluence sur les termes clos et de la complétude suffisante.

Définition 2.54. Soit R un système de réécriture sur une signature Σ. On dit que R est confluent sur les termes clos ssi la relation →R∩ T (Σ) × T (Σ) est confluente.

Il s’agit en général de la propriété que l’on souhaite vérifier lorsque l’on s’intéresse à la non ambiguité des calculs modélisés par un système de réécriture. Un système peut être confluent sur les termes clos sans être confluent.

Exemple 2.55. Soit Σ une signature comportant les symboles True :→ Bool, True :→ Bool, f : Bool → Bool et g : Bool → Bool. On définit le système de réécriture R suivant sur Σ :

f (True) → True f (False) → True g(x) → True g(x) → f(x)