区分决策程序vs SMT求解器vs定理证明器vs约束求解器


23

这些术语使我感到困惑。我认为

  • SAT求解器:确定命题逻辑的可满足性(使用DPLL或本地搜索)。
  • 决策程序是确定某个可确定的一阶理论的可满足性的过程。
  • SMT求解器是SAT求解器+决策程序。
  • 定理证明者表示类似动态逻辑的东西,例如KeY工具
  • 约束求解器:我不知道。

但是我看到有人称Z3为定理证明者。因此,我不知道该如何区分这些术语。对所有这些人来说,最通用的术语是什么?谢谢。

Answers:


18

SMT求解器是SAT求解器+决策程序

SAT求解器是决策问题的求解器:SAT问题是决策问题。此外,此决策问题是“可简化的”:

SAT问题是可自约的,也就是说,可以使用正确回答SAT实例是否正确的每种算法来找到满意的分配

—(维基百科

这意味着SAT解算器除了可以确定问题外,还可以给出令人满意的分配。

TL; DR SMT求解器根据理论允许的类型/约束来解决SAT问题的泛化问题。此外,它们还允许比SAT编码所允许的更高级别的类型关系进行编码。

一种==C一种=C

  1. 请参阅Beaver SMT解算器,它甚至可以输出需要解决的等效SAT问题。

尽管QF_BV SMT求解器比SAT求解器具有这一优势,但我认为这并不是复杂性的优势:它们本质上是等效的,并且花费指数时间来解决最坏的问题。但是实际上,由于有了这些额外的知识,QF_BV SMT求解器可能会快得多。请参阅我对SMT求解器的限制的答案,以获取“当前” QF_BV SMT求解器和SAT求解器都会被“硬”的示例。

还有一些SMT求解器试图解决比布尔可满足性更棘手的问题(例如,允许实数的类型和约束,或者允许使用量词)。显然,这些理论上至少与SAT解算器一样慢。这些SMT求解器是对SAT问题的概括。代替使用二进制变量,每个“理论”都允许在不同域(例如实数)或量化(所有)约束上的关系/约束。

定理证明者

P=ñP

但是,与解决NP完全问题的有效方法引起的数学革命相比,这种变化在意义上可能显得微不足道。根据Stephen Cook的说法,[19]

...这将允许计算机找到具有合理长度证明的任何定理的形式证明,从而对数学进行转换,因为形式证明可以在多项式时间内轻松识别。示例问题很可能包括所有CMI奖金问题。

—(维基百科

[19]:库克,斯蒂芬(2000年4月)。P与NP问题。粘土数学研究所(PDF)

P=ñP

但是就目前而言,自动定理大多证明是使用启发式或指数时间算法(但仍然很有用)。

约束求解器

这些通常是将SAT / SMT求解器重新编写为其他语言的形式。如果您曾经使用任何SAT / SMT求解器来解决问题,那么您真的可以爱上求解器的不确定性。也就是说,您无需告诉计算机如何做,而是告诉计算机您想要什么。您希望输出具有什么属性,以及SAT / SMT求解器将以不确定性“填充”它,而不会打扰您实现的细节。这种编程范例非常有吸引力,称为约束编程,要运行,它必须使用约束求解器(取决于后端允许使用的类型和约束,它可能在后端使用SAT / SMT求解器) 。

但是我看到有人称Z3为定理证明者。因此,我不知道该如何区分这些术语。

AFAIK Z3是许多工具的套件,包括SMT求解器,几种定理证明/模型检查语言等。

对所有这些人来说,最通用的术语是什么?

我认为可满足性问题的一般化是可满足性模理论,因此“ SMT求解器”将是所有这些中最通用的。但是,并非所有实际的SMT求解器实现都能解决所有理论,因此这并不意味着所有SMT求解器都具有同等的通用性。


1
谢谢您的回答。但我认为SMT求解器不是最通用的术语。随着人们经常比较SMT求解器VS约束求解,例如见stackoverflow.com/questions/10584990/...
QSP

@qsp我可能错了,但是我不确定该比较如何暗示这一点。无论如何,我根本不了解CSP是否以某种方式比所有SMT更强大/更通用。如果您找到相关参考,请随时编辑答案。
Realz Slaw
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.