辅助工具Coq和Isabelle的区别:1、逻辑系统不同;2、语言不通;3、自动化程度不同;4、应用领域不同;5、表达能力不同。逻辑系统不同是指,Coq使用的是依赖类型理论,而Isabelle则使用的是经典高阶逻辑。
一、辅助工具Coq和Isabelle的区别
1、逻辑系统不同:Coq使用的是依赖类型理论,而Isabelle则使用的是经典高阶逻辑。
2、语言不同:Coq采用Gallina语言作为主要的编程语言,而Isabelle则使用ML语言。
3、自动化程度不同:Coq提供了更多的自动化工具,例如自动搜索证明策略、自动生成证明等,而Isabelle则更注重人工的干预和指导。
4、应用领域不同:Coq主要用于研究依赖类型理论及其应用,例如编写证明验证器、编写程序等,而Isabelle则主要用于研究计算机科学中的各种形式化语言(逻辑、程序设计语言等)。
5、表达能力不同:Coq有dependent types,语言的表达力很强,但细节补全做得不太好,使用者的负担比较重。Isabelle没有dependent types,语言的表达力有限,比如写不动代数,但inner prover做得好,可以减轻使用者负担。
二、Coq简介
Coq 是一款交互式证明辅助工具,采用 OCaml 开发。Coq 提供一套证明系统,可以编写证明,检查证明。Coq 也提供一套形式化语言,可编写数学算法、定义、定理。Coq 也可以用于程序的正确性证明(比如操作系统的安全性和编译器的正确性)。
Coq 是一个定理证明辅助工具,不仅可以用来开发安全应用这类需要绝对可信的程序,还可以被数学家用来开发证明。将 Coq 系统被用作一个逻辑框架,在此框架下为新的逻辑提供公理,并基于这些逻辑来开发证明。
- 作为一个编程语言的建模平台,Coq 成为了研究员对复杂的语言定义进行描述和论证的标准工具。例如,它被用来检查 JavaCard 平台的安全性,得到了最高等级的通用准则验证,它还被用在 x86 和 LLVM 指令集以及 C 等编程语言的形式化规范中。
- 作为一个形式化软件验证的开发环境,Coq 被用来构建:CompCert 一个完全验证的 C 优化编译器;CertiKos 一个完全验证的工具,用于证明涉及浮点数的精妙算法的正确性;Coq 也是 CertiCrypt 的基础,一个用于论证密码学算法安全性的环境。Coq 还被用来构建开源 RISC-V 处理器架构的验证实现。
- 作为一个依赖类型函数式编程的现实环境,Coq 激发了大量的创新。例如 Ynot 系统嵌入了“关系式霍尔推理”(一个 ‘霍尔逻辑’ 的扩展, 我们之后会看到它)。
- 作为一个高阶逻辑的证明助理,Coq 被用来验证数学中一些重要的结果。例如 Coq 可在证明中包含复杂计算的能力,使其开发出了第一个形式化验证的四色定理证明。此前数学家们对该证明颇有争议,因为它需要用程序对大量组态进行检验。在 Coq 的形式化中,所有东西都被检验过,自然也包括计算的正确性。近年来,Feit-Thompson 定理经过了更大的努力用 Coq 形式化了,它是对有限单群进行分类的十分重要的第一步。
二、Isabelle简介
Isabelle 是一个基于高阶逻辑(higher-order logic, HOL)的通用交互式定理证明器。它是一个 LCF(Logic for Computable Functions)风格的证明辅助工具,使用 Standard ML 语言实现,采用 BSD 许可证。它拥有一个极小化的逻辑核心;这意味着使用它的证明和形式化验证具有较强的的可信度。
Isabelle 被用于形式化数学和计算机科学中的许多定理,诸如哥德尔完备性定理、哥德尔关于选择公理一致性的证明、素数定理、各种安全协议的正确性、程序语言语义的特性。
应用实例:
- 2009年,澳大利亚 NICTA 的 L4 团队开发了史上首个功能正确性得以形式化验证的通用操作系统内核:seL4 微内核 The L4.verified Proofs 其证明使用 Isabelle/HOL 构建,包含了 200000 行证明脚本,用以验证 7500 行 C 代码。该形式化验证涵盖了代码、设计与实现,其主定理指出:该内核的 C 代码正确地实现了其形式化设计规范The seL4 Haskell Model Haskell。
- 程序语言 Lightweight Java 类型安全的形式化证明使用了 Isabelle。
延伸阅读
Coq相关图书和文章
- 《Software Foundations》 软件基础系列是对可靠软件的数学基础的广泛介绍。该系列的主要创新之处在于,每一个细节都是百分之百的形式化和机器检查:每一卷的整个文本,包括练习,实际上是Coq证明助手的 “证明脚本”。
- 《软件基础》系列广泛地介绍了可靠软件的数学基础,这是《Software Foundations》中文版。
- 《Certified Programming with Dependent Types》
- 《交互式定理证明与程序开发 Coq 归纳构造演算的艺术》
- Mathematical Components
- Modeling and Proving in Computational Type Theory
- Hydras & Co.
- 《Homotopy Type Theory: Univalent Foundations of Mathematics》 The Univalent Foundations Program
开发者生产力工具大全
从人工到自动化,从重复到创新,技术演进的历程中,都伴随着开发者工具类产品的发展,所以这里整理近几年口碑良好,使用广泛的22款程序员生产力工具。
1.研发项目管理与协作:PingCode
优点:让工作推进、进度/问题追踪、团队协作变得更简单,2021年研发项目管理榜单TOP1(36Kr)。
简介:覆盖研发全生命周期,广泛用于需求、版本、项目(敏捷/kanban/瀑布)、测试、缺陷、文档、效能等环节管理与协作。并且集成github、gitlab、jinkens等主流工具,支持私有部署、在线等多种部署使用方式。
【教程/官网】
2.任务管理/甘特图制作工具:Worktile
优点:功能成熟、性价比高、国内市场占有率最高的团队任务工具;
简介:在功能上Worktile 是一个工具集合,它具备OKR目标管理、项目管理、项目集管理、项目计划、项目风险、项目成本管理、企业网盘、审批、简报等能力。并且具备强大的自定义能力,能够配置出符合各种项目团队的流程、表单、字段、数据报表,以及具备丰富的模板市场。
【官网/教程】
3.分布式版本控制系统:Git
优点:分布式开发、速度快、灵活
简介:Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
【教程/官网】
4.数据库管理工具:Navicat
优点:高效、安全,最好用的数据库管理工具。
简介:“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库,它与阿里云、腾讯云、华为云、Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud 和 MongoDB Atlas等云数据库兼容。
【官网/教程】
其余工具可通过《神级程序员都用什么工具?程序员生产力工具大全 》查看,以上均整理自该文章。
文章标题:辅助工具Coq和Isabelle的区别在哪儿,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/47831