TD 1 : modélisation dans le langage logique de Why3

publicité
M1-GL
MFDS
TD 1 : modélisation dans le langage logique de Why3
Exercice 1 : nombres
Le but de cet exercice est d’écrire dans le langage logique de Why une théorie des nombres
modélisant les propriétés de parité des entiers.
•
Définir 2 prédicats pair et impair indiquant respectivement si un entier est pair ou
impair.
•
Exprimer les propriétés suivantes.
1. Tout entier est pair ou impair.
2. Tout entier pair n’est pas impair.
3. Tout entier pair est tel que son successeur est impair.
4. La parité d’un entier est celle du successeur de son successeur.
5. Tout entier s’écrivant comme le double d’un autre est pair.
•
Définir un prédicat divise indiquant qu’un entier d divise un entier n.
•
Proposer quelques lemmes relatifs au prédicat divise.
•
Définir un prédicat premier indiquant si un entier est un nombre premier.
•
Exprimer la propriété suivante : le plus petit diviseur strictement supérieur à 1 d’un
entier est un nombre premier.
Exercice 2 : listes
Écrire dans le langage logique de Why une théorie contenant :
•
une fonction renverser renversant une liste,
•
la propriété d’idempotence de la fonction renverser (i.e. renverser une liste deux
fois redonne la liste initiale),
•
la propriété exprimant que la longueur d’une liste renversée est celle de la liste
initiale,
•
la propriété relative aux fonctions renverser et ++ (concaténation),
•
un prédicat est-permutation indiquant qu’une liste est une permutation d’une autre
liste.
•
Proposer plusieurs lemmes relatifs au prédicat est-permutation.
Téléchargement