我们可以从字符串中评估 z3py 表达式吗?
Can we evaluate z3py expressions from a string?
我在文档中找不到关于该主题的任何内容。我试过:s.add("Or(a==1, a==2, a==3), Or(b==1, b==2, b==3), Or(c==1, c==2, c==3)")
,但这不起作用。可能吗?
在 sympy 中,我们可以使用 sympify
或 parse_expr
编辑:
我知道我可以只使用 pythons eval
。它也有 parse_smt2_string()
,但没有参考 SMT2 的工作原理。
eval
是要走的路。 z3py 不支持以任何方式解析本质上是 Python 程序的内容。请注意,为了使它起作用,您应该以某种方式在环境中包含变量 a
/b
和 c
,通过显式声明或通过 eval
'ing 他们的声明像 "a, b, c = Ints('a b c')"
这样的字符串
关于您的评论“没有参考 SMT2 的工作原理:”SMTLib 是所有 SMT-solvers 接受的标准格式,包括 z3。看这里:http://smtlib.cs.uiowa.edu/
我在文档中找不到关于该主题的任何内容。我试过:s.add("Or(a==1, a==2, a==3), Or(b==1, b==2, b==3), Or(c==1, c==2, c==3)")
,但这不起作用。可能吗?
在 sympy 中,我们可以使用 sympify
或 parse_expr
编辑:
我知道我可以只使用 pythons eval
。它也有 parse_smt2_string()
,但没有参考 SMT2 的工作原理。
eval
是要走的路。 z3py 不支持以任何方式解析本质上是 Python 程序的内容。请注意,为了使它起作用,您应该以某种方式在环境中包含变量 a
/b
和 c
,通过显式声明或通过 eval
'ing 他们的声明像 "a, b, c = Ints('a b c')"
关于您的评论“没有参考 SMT2 的工作原理:”SMTLib 是所有 SMT-solvers 接受的标准格式,包括 z3。看这里:http://smtlib.cs.uiowa.edu/