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.