形式化验证算法的正确性
-
23-09-2019 - |
题
首先,这是否只能在没有副作用的算法上才有可能?
其次,我在哪里可以了解这个过程,有什么好的书籍、文章等?
解决方案
COQ 是证明助理产生正确输出ocaml的。这是非常复杂的,虽然。我很少抽时间去寻找它,但我的同事开始,然后两个月后,停止使用它。这主要是因为他希望把事情做得更快,但如果你需要验证的算法,这可能是一个好主意。
下面是一个使用COQ和约证明算法会谈过程。结果 和是一个教程了解在COQ撰写学术论文。
其他提示
- 一般是很多 更轻松 在不涉及副作用的情况下验证/证明正确性,但这不是绝对要求。
- 您可能想查看一些正式规范语言的文档,例如 Z. 。正式规范本身并不是证明,但通常是证明的基础。
购买这些书籍: http://www.amazon.com/Science-Programming -Monographs-计算机/ DP / 0387964800
在格里斯书,科学规划是伟大的东西。患者,彻底,完整。
逻辑在计算机科学,由胡特和Ryan,给人现代系统的用于验证系统合理可读概述。从前谈到证明程序的正确性时间的人 - 有可能会或可能不会有副作用的编程语言。我的印象从这本书中获得和其他地方是,真正的应用是不同的 - 例如证明的协议是正确的,或者一个芯片的浮点单元能够正确划分,或操纵链表无锁程序是正确的。
ACM计算概观第41卷第4期(2009年10月)上的软件验证一个特殊的问题。它看起来像您可以通过搜索“形式化方法:实践与经验”得到没有ACM账户的论文至少一个。
如果您熟悉LISP那么你一定要看看ACL2:的 http://www.cs.utexas.edu/~moore/acl2/acl2-doc.html
Dijkstra的编程的纪律和他的EWDS奠定形式验证编程一门科学的基础。一个更简单的工作是Wirth的的系统编程的,其与简单的方法来使用验证开始。维尔特使用预先ISO帕斯卡尔的语言;迪杰斯特拉使用一个的Algol-68样形式主义称为留守(GCL)。因为Dijkstra算法和霍尔形式验证已经成熟,但这些旧的文本可能仍然是一个很好的起点。
由斯坦福人开发的PVS工具是说明书和验证系统。我的工作,并发现Theoram证明它是非常有用的。
WRT(1),你可能会在某种程度上“捕获”在程序变量算法的副作用旨在模型,使得基于状态的副作用来创建算法的模型。