z3 - z3::tactic 和 z3::goal 的用途

标签 z3

我发现我可以创建目标,将它们添加到策略中,然后根据策略创建求解器。

与简单地创建 z3::solver 实例并将我的表达式添加到其中相比,这种方法有什么优势?

最佳答案

战术有不同的目的。您可以创建一个包含您的断言/约束的目标,然后在该目标上运行一个策略,其结果将是一组新的(子)目标,即新的断言/约束。求解器确定可满足性并且不会产生新的(子)目标。

策略可以转换为求解器,这样生成的求解器将运行策略,如果结果是确定的(平凡的 sat/unsat),它将返回该结果。如果该策略产生的子目标不是决定性的,它将返回“未知”。

关于z3 - z3::tactic 和 z3::goal 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36236232/

相关文章:

c++ - 用一个微不足道的 forall 得到未知的结果

z3 - 如何获取 Z3 上下文的所有可用配置设置的列表?

arrays - 用Z3记录

z3 - 在 Z3 中的索引 i 处设置位

c++ - 在哪里可以了解适用于 C++ 的 z3 定理证明程序 API?

Z3 无法证明群论中的右取消性质?

z3 - 使用 Z3 获取符号值

logic - Z3定理证明者 : Pythagorean Theorem (Non-Linear Artithmetic)

racket - 在某些 Z3 绑定(bind)中是否有不支持声明排序的解决方法?

z3 中 SMT-LIB 2.0 断言上的标签