证明功能代码正确的常见形式化技术有哪些?


10

我想为我作为论文一部分编写的Haskell程序的某些部分提供证明。但是到目前为止,我找不到很好的参考书。

格雷厄姆·赫顿(Graham Hutton)的入门书籍《编程在Haskell中编程》(《Google图书》)(我在学习Haskell时就读了)涉及一些推理程序的技巧,例如

  • 方程式推理
  • 使用非重叠模式
  • 列表归纳

在第13章中,但不是很深入。

您是否可以推荐任何书籍或文章,以更详细地概述Haskell或其他功能代码的形式证明技术?

Answers:


5

理查德·伯德(Richard Bird)的小组是证明函数式编程结果的事实上的方法之一。

特别是,您要求对方程式推理和列表归纳进行深入或更深入的研究,这在《构造函数编程》讲座中提供。

更一般地,Bird和de Moor撰写的“编程代数”一文也涉及功能算法的正确性,例如优化和动态编程问题。


如果您遇到其他有用的资源来解决此问题,请提及它们,也许我们可以将此文章转变为Wiki。


谢谢!当然,如果我发现更多资源,请确保将其添加到我的帖子中。
FK82'9

6

你可以开始

主题包括逻辑的基本概念,计算机辅助定理证明,Coq证明助手,功能编程,操作语义,Hoare逻辑和静态类型系统。博览会面向的读者范围很广,从高级本科生到博士生和研究人员。尽管一定程度的数学成熟度将有所帮助,但没有假定逻辑或编程语言具有特定背景。

您可以跳过(或略过)编程语言理论的各个部分,而仅学习如何处理从Preface到IndPrinciples的形式化证明。这本书写得真好,很有启发性。

然后,您可能要继续

在本卷中,您将学习如何指定和验证(证明正确性)排序算法,二进制搜索树,平衡的二进制搜索树和优先级队列。在使用本书之前,您应该对这些算法和数据结构有一定的了解,可以在任何标准的本科算法教科书中找到。您应该了解Software Foundations第1卷(Logic Foundations)中的所有材料。

警告说明:VFA仍处于beta版本!


(您的第二个链接指向错误的位置。)另外,Agda中有经过 验证的函数编程;它使用Agda(一种正式的编程语言,但使用unicode),因此更接近数学符号。
Musa Al-hassy

更正,谢谢。是的,我已经阅读了VFPiA,但这并不符合我的口味。
安东·特鲁诺夫

谢谢您的回答!我认为有一个误解。我不是在寻找用于证明算法的功能技术(例如,证明助手),而是在寻找用于证明功能代码的技术(例如,用于证明给定算法的功能实现正确)@ MusaAl-hassy的答案非常接近我所需的答案。万一我错过了它,而您引用的书也涵盖了这一方面,您介意添加相关章节吗?
FK82 2013年

@ FK82这是Theorem app_assoc : ∀ l1 l2 l3 : natlist, (l1 ++ l2) ++ l3 = l1 ++ (l2 ++ l3)列表”一章的内容。这个例子看起来像您感兴趣的东西吗?他们从Coq中的函数式编程开始,然后继续进行有关函数式程序属性的推理。从前言到IndPrinciples的章节都涵盖了这两个章节,我想说编程和推理在这里是交织在一起的。
安东·特鲁诺夫

1
@ FK82(1)我完全同意这一评论。(2)您可能想看一看R. Bird的书“使用Haskell进行功能性思考”(2015年)。这本书有大量关于Haskell推理的例子。(3)同样,同一作者的“函数算法设计珍珠”(2010)可能会对您有所帮助。
Anton Trunov

5

事实证明,证明辅助功能和证明纯功能语言事物的示例的绝佳来源是证明助手,它通常包括纯函数语言作为其规范语言一部分,可以在该函数语言上进行等式推理。

可能需要查阅一本类似《依赖类型的认证程序》的书,以在特定的证明助手(即Coq)中深入介绍这种推理。


谢谢!我实际上实际上是在寻找Haskell中的技术。我的帖子经过编辑以包含所有功能代码,但这超出了我的意图。
FK82 2013年

1
我不知道设计用于专门验证Haskell的系统,但我要指出的是:1)Coq(和Agda)的功能核心与Haskell的功能核心基本上没有区别(除了对功能的限制之外),以及2)已验证程序在Coq和Agda中可以提取到Haskell(尽管我相信在Agda中可以更好地支持对Haskell的提取,因为Coda更加以Ocaml为中心)
Cody 2016年

很高兴知道!但是,这意味着我用Coq或Agda重写了程序(或相关部分)。我认为这在我看来并不合理。
FK82'9

有两个非常实验性的“前端”试图将Haskell转换为Isabelle或使用Isabelle 直接证明等效性,但是我不会在它们的到期日持有太多股票。我认为重新编写代码最终将减少工作量。
科迪

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.