ModuRes:用于并发高阶命令式编程语言模块化推理的Coq库
在编程语言的研究中,为并发高阶命令式编程语言的类型系统或逻辑构建语义模型是一项具有挑战性的任务。其中一个关键挑战在于,这些语义模型常常涉及求解某些递归域方程,而在实际操作中,这对形式化工作构成了障碍。今天我们将介绍ModuRes Coq库,它为解决这类方程提供了便捷的方法,并且可以用于构建编程语言和程序逻辑的模型。
1. 引言
近年来,在高阶、有副作用的编程语言推理技术方面取得了显著进展。然而,许多由此产生的模型和逻辑都回避了形式验证。主要原因似乎是这些理论的复杂性不断增加,以及对复杂数学结构的使用日益增多,这对潜在的形式化工作构成了巨大的障碍。
其中一个难以建模的关键特征是各种形式的循环性。其典型形式源于高阶存储,在那里我们可以存储函数、引用以及一阶数据,但循环性也可能以其他多种方式出现。例如,在并发程序逻辑中常见的共享不变量,只要访问操作能保持不变量,任何计算线程都可以访问它。由于特定不变量所描述的状态可能会引用其他不变量,从而产生循环性。这种循环性与尝试解释高阶引用类型时出现的循环性在本质上非常相似:存储的语义描述必须包含每个位置类型的解释,但类型本身的解释又依赖于存储的描述。
为了说明这个问题,我们来看一个简单类型的λ - 演算扩展了ML风格的高阶引用的例子。尝试以如下(有缺陷)的方式给出其类型的语义解释:
type = world → P(value)
world = loc ⇀fin type.
这里的想法是,世界(world)将每个位置与其语义类型关联起来,而
超级会员免费看
订阅专栏 解锁全文
408

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



