Algèbre de Boole
Last updated
Last updated
Lier les concepts vus en logique mathématique et en logique de programmation et sécurité.
Renforcer la compréhension des expressions logiques en programmation et des concepts de base de l'Algèbre de Boole.
Manipuler des fonctions sur les chaînes de caractères et d'autres fonctions intégrées de Python.
Utiliser des tuples.
Vous êtes un étudiant et dans votre cours de logique mathématique vous avez vu l'Algèbre de Boole. Vous souhaitez créer un programme qui vous permettra de valider quelques notions comme la tautologie, la contradiction, l'équivalence et l'implication.
Programmer les différentes opérations (avec des fonctions).
Utiliser votre programme pour vos vérifications.
Déroulement :
Deux (2) propositions seront entrées par l'étudiant.
Transformer les propositions (maths) en expression logique (Python) :
On doit d'abord vérifier que l'expression entrée est bien une proposition d'Algèbre de Boole.
Évaluer l'expression pour toutes les combinaisons de p et q.
Bonus : afficher la table de vérité de chaque proposition en option dans le programme.
Pour chaque proposition entrée on dit :
S'il s'agit d'une tautologie, une contradiction ou aucun des deux.
Vérifier si les deux propositions entrées sont équivalentes.
Vérifier si la première proposition implique la deuxième et inversement.
Complétez les tests unitaires pour toutes vos fonctions.
Limitez vous à 2 ou 3 jeux de données (ou plus selon leur pertinence) pour chaque test.
Travailler sur le projet fourni.
On travaillera uniquement avec les propositions ayant p et q.
Utiliser des tuples pout les valeurs de vérité (0, 1)
.
Utiliser des fonctions sur les chaînes de caractères pour remplacer des caractères, trouver les caractères alphabétiques, etc. Voir la doc suivante :
Utiliser les fonctions suivantes : all(liste_bool)
et eval(exp_str)
. Voir la doc suivante :
Propositions
p, q, r, s
simples variables p, q, r, s
Valeurs de vérité
{0, 1}
valeurs entières 0 et 1 (représentent False et True)
OU
+
or
ET
.
and
Négation
not
"|p . q"
not p and q
"|(p + q)"
not (p or q)
"(p . q) . |(p + q)"
(p and q) and not(p ou q)
Tautologie : la proposition est universellement vraie dans tous les cas possibles.
Contradiction : la proposition ne peut jamais être vraie, peu importe les valeurs des variables.
Equivalence ( P <--> Q) : Vraie (1) lorsque les deux propositions P et Q ont la même valeur de vérité. Faux (0) sinon.
Implication ( P ->Q ) : Tout le temps vraie (1), sauf quand P est vraie et Q est fausse.
La barre sera remplacée par |
dans le programme.