私は、シンボル と が任意の型の未知数になる可能性があるシンボリック操作を許可する python ライブラリに興味があります。
これは私が書きたいコードです:
>>> myexpression = symbol("foo") == "bar"
>>> print myexpression
foo == "bar"
>>> print myexpression(foo="quux")
False
>>> myexpression.or_(True)
True
またはそれの大まかな概算。実際にはそれほど賢い必要はありません。上記のようなものを取得するために、多くの追加のイントロスペクション メソッドを呼び出さなければならないことを十分に嬉しく思います (たとえば、論理トートロジーが直接単純化されていなくても)。
私の最初の本能はsympyを見ることでしたが、ライブラリはシンボリック変数が数値でなければならないという強い仮定をしているようです。そして、少なくともシーケンスとセットを操作したいと思います:
>>> 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'
非数値変数を理解するためにsympyを取得する方法、または同様のことができる別のライブラリはありますか?