Answers:
一阶逻辑是不确定的,因此SAT求解并没有真正的帮助。也就是说,存在用于一阶公式的有界模型检查的技术。这意味着在尝试确定公式是对还是错时,只能考虑固定数量的对象。显然,这还不完整,但是如果找到了反例,那么它确实是一个反例。
工具Alloy是一个工具,它允许使用一阶逻辑描述模型(尽管表面语法基于相关描述的模型),并使用有界模型检查来查找解决方案。引擎盖下使用SAT求解器。一种合金扩展允许具有时间特性的模型,尽管从技术上讲它不支持时间逻辑。
如果您想进一步探索,例如验证程序的正确性,则可以查看程序验证工具。这些通常基于Hoare逻辑(用于解释前置条件和后置条件),并可能通过Separation逻辑进行扩展(用于解释堆)。这些逻辑通常是不确定的,因此需要人工与验证工具之间进行一定程度的交互。一些示例工具是:
在阅读完您的问题之后,我能看到的并且具有足够知识将主题联系在一起的唯一方法是,提供一系列从软件验证中挖掘出来的高级文章,最后尝试将模型检查和定理证明结合起来。希望我的评论能做到:
先看一下软件验证,然后是形式验证,然后是模型检查和形式软件验证:模型检查和定理证明
戴夫(Dave)给出了一个很好的答案,我对问题的第一部分没有比戴夫(Dave)更加公正的理由,因为我对此还很陌生。
由于这是您在SE网站上的第一个问题,所以我没有给出答案而是发表评论的原因是,这里的答案不能只是一组链接,而必须给出书面答案并使用链接来支持答案。因此是评论而不是答案。
关于:
非常感谢初学者在这本书上指向书籍或文章的任何指针。
我建议和使用的书籍是:
计算机科学中的逻辑-系统建模与推理第二版。作者:Huth和Ryan这将介绍逻辑并逐步进行模型检查,但不涉及定理证明。因此,这应该涵盖您所有与逻辑和模型检查有关的基本问题。
Baier和Katoen提出的模型检查原理我刚刚开始阅读这一文章,它比阅读大量论文并试图了解它们如何相互融合要好得多。这是关于模型检查的最畅销书,如果不是最受推荐的书之一。它应该回答有关模型检查的更高级的问题。
Kroger和Merz的时间逻辑和状态系统我经常喜欢在自学主题时由不同作者撰写书籍。这是对“模型检查原理”的补充/完善。
哈里森的实用逻辑和自动推理手册作为一名程序员,我对本书的推荐不够高。这本书从介绍逻辑开始,一直到基于HOL Light的工作为定理证明者创建内核。只是为了强调这本书使用了有效的OCaml代码,以我认为很友好的术语解释了这些定理,并为您提供了您需要了解的知识,但并没有使您无法建立联系或感觉自己像是在旁走。If是一本非常专注的书,涉及从逻辑到特定类型的定理证明者。
如何证明它:Velleman的结构化方法要进入证明助手进行定理证明,您将需要生活和定理。
每天的证明和数学白话入门这是一本免费的书,不仅补充了“如何证明它”,而且总的来说还超出了它。看到这一流行起来,我不会感到惊讶。
目前,由于我仍在学习每个定理的优缺点,所以我无法进一步扩展定理证明。
Isabelle,因为它基于更高阶的统一。
这些证明助手通常还拥有书籍,是最新的,流行的,开放源代码的,维护的,并具有活跃的支持社区。
注意:我使用worldcat.org来参考这些书,但是您可以使用Amazon的内部外观功能对其进行阅读。