Foundational program verification in Coq with automated proofs

MSFP '10 Pub Date : 2010-09-25 DOI:10.1145/1863597.1863603
A. Chlipala
{"title":"Foundational program verification in Coq with automated proofs","authors":"A. Chlipala","doi":"10.1145/1863597.1863603","DOIUrl":null,"url":null,"abstract":"Most people who know of the proof assistant Coq associate it with long, manual proofs via tactic scripts. In contrast, classical verification tools, based on automated theorem-provers for first-order logic, are well established as supporting program verification without any manual proof steps. However, there is a price to pay: program verifiers are large, complex bodies of code, and believing their outputs requires believing in much more than the correct implementation of Coq's proof-checking kernel.\n In this tutorial, I will demonstrate how to use the Bedrock Coq library to get the best of both worlds. Our focus will be on the kinds of programs with the most tedious detail and the most opportunity to benefit from automation: namely, those written in assembly language. I will show how to build automated correctness proofs of simple imperative data structures, while dealing with first-class code pointers and producing Coq proof terms for theorems whose statements depend on little beyond operational semantics of machine code.","PeriodicalId":355206,"journal":{"name":"MSFP '10","volume":"15 8 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2010-09-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"MSFP '10","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1863597.1863603","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0

Abstract

Most people who know of the proof assistant Coq associate it with long, manual proofs via tactic scripts. In contrast, classical verification tools, based on automated theorem-provers for first-order logic, are well established as supporting program verification without any manual proof steps. However, there is a price to pay: program verifiers are large, complex bodies of code, and believing their outputs requires believing in much more than the correct implementation of Coq's proof-checking kernel. In this tutorial, I will demonstrate how to use the Bedrock Coq library to get the best of both worlds. Our focus will be on the kinds of programs with the most tedious detail and the most opportunity to benefit from automation: namely, those written in assembly language. I will show how to build automated correctness proofs of simple imperative data structures, while dealing with first-class code pointers and producing Coq proof terms for theorems whose statements depend on little beyond operational semantics of machine code.
在Coq中使用自动证明进行基础程序验证
大多数知道证明助手Coq的人都将它与通过战术脚本进行的冗长的手动证明联系在一起。相比之下,经典的验证工具,基于一阶逻辑的自动定理证明,被很好地建立为支持程序验证,而不需要任何手动证明步骤。然而,这是要付出代价的:程序验证器是庞大而复杂的代码体,相信它们的输出需要相信的不仅仅是Coq的证明检查内核的正确实现。在本教程中,我将演示如何使用Bedrock Coq库来获得两者的最佳效果。我们的重点将放在那些具有最繁琐的细节和最有机会从自动化中获益的程序上:即那些用汇编语言编写的程序。我将展示如何为简单的命令式数据结构构建自动正确性证明,同时处理一级代码指针,并为定理生成Coq证明项,这些定理的语句除了机器代码的操作语义之外几乎不依赖于其他内容。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信