移动进程演算的即时多态类型系统与 JavaScript 类型系统探索
移动进程演算的即时多态类型系统
在移动进程演算领域,有一个名为 Poly✶ 的类型系统,它在很多方面有着独特的表现。
首先,关于形状谓词和语法封闭性。给定初始条件 (X_0 = X),(U_0 = {a \to p, b \to q, P \to Y, Q \to W}),对于一个图要实现语法封闭,(X) 和 (U_0) 必须与规则的右侧相匹配,即 (U_0 \vDash_R a[P|b[Q]] : \langle G_0 |X\rangle)。但实际情况并非如此,在推导过程中会发现需要判断 (U_0 \vDash_R Q : \langle G_0 |V\rangle),而这只有在 ((U_0(Q) = W - \varnothing \to V) \in G_0) 时才成立,然而当前并非如此。所以,对于 (R_{eat}) 来说,该图不是语法封闭的,并且在语义上也不封闭。比如,(P_1 = t[p[eat q]|q[s[0]]]) 属于 ([[\langle G_0 |R\rangle]]),但 (P_2 = t[p[q[s[0]]]]) 不属于,尽管 (R_{eat} \vdash P_1 \to P_2)。若添加缺失的边得到 (G_1 = G_0 \cup {W - \varnothing \to V}),能得到 (U_0 \vDash_R a[P|b[Q]] : \langle G_1 |X\rangle),但 (G_1) 不是流封闭的,还需要添加更多边。最终得到 (G_2):
[
G_2 =
\begin{cases}
R \
t[] \to X \
p[]