深入理解Actor服务:语义、推理与证明
1. Actor服务的基本概念
Actor服务具有响应模式R,其含义是对于未来所有的触发消息,响应模式所描述的情况中至少有一种最终会发生,并且其where子句在此时会成立。空响应表示可以不发送消息,这可用于处理Actor行为中的特殊情况,或弱化Actor服务的含义。在where子句中,“old”堆指的是接收到触发消息时的堆,两状态where子句可将该状态与发送响应消息时的状态相关联。
例如,以下本地服务表达了req消息处理程序的相关行为:
M.req(U, N, P) ; M.next.sols( , P) where immut(M.user) ∗M.user = U (QM2)
where子句允许Actor服务表达超越消息前置条件所保证的功能属性。但只有在持有适当权限时,where子句才能描述堆位置的属性,这些权限可以是where子句本身包含的不可变权限,也可以是相应触发消息和响应消息的前置条件所保证的权限。
2. Actor服务的组合
我们定义了三状态组合的概念,通过谓词 (Λ, Σ, σ).futureCombines(A1, A2, A3) 来表示A3是A1和A2相对于当前状态的三状态组合。我们还将这一概念推广到单个两状态断言和两个响应模式的谓词 (Λ, Σ, σ).futureCombines(A, R, R′) 。
基于此,我们可以解释组合Actor服务的一般规则。与简化版本相比,完整规则有了一些推
超级会员免费看
订阅专栏 解锁全文
514

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



