繁体   English   中英

z3py 中 check-sat-using 的等价物是什么?

[英]What is the equivalent of check-sat-using in z3py?

我一直在努力实现与这篇文章完全相同的目标。 Z3 生成模型值的随机性

除了,答案是在 smt 中,我如何在 python 中的 z3py 中使用check-sat-using 有人可以帮我把这段代码翻译成python代码吗?

(set-option :smt.arith.random_initial_value true)
(declare-const x Int)
(declare-const y Int)
(assert (> (+ x y) 0))
(check-sat-using (using-params qflra :random_seed 1))
(get-model)
(check-sat-using (using-params qflra :random_seed 2))
(get-model)
(check-sat-using (using-params qflra :random_seed 3))
(get-model)

在 SMTLib 界面中, check-sat-using是一种告诉 z3 使用哪种策略的方法。 当您使用 z3py 时,您直接使用策略语言并显式创建求解器。 因此,从某种意义上说,z3py 中没有相应的调用check-sat-using 取而代之的是,您将获得一种完整的战术语言,它更加灵活和强大。

示例参见: http : //www.cs.tau.ac.il/~msagiv/courses/asv/z3py/strategies-examples.htm

还要注意check-sat-using在某种意义上结合了策略和设置,在 z3py 中,您使用set_param来实现参数设置,并使用战术语言来表达您想要使用的策略。

作为一般经验法则,不要尝试在 SMTLib 和 Z3 Python 接口之间“转换”。 虽然两者都可以表达相同的查询,但编程模型是不同的,尝试“逐个命令”翻译会导致您获得不惯用且难以维护的代码。 相反,如果您想使用 Z3py,只需了解那里的工作方式,记住它们看起来可能与 SMTLib 领域大不相同。 这是一个很好的资源,可以通读以帮助您入门: http : //www.cs.tau.ac.il/~msagiv/courses/asv/z3py/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM