我看到我可以创建目标,将它们添加到策略中,并根据策略创建解算器。
这种方法的优点是什么,而不是简单地创建一个z3 :: solver实例并将表达式添加到它?
答案 0 :(得分:2)
战术有不同的目的。您可以创建一个包含断言/约束的目标,然后在目标上运行Tactic,其结果将是一组新的(子)目标,即新的断言/约束。求解器确定可满足性并且不会产生新的(子)目标。
战术可以转换为解算器,这样得到的解算器就会运行战术,如果结果是确定的(平凡的坐着/不饱和),它将返回该结果。如果策略产生的子目标不是决定性的,它将返回“未知”。