小编Tia*_*Liu的帖子

增量求解如何在Z3中起作用?

关于Z3如何逐步解决问题,我有一个问题.在阅读了一些答案后,我发现了以下内容:

  1. 有两种方法可以使用Z3进行增量求解:一种是推/弹(堆栈)模式,另一种是使用假设.Z3中的软/硬约束.
  2. 在堆栈模式下,z3会忘记全局(我是对吗?)范围内所有学习的引理,即使在SMT求解器中有一个局部"弹出" 约束强化效率之后
  3. 在假设模式中(我不知道名称,这是我想到的名称),z3不会简化一些公式,例如值传播.z3行为根据不满核心的要求而变化

我做了一些比较(欢迎你问一下这些公式,它们太大而无法放在rise4fun上),但这里是我的观察:在一些公式中,包括量词,假设模式更快.在一些包含大量布尔变量(假设变量)的公式中,堆栈模式比假设模式更快.

它们是否针对特定目的实施?增量求解如何在Z3中起作用?

smt z3

47
推荐指数
1
解决办法
2229
查看次数

增量求解的好处是什么?

如果"pop"在增量约束中完全破坏上下文(即学习的lemmas),那么解决使用"堆栈模式"的目的是什么?

理由:我想如果我只有一个约束(几个合取),那么最好只进行一次查询,而不是将合并堆叠在不同的框架中.如果我有超过1个约束并且决定使用堆栈的增量求解,那么在查询一个约束之后我需要(至少有一个)pop,这可能会"破坏学习的lemmas".那么,使用增量求解(使用堆栈)的优点是什么.什么"摧毁流行音乐中学习的引理"真的意味着什么?

观察:我的实验表明这是非常有益的,但我找到了指示(参见smt公式,总共有500个查询,增量求解在0.01秒内完成,而noninc.求解在16秒完成.)与此观察结果相矛盾.

z3

5
推荐指数
1
解决办法
676
查看次数

标签 统计

z3 ×2

smt ×1