在Z3中支持三角函数(例如:cos,tan)

时间:2018-07-19 23:48:23

标签: optimization z3 z3py

我想用Z3优化一组方程。问题是我的方程是非线性的,但最重要的是它们确实具有三角函数。 z3中有没有办法解决? 我正在使用z3py API。

1 个答案:

答案 0 :(得分:2)

SMT求解器通常不支持先验数和三角函数。

正如Christopher所指出的(谢谢!),Z3确实支持三角函数和超验性。但是支持相当有限。 (实际上,这意味着您不应该期望Z3决定您要向其抛出的每个公式;在复杂的情况下,最有可能只返回unknown。)

有关出版物,请参见https://link.springer.com/chapter/10.1007%2F978-3-642-38574-2_12。以下讨论线程中有一些示例可以帮助您入门:https://github.com/Z3Prover/z3/issues/680

此外,请注意Z3的优化求解器不处理非线性方程;因此您将无法对其进行优化。对于这类优化问题,传统的SMT求解器不是正确的选择。

但是,如果您对δ可满足性满意(允许一定的误差因子),请查看dReal,它可以处理三角函数:http://dreal.github.io/据我所知,但是,它不会执行优化。