All published worksheets from http://sagenb.org
Image: ubuntu2004
Exercice 1 : Écrire une fonction "Implique(a,b)" qui vaut True si a=>b, False sinon.
Exercice 2 : On représente une formule logique à deux inconnues par une fonction à deux arguments ({Vrai, Faux}² -> {Vrai, Faux}). Écrire une fonction qui prend en entrée deux telles formules et qui teste si elles sont équivalentes.
Exercice 3 : Construire une fonction, qui prend en entrée une formule logique et qui imprime sa table de vérité (de taille 4).
Exercice 4 (*) : Même question, mais l'entrée est un entier n et une fonction à n arguments. Pour ce faire, sachez que * transforme une liste en arguments pour une fonction : par exemple, si args = [1,2,3], alors f(*args) = f(1,2,3).
Exercice 5 (**) : On prend en entrée une chaîne de caractères de la forme "(p ou q) => r", bien parenthésée (où on admet que non, ou, et, =>, <=> sont des mots-clés, et les autres lettres des propositions). On veut obtenir une table de vérité complète. Bon courage !
Deuxième partie : ensembles.
On va essayer de modéliser des ensembles avec des structures de données qui ne sont pas forcément faites pour ça, à savoir des listes (d'entiers). Dans la suite, quand on parlera d'ensemble, on voudra dire liste sans prendre en compte les répétitions ou l'ordre des entrées. Dans la vraie vie, Sage utilise aussi les listes pour modéliser des ensembles vie l'opération "set".
Exercice 5 : Écrivez une fonction qui prend en entrée un ensemble E et un prédicat p (c'est-à-dire ici une fonction N -> {True, False}), et qui vérifie si on a "Pour tout x dans E, p(x)". Renvoyez juste True ou False.
Exercice 6 : Écrivez une fonction qui prend en entrée deux ensembles et qui écrit leur produit cartésien. Un couple est bien défini en Python et s'écrit simplement (a,b).
Exercice 7 : Écrivez une fonction qui prend en entrée deux ensembles et qui teste s'ils sont égaux, sans les modifier.
Exercice 8 : Écrivez une fonction qui, étant donné en entrée deux ensembles A et B et une fonction f, vérifie qu'on a bien f(A) inclus dans B, et indique si f est injective, surjective ou bijective.
Exercice 9 : Écrivez un fonction qui "nettoie" un ensemble, c'est-à-dire qui supprime les doublons. Vous pouvez utiliser une fonction appartient(E,x,i) qui teste si l'élément x fait partie des i premiers éléments de E. Si vous êtes perfectionniste, il existe une fonction qui trie les listes (trouvez-la).
On va représenter une relation comme une fonction qui prend en entrée deux entiers et renvoie True ou False.
Exercice 10 : Écrivez une fonction qui prend en entrée un ensemble et une relation et qui teste si elle est réflexive, symétrique et/ou transitive.
Puis, étant donné un ensemble et une relation d'équivalence, passez l'ensemble au quotient.
Exercice 11 (*) : Écrivez une fonction qui, prenant en entrée quatre ensembles A, B, A', B' et deux fonctions f : A -> A' et g : B -> B', renvoie la fonction produit (x,y) -> (x', y'). Attention : cette fonction ne prend qu'un seul argument, et cet argument est un couple.
Exercice 12 (*) : Construire la fonction qui à un ensemble associe l'ensemble de ses parties.
Bonus comique pour la fin : vous vous rappelez que je vous ai expliqué que Vrai pouvait s'écrire 1 et que Faux pouvait s'écrire 0 ?