# DeepSpec #
美国国家基金会在 21 世纪科学与工程的网络基础设施框架(Cyberinfrastructure Framework for 21st Century Science and Engineering, CIF21)[1] 中,明确了软件的关键地位,并资助了 DeepSpec (the science of deep specification) [2] 项目:
- 旨在通过提高形式化方法或数学相关技术,改进程序的开发和验证方法,从而消除可能导致安全漏洞和计算错误的 bugs。DeepSpec 的研究涉及了剖析现代硬件和软件的复杂性,从而找出可以影响各种计算机组件协同工作的因素。然后开发“深度规范” —— 基于形式逻辑对软件的行为进行精确的描述。这类深度规范将帮助工程师构建 bug-free 的程序,同时能够验证他们的程序是否完全符合预期。
- 在他们的大学开发新课程和课程材料,以培训下一代软件开发人员使用新的、改进的方法。越来越多的计算机科学教育工作者认为,数学相关的教学是计算机科学中一个很关键的部分,也是需要与编程的培训区分开来的一个部分。严谨的数学需要严谨的证明。当前很多学校的教学模式是,依赖助教收集学生的问题,并在每周固定的 office hours 进行反馈。而当涉及到需要严谨证明的教学工作时,这不是一个可以大规模复用的教学方式。DeepSpec 结合了交互式定理证明工具来解决这个问题,对 Benjamin 等人所著的交互式教科书 Software Foundations [3] 提供了支持。
Software Foundations Project on DeepSpec: https://deepspec.org/entry/Project/Software.20Foundations
# Software Foundations #
Software Foundations 介绍了逻辑基础、定理证明和编程语言理论(PLT)等相关的知识。自 2008 年以来,该教科书已在全球范围内的多所大学(以及独立学习)中被广泛使用。2017 年,DeepSpec 开始组织对 Software Foundations 的重写和扩展,并将其应用在很多高校的研究生课程中:
- Benjamin 在宾夕法尼亚大学有开设课程 CIS500,对应考试大纲:https://www.seas.upenn.edu/~cis500/current/index.html
- DeepSpec 也有开设夏季班的系列课程,可以访问下面地址获取 2020 年的课程视频:https://deepspec.org/event/dsss20/
Software Foundations 最主要的新颖之处在于,书中的每一处细节都百分之百地形式化且通过了机器验证。每卷书中的所有文本,包括练习,根本上都是一份 Coq 证明助理的「证明脚本」。
Software Foundations 仍然在开发中,当前已有 6 卷:
- 卷一:逻辑基础 / Logical Foundations
- 卷二:程序语言基础 / Programming Language Foundations
- 卷三:函数算法验证 / Verified Functional Algorithms
- 卷四:QuickChick:软件特性测试 / QuickChick: Property-Based Testing in Coq
- 卷五:可验证的 C / Verifiable C
- 卷六:分离逻辑基础 / Separation Logic Foundations
本系列书籍的目标受众包括高年级本科生、研究生、博士以及研究者在内的广大读者。书中并未假定读者有逻辑学或编程语言的背景,不过熟悉一些数学对于学习来说会很有帮助。
为进一步向中文社区推广 Coq 证明助理,Coq-zh 汉化组正在翻译此书,中文版译为《软件基础》,在线阅读地址: