SymPy - Expressões lógicas
As funções booleanas são definidas em sympy.basic.booleanarg module. É possível construir expressões booleanas com os operadores python padrão & (And), | (Ou), ~ (Não), bem como com >> e <<. Expressões booleanas herdam da classe Basic definida no módulo principal do SymPy.
Função BooleanTrue
Esta função é equivalente a True como no núcleo do Python. Ele retorna um singleton que pode ser recuperado por S.true.
>>> from sympy import *
>>> x=sympify(true)
>>> x, S.true
O trecho de código acima fornece a seguinte saída -
(Verdade verdade)
Função BooleanFalse
Da mesma forma, esta função é equivalente a Boolean False em Python e pode ser acessada por S.false
>>> from sympy import *
>>> x=sympify(false)
>>> x, S.false
O trecho de código acima fornece a seguinte saída -
(Falso, Falso)
E função
Uma função AND lógica avalia seus dois argumentos e retorna False se algum deles for False. A função emula o operador &.
>>> from sympy import *
>>> from sympy.logic.boolalg import And
>>> x,y=symbols('x y')
>>> x=True
>>> y=True
>>> And(x,y), x"&"y
O trecho de código acima fornece a seguinte saída -
(Verdade verdade)
>>> y=False
>>> And(x,y), x"&"y
O trecho de código acima fornece a seguinte saída -
(Falso, Falso)
Ou função
Esta função avalia dois argumentos booleanos e retorna True se qualquer um deles for True. O | operador convenientemente emula seu comportamento.
>>> from sympy import *
>>> from sympy.logic.boolalg import Or
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Or(x,y), x|y
O trecho de código acima fornece a seguinte saída -
(Verdade verdade)
>>> x=False
>>> y=False
>>> Or(x,y), x|y
O trecho de código acima fornece a seguinte saída -
(Falso, Falso)
Não funciona
Uma função Logical Not resulta na negação do argumento booleano. Retorna True se seu argumento for False e retorna False se True. O operador ~ executa a operação semelhante à função Not. É mostrado no exemplo abaixo -
>>> from sympy import *
>>> from sympy.logic.boolalg import Or, And, Not
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Not(x), Not(y)
O trecho de código acima fornece a seguinte saída -
(Falso verdadeiro)
>>> Not(And(x,y)), Not(Or(x,y))
O trecho de código acima fornece a seguinte saída -
(Verdadeiro falso)
Função Xor
A função Lógica XOR (OU exclusivo) retorna Verdadeiro se um número ímpar de argumentos for Verdadeiro e o resto for Falso e retorna Falso se um número par de argumentos for Verdadeiro e o resto for Falso. Operação semelhante é executada pelo operador ^.
>>> from sympy import *
>>> from sympy.logic.boolalg import Xor
>>> x,y=symbols('x y')
>>> x=True
>>> y=False
>>> Xor(x,y), x^y
O trecho de código acima fornece a seguinte saída -
(Verdade verdade)
>>> 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)
O trecho de código acima fornece a seguinte saída -
Verdadeiro
No caso acima, três (número ímpar) argumentos são Verdadeiros, portanto, Xor retorna verdadeiro. No entanto, se o número de argumentos Verdadeiros for par, resulta em Falso, conforme mostrado abaixo -
>>> a,b,c,d,e=(True, False, False, True, False)
>>> Xor(a,b,c,d,e)
O trecho de código acima fornece a seguinte saída -
Falso
Função Nand
Esta função executa a operação lógica NAND. Ele avalia seus argumentos e retorna True se algum deles for False, e False se todos eles forem 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)
O trecho de código acima fornece a seguinte saída -
(Verdadeiro falso)
Nem função
Esta função executa a operação NOR Lógica. Ele avalia seus argumentos e retorna False se algum deles for True, e True se todos eles forem 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)
O trecho de código acima fornece a seguinte saída -
(Falso, Falso)
Observe que, embora SymPy forneça o operador ^ para Xor, ~ para Not, | para Or e & para funções And por conveniência, seu uso normal em Python é como operadores bit a bit. Portanto, se os operandos forem inteiros, os resultados serão diferentes.
Função equivalente
Esta função retorna relação de equivalência. Equivalente (A, B) é verdadeiro se e somente se A e B são ambos verdadeiros ou falsos. A função retorna True se todos os argumentos forem logicamente equivalentes. Caso contrário, retorna 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)
O trecho de código acima fornece a seguinte saída -
(Falso verdadeiro)
Função ITE
Esta função atua como a cláusula If then else em uma linguagem de programação .ITE (A, B, C) avalia e retorna o resultado de B se A for verdadeiro, caso contrário, retorna o resultado de C. Todos os argumentos devem ser booleanos.
>>> 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)
O trecho de código acima fornece a seguinte saída -