Me interesa una biblioteca de Python que permita la manipulación simbólica donde los símbolos y pueden ser desconocidos de un tipo arbitrario.Manipulación simbólica sobre tipos no numéricos
Este es el código que yo quiero a escribir:
>>> myexpression = symbol("foo") == "bar"
>>> print myexpression
foo == "bar"
>>> print myexpression(foo="quux")
False
>>> myexpression.or_(True)
True
O alguna aproximación de ello. En realidad, ni siquiera necesita ser tan inteligente, me alegra tener que recurrir a muchos métodos de introspección adicionales para obtener algo como lo anterior (por ejemplo, incluso si la tautología lógica no se simplifica directamente)
Mi primer instinto fue mirar sympy, pero parece que la biblioteca hace la fuerte suposición de que las variables simbólicas deben ser números; y me gustaría al menos operar en secuencias y conjuntos:
>>> myexpression = sympy.Eq(sympy.Symbol("foo"), 5)
>>> myexpression
foo == 5
>>> myexpression = sympy.Eq(sympy.Symbol("foo"), "bar")
Traceback (most recent call last):
...
sympy.core.sympify.SympifyError: SympifyError: 'bar'
¿Hay una manera de conseguir sympy para comprender las variables no numéricas, u otra biblioteca que puede hacer cosas similares?
¿Qué hay de usar uno o más diccionarios con objetos 'sympy.Symbol' como claves? – wberry