编程验证与统一理论在 Isabelle/HOL 中的应用
1 编程验证基础
在编程过程中,代码验证是确保程序正确性的重要环节。对于程序员而言,有一些命令具备理想的特性,他们可以为每个待验证的代码片段选择合适的命令。
1.1 验证代码编写的选择
关于是否要求程序员编写验证代码,语言支持两种选择:
- 直接编写 :若程序员直接使用该语言编写程序,执行命令和验证命令的区分则明确由程序员负责。
- 使用组合命令 :语言中可定义结合执行和验证的新命令。若程序员仅使用此类命令,验证将成为编译器预定义的默认过程。
1.2 逻辑设计的拓展与简化
类型和表达式等的逻辑设计具有一定的扩展性。一方面,可以通过添加更具表达力的逻辑运算符(如量词用于断言)来扩展;另一方面,也能将其简化为具有更好可判定性和更低决策复杂度的子逻辑片段。
1.3 现有验证方法的通用性
由于任何现有的验证器都是程序,且任何验证程序都可从扩展的命令式语言的源程序中提取,因此相关技术具有足够的通用性,能够推导出所有现有的验证方法和算法。未来可能的扩展是添加输入和输出命令,使验证过程具有交互性,通过人机界面添加缺失的验证信息。
1.4 验证编译器的验证方案
有人提出“验证编译器本身不必被验证,尽管部分验证是可取的”。合理的方案是使用验证器自动检查程序,但对验证器本身的正确性证明采用手动推理演算。
超级会员免费看
订阅专栏 解锁全文
42

被折叠的 条评论
为什么被折叠?



