17、在 Coq 中构建卡恩网络的构造性指称语义

在 Coq 中构建卡恩网络的构造性指称语义

1 引言

编程语言的语义学和交互式环境用于开发证明和程序是计算机科学的两个重要方面。吉尔斯·卡恩在其论文《一个简单的并行编程语言的语义》中,提出了将(确定性的)并行程序(现在称为卡恩网络)解释为基于完全偏序集(cpo)理论的流转换器。这种语言对同步程序的限制是数据流 Lustre 语言的基础,该语言用于开发关键的嵌入式系统。卡恩网络因其优雅和通用性,也成为将数据流同步范式扩展到高阶构造或更宽容的同步模型的灵感来源。

本文将在 Coq 证明助手中形式化这篇开创性论文,通过开发一个通用的 cpo 库来定义卡恩网络及其语义。我们将展示如何通过明确的函数定义 cpo,计算单调序列元素的最小上界(lub),并通过具体的例子来说明这个库的应用。

2 cpo 库的开发

2.1 完全偏序集(cpo)的定义

在 Coq 中,我们开发了一个通用的 cpo 库,用于定义可能无限流类型的 cpo 结构。cpo 是通过一个明确的函数来定义的,该函数计算递增元素序列的最小上界(lub)。这与标准 Coq 库不同,后者只需求出 lubs(对于任意有向集)的存在性,而不提供明确计算不动点的方法。

2.1.1 cpo 的定义

以下是 cpo 的定义:

Inductive cpo (A : Type) : Type :=
  | CPO_bot : cpo A
  | CPO_sup : (nat -> A) -> cpo A.
2.1.2 lub 的定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值