CentraleSupélec LMF, UMR CNRS 9021
Département informatique Laboratoire Méthodes Formelles
Bât Breguet, 3 rue Joliot-Curie Bât 650 Ada Lovelace, Université Paris Sud
91190 Gif-sur-Yvette, France Rue Noetzlin, 91190 Gif-sur-Yvette, France
TD n°1 de FISDA : spécifications algébriques

Exercice 1

Dans la spécification des booléens vue en cours et rappelée ci-dessous, démontrer formellement les théorèmes suivants : {$\def\OR{\,\,.\mkern -3mu\vee.\,}$}

  • {$a \OR \mbox{false} = a$}
  • {$a \OR b = b \OR a$}
  • {$(a \OR b) \OR c = a \OR (b \OR c)$}

Exercice 2

On considère la spécification suivante des listes :

Question 1

Donner une extension de cette spécification définissant les opérations :

length
qui donne la longueur d'une liste
contains
qui indique si un élément est présent dans une liste
index
qui donne la position d'un élément dans une liste
reverse
qui rend l'inverse d'une liste (les éléments sont dans l'ordre inverse)
get
qui rend l'élément se trouvant à une position donnée dans une liste
insert
qui insère un élément à une position donnée dans une liste


Question 2

Démontrer par induction structurelle que length (snoc l x) = length (cons x l).

Question 3

Démontrer par induction structurelle que snoc l e = insert l e (Suc (length l))

Exercice supplémentaire (non traité en TD)

Donner une spécification des booléens sans axiomes (uniquement avec des constantes et des fonctions). Vérifiez que chaque fonction est complètement définie. Démontrer la commutativité du ET par induction.

Utilisez le squelette ci-dessous pour débuter :