SymPy - Expressions logiques

Les fonctions booléennes sont définies dans sympy.basic.booleanarg module. Il est possible de construire des expressions booléennes avec les opérateurs python standard & (Et), | (Ou), ~ (Non) ainsi qu'avec >> et <<. Les expressions booléennes héritent de la classe Basic définie dans le module principal de SymPy.

Fonction BooleanTrue

Cette fonction est équivalente à True comme dans le noyau Python. Il renvoie un singleton qui peut être récupéré par S.true.

>>> from sympy import * 
>>> x=sympify(true) 
>>> x, S.true

L'extrait de code ci-dessus donne la sortie suivante -

(Vrai vrai)

Fonction BooleanFalse

De même, cette fonction est équivalente à Boolean False en Python et est accessible par S.false

>>> from sympy import * 
>>> x=sympify(false) 
>>> x, S.false

L'extrait de code ci-dessus donne la sortie suivante -

(Faux, Faux)

Et fonction

Une fonction logique AND évalue ses deux arguments et renvoie False si l'un d'eux est False. La fonction émule l'opérateur &.

>>> from sympy import * 
>>> from sympy.logic.boolalg import And 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=True 
>>> And(x,y), x"&"y

L'extrait de code ci-dessus donne la sortie suivante -

(Vrai vrai)

>>> y=False 
>>> And(x,y), x"&"y

L'extrait de code ci-dessus donne la sortie suivante -

(Faux, Faux)

Ou fonction

Cette fonction évalue deux arguments booléens et renvoie True si l'un d'eux est True. Le | L'opérateur émule son comportement.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Or(x,y), x|y

L'extrait de code ci-dessus donne la sortie suivante -

(Vrai vrai)

>>> x=False 
>>> y=False 
>>> Or(x,y), x|y

L'extrait de code ci-dessus donne la sortie suivante -

(Faux, Faux)

Pas de fonction

Une fonction Logical Not entraîne la négation de l'argument booléen. Il renvoie True si son argument est False et renvoie False si True. L'opérateur ~ exécute l'opération similaire à la fonction Not. Il est montré dans l'exemple ci-dessous -

>>> from sympy import * 
>>> from sympy.logic.boolalg import Or, And, Not 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False 
>>> Not(x), Not(y)

L'extrait de code ci-dessus donne la sortie suivante -

(Faux vrai)

>>> Not(And(x,y)), Not(Or(x,y))

L'extrait de code ci-dessus donne la sortie suivante -

(Vrai faux)

Fonction Xor

La fonction XOR logique (OU exclusif) renvoie True si un nombre impair d'arguments est True et le reste est False et renvoie False si un nombre pair d'arguments est True et le reste est False. Une opération similaire est effectuée par l'opérateur ^.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Xor 
>>> x,y=symbols('x y') 
>>> x=True 
>>> y=False

>>> Xor(x,y), x^y

L'extrait de code ci-dessus donne la sortie suivante -

(Vrai vrai)

>>> a,b,c,d,e=symbols('a b c d e') 
>>> a,b,c,d,e=(True, False, True, True, False) 
>>> Xor(a,b,c,d,e)

L'extrait de code ci-dessus donne la sortie suivante -

Vrai

Dans le cas ci-dessus, trois arguments (nombre impair) sont True, donc Xor retourne vrai. Cependant, si le nombre d'arguments True est pair, il en résulte False, comme indiqué ci-dessous -

>>> a,b,c,d,e=(True, False, False, True, False) 
>>> Xor(a,b,c,d,e)

L'extrait de code ci-dessus donne la sortie suivante -

Faux

Fonction Nand

Cette fonction exécute une opération logique NAND. Il évalue ses arguments et renvoie True si l'un d'entre eux est False et False s'ils sont tous True.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Nand 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Nand(a,b,c), Nand(a,c)

L'extrait de code ci-dessus donne la sortie suivante -

(Vrai faux)

Ni fonction

Cette fonction exécute une opération logique NOR. Il évalue ses arguments et renvoie False si l'un d'entre eux est True, et True s'ils sont tous False.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Nor 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Nor(a,b,c), Nor(a,c)

L'extrait de code ci-dessus donne la sortie suivante -

(Faux, Faux)

Notez que même si SymPy fournit l'opérateur ^ pour Xor, ~ pour Not, | pour les fonctions Or et & pour Et par commodité, leur utilisation normale en Python est en tant qu'opérateurs au niveau du bit. Par conséquent, si les opérandes sont des nombres entiers, les résultats seraient différents.

Fonction équivalente

Cette fonction renvoie une relation d'équivalence. Equivalent (A, B) est True si et seulement si A et B sont tous les deux True ou tous les deux False. La fonction renvoie True si tous les arguments sont logiquement équivalents. Renvoie False dans le cas contraire.

>>> from sympy import * 
>>> from sympy.logic.boolalg import Equivalent 
>>> a,b,c=symbols('a b c') 
>>> a,b,c=(True, False, True) 
>>> Equivalent(a,b), Equivalent(a,c)

L'extrait de code ci-dessus donne la sortie suivante -

(Faux vrai)

Fonction ITE

Cette fonction agit comme la clause If then else dans un langage de programmation.ITE (A, B, C) évalue et renvoie le résultat de B si A est vrai sinon il renvoie le résultat de C. Tous les arguments doivent être des booléens.

>>> from sympy import * >>> from sympy.logic.boolalg import ITE >>> a,b,c=symbols('a b c') >>> a,b,c=(True, False, True) 
>>> ITE(a,b,c), ITE(a,c,b)

L'extrait de code ci-dessus donne la sortie suivante -

(Faux vrai)