超限步长索引:解耦具体步骤与逻辑步骤
1. 引言
步长索引已被证明是一种强大的技术,可用于为具有高级类型系统的语言定义逻辑关系,以及为表达性强的程序逻辑构建模型。在这两种情况下,模型都使用自然数进行分层,以解决那些没有简单解的递归方程。由于这种分层,当前的模型要求递归方程的每次展开(即每个逻辑步骤)都必须与一个具体的归约步骤相匹配。然而,这种紧密的耦合对于那些逻辑步骤数量无法静态界定的应用来说是有问题的。
本文将证明逻辑步骤和具体步骤之间的这种紧密耦合是人为造成的,并展示如何使用超限步长索引来放松这种耦合。我们将提出一种逻辑关系,它允许每个具体步骤对应任意但有限数量的逻辑步骤。
2. 问题背景
步长索引在定义高级类型系统和表达性高阶程序逻辑的模型方面表现出色。为了支持抽象,这些类型系统和程序逻辑通常包含某种非直谓不变量的概念。例如,引用类型可以看作是关于给定位置存储值类型的不变量;对于具有通用引用的语言来说,这是一个非直谓不变量。
对非直谓不变量进行建模是很困难的,采用简单的方法自然会导致一个没有解的循环定义。以具有通用引用的语言的建模为例,一个自然的想法是相对于一个世界(堆类型)来解释类型,这个世界为所有当前分配的位置分配语义类型。引用类型 τ ref 可以解释为当前世界中映射到 ⟦τ⟧ 的位置集合。但不幸的是,这种想法会导致类型语义域的循环定义,在集合论中没有解:
Type ∼= World mon → P(Val)
World = Loc fin ⇀ Type
超级会员免费看
订阅专栏 解锁全文
840

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



