会话余代数:会话类型的余代数视角
1. 会话余代数基础
在实际应用中,无限制通道通常只能执行一种通信操作。但会话余代数能够定义任意复杂的无限制类型,例如 μX. un ?int. un ?bool. X 属于类型范畴,不过在同一无限制通道上同时发送 int 和 bool 类型的数据会引发问题。
为了更好地理解会话余代数中的状态可并行性,我们引入以下定义:
- 可并行子集 :给定余代数 (X, c),若子集 Y ⊆ X 满足对于 Y 中的任意 x 和 y,有 x ∼ y、σ(x) = un 或 σ(y) = un 之一成立,则称 Y 是可并行的,记为 par(Y)。
- 可并行状态 :设 ⟨x⟩c 表示由 x ∈ X 在 c 中生成的子余代数,⟨x⟩≫c 是 ⟨x⟩c 中包含 x 且在延续转换下封闭的最小子集。若 ⟨x⟩≫c 是可并行的,则称状态 x 是可并行的,记为 par(x)。
2. 模拟与子类型化
直观上,如果一个余代数模拟另一个余代数,意味着后者的行为“包含于”前者。子类型化最初由 Gay 和 Hole 定义在会话类型上,是类型可替换性的一种概念。我们定义的模拟概念与子类型化一致,就像双模拟提供了类型等价的概念一样。
在输入情况下,会话类型在子类型关系中的顺序与数据类型相同,这称为协变;在输出情况下,顺序相反,称为逆变。对于带标签的选择,外部选择的子类型可以是选择的子集,而内部选择的子类型可以添加更多选项。对于所有类型,通过转换到达的状态是协变的,即如果 T 是 U 的子类型,T 的延续必须是 U 的(相同标签的)延续的子类型。 </
超级会员免费看
订阅专栏 解锁全文
2590

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



