Coq中OCaml的形式语义


Answers:


12

您是否看到ArthurCharguéraud的博士学位论文“机械化程序验证的特征公式”

他没有将类型系统和小步语义构建为归纳关系,而是提供了一种将Caml程序转换为特征公式的技术。这基本上是对谓词转换器语义的概括,以支持Ocaml的很大子集-特别是包括不安全的强制转换,例如Obj.magic。引用他的论文:

我专注于OCaml编程语言的子集,这是一种顺序的,按值调用的高级编程语言。CFML的当前实现支持核心λ演算,包括高阶函数,递归,互递和多态递归。它支持元组,数据构造函数,模式匹配,引用单元格,记录和数组。我提供了一个额外的Caml库,该库添加了对空指针和强大更新的支持。

如果您想证明某个特定的Caml程序正确,那么这是一种非常吸引人的方法(但是,如果您对它的元理论感兴趣,那么就更少了)。


因此,如果我理解正确,则Ocaml语义规范已嵌入系统中。是否有可能将系统(某些关键功能)的特性公式解释为这样的规范?另外,我假设系统是用OCaml编写的。是否可以在系统本身中指定并证明其正确性?
安德里亚·阿斯佩蒂

对于给定的OCaml程序,可以将其特征公式认为是指称语义,这是“最不通用”的规范,可用于证明该程序的任何所需属性。如果您谈到CFML本身的“正确性”,那么问题是:关于哪种替代形式语义?
加什

奇怪的是,该程序应该可以对软件进行认证并且其行为无法指定:)
Andrea Asperti

@AndreaAsperti“嵌入系统”是什么意思?特征公式(CF)背后的思想非常简单:将程序映射到逻辑公式(通常是前置条件和后置条件),这样公式可以精确地描述程序的语义。换句话说,如果两个程序在上下文上无法区分,则它们满足相同的CF。从程序到CF的映射是通过对程序结构的归纳完成的,并且可以针对任何足够表达的逻辑。答:Charguéraud目标的Coq逻辑,但这是一个偶然的选择。
Martin Berger

1
@MartinBerger:Guéneau等人的论文仅证明了其合理性,因为派生的前/后职位没有表征其派生的程序。它们的CF源自CakeML的非类型化语义,但是类型化语言具有不同的观察等效性。(对于实际验证,这并不是非常重要,而是更容易。)
Neel Krishnaswami

8

你可能有兴趣在雅克常绿矮灌木丛的ML与结构多态性和回归A型认证的实施,其中规定静态和动态语义的合理性类型推断的性质与(递归和)结构多态性的ML语言,因此正式的一个OCaml的更高级的角(多态变体和对象类型)。

就是说,这项工作的目的不是验证现有OCaml程序的功能集,而是旨在验证类型系统中更高级的部分的健全性。我认为,就试图证明现有OCaml程序的正确性而言,CFML是一个更好的选择。

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.