关于Z3如何逐步解决问题,我有一个问题.在阅读了一些答案后,我发现了以下内容:
我做了一些比较(欢迎你问一下这些公式,它们太大而无法放在rise4fun上),但这里是我的观察:在一些公式中,包括量词,假设模式更快.在一些包含大量布尔变量(假设变量)的公式中,堆栈模式比假设模式更快.
它们是否针对特定目的实施?增量求解如何在Z3中起作用?
如果"pop"在增量约束中完全破坏上下文(即学习的lemmas),那么解决使用"堆栈模式"的目的是什么?
理由:我想如果我只有一个约束(几个合取),那么最好只进行一次查询,而不是将合并堆叠在不同的框架中.如果我有超过1个约束并且决定使用堆栈的增量求解,那么在查询一个约束之后我需要(至少有一个)pop,这可能会"破坏学习的lemmas".那么,使用增量求解(使用堆栈)的优点是什么.什么"摧毁流行音乐中学习的引理"真的意味着什么?
观察:我的实验表明这是非常有益的,但我找到了指示(参见smt公式,总共有500个查询,增量求解在0.01秒内完成,而noninc.求解在16秒完成.)与此观察结果相矛盾.