SymPy - Espressioni logiche

Le funzioni booleane sono definite in sympy.basic.booleanarg module. È possibile costruire espressioni booleane con gli operatori python standard & (And), | (Or), ~ (Not) così come con >> e <<. Le espressioni booleane ereditano dalla classe Basic definita nel modulo principale di SymPy.

Funzione BooleanTrue

Questa funzione è equivalente a True come nel core Python. Restituisce un singleton che può essere recuperato da S.true.

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

Lo snippet di codice sopra fornisce il seguente output:

(Vero vero)

Funzione BooleanFalse

Allo stesso modo, questa funzione è equivalente a Boolean False in Python ed è accessibile da S.false

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

Lo snippet di codice sopra fornisce il seguente output:

(Falso, Falso)

E la funzione

Una funzione AND logica valuta i suoi due argomenti e restituisce False se uno dei due è False. La funzione emula & operator.

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

Lo snippet di codice sopra fornisce il seguente output:

(Vero vero)

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

Lo snippet di codice sopra fornisce il seguente output:

(Falso, Falso)

O funzione

Questa funzione valuta due argomenti booleani e restituisce True se uno dei due è True. Il | l'operatore ne emula convenientemente il comportamento.

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

Lo snippet di codice sopra fornisce il seguente output:

(Vero vero)

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

Lo snippet di codice sopra fornisce il seguente output:

(Falso, Falso)

Non funziona

Una funzione Logical Not comporta la negazione dell'argomento booleano. Restituisce True se il suo argomento è False e restituisce False se True. L'operatore ~ ​​esegue l'operazione simile alla funzione Non. È mostrato nell'esempio seguente:

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

Lo snippet di codice sopra fornisce il seguente output:

(Falsa verità)

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

Lo snippet di codice sopra fornisce il seguente output:

(Vero falso)

Funzione Xor

La funzione Logical XOR (OR esclusivo) restituisce True se un numero dispari di argomenti è True e il resto è False e restituisce False se un numero pari di argomenti è True e il resto è False. Un'operazione simile viene eseguita dall'operatore ^.

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

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

Lo snippet di codice sopra fornisce il seguente output:

(Vero vero)

>>> 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)

Lo snippet di codice sopra fornisce il seguente output:

Vero

Nel caso precedente, tre argomenti (numero dispari) sono True, quindi Xor restituisce true. Tuttavia, se il numero di argomenti True è pari, risulta False, come mostrato di seguito:

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

Lo snippet di codice sopra fornisce il seguente output:

Falso

Funzione Nand

Questa funzione esegue operazioni NAND logiche. Valuta i suoi argomenti e restituisce True se qualcuno di essi è False e False se sono tutti 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)

Lo snippet di codice sopra fornisce il seguente output:

(Vero falso)

Né funzione

Questa funzione esegue un'operazione NOR logica. Valuta i suoi argomenti e restituisce False se qualcuno di essi è True e True se sono tutti 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)

Lo snippet di codice sopra fornisce il seguente output:

(Falso, Falso)

Notare che anche se SymPy fornisce l'operatore ^ per Xor, ~ per Not, | per Or e & per And funziona come comodità, il loro uso normale in Python è come operatori bit per bit. Quindi, se gli operandi sono numeri interi, i risultati sarebbero diversi.

Funzione equivalente

Questa funzione restituisce una relazione di equivalenza. Equivalente (A, B) è vero se e solo se A e B sono entrambi veri o entrambi falsi. La funzione restituisce True se tutti gli argomenti sono logicamente equivalenti. In caso contrario, restituisce False.

>>> 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)

Lo snippet di codice sopra fornisce il seguente output:

(Falsa verità)

Funzione ITE

Questa funzione agisce come clausola If then else in un linguaggio di programmazione .ITE (A, B, C) valuta e restituisce il risultato di B se A è vero altrimenti restituisce il risultato di C. Tutti gli argomenti devono essere booleani.

>>> 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)

Lo snippet di codice sopra fornisce il seguente output:

(Falsa verità)