Département d'Informatique |
Maîtrise d'Informatique 2001/2002 |
Spécifications formelles, preuves |
& construction de programmes |
Travaux dirigés |
Lundi 7 janvier 2002 |
Sémantique d'un module en CafeOBJ:
Σ-algèbres et modèles
Exercice 1 : Le module LISTE
Soit Σ, la signature suivante donnée en CafeOBJ:
signature {
using(NAT)
[ Liste ]
op liste-vide : -> Liste
op adjt__ : Nat Liste -> Liste
op tete_ : Liste -> Nat
op queue_ : Liste -> Liste
op longueur_ : Liste -> Nat
}
-
Donner une Σ-algèbre évidente. Soit Liste, cette algèbre.
- Proposer une autre Σ-algèbre moins évidente,
qui associe à la sorte Liste, l'ensemble des listes
d'entiers positifs ou nuls,
de longueur inférieure ou égale à 3 éléments.
Soit Liste3, cette autre Σ-algèbre.
- Donner des exemples de termes de l'algèbre des termes clos, notée TΣ.
Même question pour l'algèbre des termes, notée T(Σ,X),
où X est un ensemble (non vide) de variables.
- Dans l'algèbre Liste3 que vaut
adjt (s 0) (adjt 0 (adjt 0 (adjt 0 liste-vide))) ?
Qu'en est-il de tete (adjt (s 0) (adjt 0 (adjt 0 (adjt 0 liste-vide)))) ?
Exercice 2 : Le module LISTE (suite)
On complète le module en écrivant:
module LISTE {
...
axioms {
var n : Nat
var l : Liste
eq longueur liste-vide = 0 .
eq longueur (adjt n l) = s (longueur l) .
eq tete (adjt n l) = n .
eq queue (adjt n l) = l .
}
}
-
Est-ce que Liste3 est un modèle de la spécification (Σ, E),
définie par la signature Σ de l'exercice 1
et par l'ensemble d'équations E ci-dessus ?
Même question pour Liste.
- Vérifier que Liste est un modèle
initial de la spécification (Σ, E) ;
i.e., montrer un isomorphisme entre Liste
et le modèle initial obtenu à partir de l'algèbre des termes
quotientée par les axiomes.
Exercice 3 : le module SITUATION-FAMILIALE
Considérons le module suivant:
module SITUATION-FAMILIALE {
protecting(BOOL)
signature {
[ Etat ]
op célibataire : -> Etat
op veuf : -> Etat
op marié : -> Etat
op sit-diff : Etat Etat -> Bool
}
axioms {
var x : Etat
eq sit-diff(x,x) = false .
eq sit-diff(célibataire,marié) = true .
}
}
-
Donner un modèle initial de ce module,
un modèle qui ne soit pas initial,
et une algèbre qui ne soit pas un modèle.
- quel axiome ajouter pour que dans tout modèle,
la relation sit-diff soit symétrique ?
- Trouver un axiome tel que tout modèle initial
qui satisfait cet axiome satisfasse forcément
les trois axiomes précédents.
This document was translated from LATEX by
HEVEA.