Psi‐演算工作台:通用进程分析工具

Psi‐演算工作台:一种用于应用进程演算的通用工具

¨ ¯约翰内斯·博格斯特伦,拉穆纳斯·古特科瓦斯,伊奥安娜·罗德赫¨和比约恩·维克托,乌普萨拉大学

ψ‐演算是一个参数化框架,用于扩展π‐演算以支持任意数据和逻辑。该框架的所有实例均继承了机器检查的元理论证明,例如组合性和双模拟同余性。我们提出了一种针对Psi‐演算实例的通用分析工具,支持对单播和广播通信进行符号执行以及(双)模拟检验。该工具还提供了一个用于实现新Psi‐演算实例的库。我们给出了来自传统通信协议和无线传感器网络的示例。我们还描述了该工具的理论基础,包括一种改进的符号操作语义,增加了对作用域广播通信的支持。

类别和主题描述符 :C.2.2[计算机通信网络]:网络协议—协议验证;D.2.2[软件工程]:设计工具和技术;I.1.4[符号和代数操作]:应用
通用术语 :设计、理论、验证
关键词和短语 :无线传感器网络,进程演算,符号语义

ACM协会参考格式:
约翰内斯·博格斯特龙、拉穆纳斯·古特科瓦斯、伊奥安娜·罗德赫和比约恩·维克托。2015年。Psi‐演算工作台:一种用于应用进程演算的通用工具。ACM嵌入式计算系统汇刊,第14卷,第1期,文章9(2015年1月),25页。
DOI: http://dx.doi.org/10.1145/2682570

1. 引言

并发系统的开发得益于使用精确且形式化的系统模型。针对并发系统存在许多不同的形式化方法,这些方法通常针对特定应用领域有专门的版本。对于每种形式化方法,都需要相应的工具支持,以便构建和分析非平凡系统的模型。本文描述了针对具有移动性的进程演算的通用语义框架所提供的工具支持。因此,我们并非为每一种单独的进程演算分别开发工具,而是为一大类进程演算开发一个统一的通用工具。

ψ‐演算 [Bengtson 等人 2011] 是一种基于 π‐演算 [Milner 等人 1992a] 的参数化语义框架,能够为每个应用程序定制数据语言和逻辑。该框架提供了多种特性,例如资源的词法作用域局部名称、作为数据的通信信道、单播和广播通信 [Borgstr¨om 等人 2011],以及一阶和高阶通信 [Parrow 等人 2013]。

本工作得到了ProFun项目的支持。作者地址:乌普萨拉大学,信息技术系,邮政信箱337,75105乌普萨拉,瑞典;电子邮件:{johannes.borgstrom, ramunas.gutkovas, bjorn.victor}@it.uu.se, ioana.rodhe@foi.se。允许出于个人或课堂教学目的,在不收取费用的情况下制作本作品全部或部分内容的数字版或纸质副本,但前提是不得出于盈利或商业利益而制作或分发这些副本,且每份副本必须在显示的首页或初始屏幕上来注明本声明以及完整的引用信息。对于本作品中由非ACM协会拥有的组成部分,其版权必须予以尊重。允许注明出处的摘要使用。如需以其他方式复制、重新发布、张贴到服务器上、再分发到列表中,或在其他作品中使用本作品的任何组成部分,则需要事先获得特定许可和/或支付费用。许可请求可发送至:ACM公司出版部,2 Penn广场701室,纽约,NY 10121‐0701,美国,传真 +1(212) 869‐0481,或 permissions@acm.org。c © 2015 ACM 1539‐9087/2015/01‐ART9 $15.00 DOI: http://dx.doi.org/10.1145/2682570

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月。

9:2 J. Borgstr¨om 等

许多不同的π‐演算扩展,包括spi‐演算[Abadi和Gordon 1997]、融合演算[Wischik和Gardner 2005]、并发约束π‐演算[Buscemi和Montanari 2007],以及多维同步π‐演算[Carbone和Maffeis 2003],都可以直接表示为ψ‐演算框架的实例。一个主要优势是,所有元理论结果(包括bisimilarity的代数定律和同余性质)都适用于该框架的任何有效实例。此外,其中大多数结果已使用名义Isabelle定理证明器[Urban和Tasson 2005]得到了严格证明。ψ‐演算的这些特性为使用者节省了大量工作——ψ‐演算是一个可重用的框架。

本文介绍了Psi‐演算工作台(PWB),这是一个用于实现ψ‐演算实例以及分析在相应实例中进程的通用工具。尽管已有其他一些针对特定进程演算和特定应用领域的专用工具,我们的工具却是通用且可重用的。与以往工作相比,它的适用范围更广,并且允许以相对较低的成本对新的进程演算进行实验。与ψ‐演算类似,我们的工具也是参数化的:它为任意Psi‐演算实例中的进程提供双模拟等价性检查和符号模拟(或执行)功能,以及一个用于实现新ψ‐演算实例的基础库。因此,PWB有两类用户:一类是在框架的现有实例中分析系统的用户,另一类是实例实现者。

我们通过三个步骤来说明该工具的这两种用途:在第2节中,我们半形式化地介绍ψ‐演算的框架,关联一个对应于π‐演算的实例,并展示智能体的符号模拟。在第3节描述了PWB的设计以及如何实现一个实例之后,我们在第4节中通过建模传统的交替位协议来实现可靠通信,从而展示如何添加数据和计算。在第5节中,我们为无线传感器网络建模一种数据聚合协议,其中包含了专门的数据结构和逻辑,以及单播和广播通信。第6节则通过动态拓扑扩展了前面的例子。

在第7节中,我们描述了在PWB中实现的符号语义。第7.1节的符号操作语义简化了先前ψ‐演算的符号语义[Johansson et al. 2012],并增加了用于无线(同步且不可靠)广播的规则[Borgstr¨om et al. 2011]。据我们所知,这是首个用于词法作用域广播通信的符号语义。

在第8节中,我们讨论了相关工作。本文的简略版本已作为Borgstr¨om et al.[2013]发表。

2. 引入ψ‐演算

在本节中,我们半形式化地介绍ψ‐演算的参数化语义框架,并将一些精确定义和操作语义推迟到第7节。有关ψ‐演算的更详细论述,包括其需求动机和其他实例示例,请参见 Bengtson et al.[2011], Borgstr¨om et al. [2011],和Johansson et al. [2010, 2012]。我们在第4、5和6节中展示了更复杂的示例。

Psi‐演算实例由三种数据类型指定:(数据)项T,用M,N表示;条件C,用 ϕ表示; 以及断言A,用 表示。这些项、条件和断言可以是任意集合,其中元素可能包含名字 (来自名字集合 N),并允许名字置换(即所谓的名义集合[Pitts 2003])。特别地,每个元素X都有一个有限的自由名集合 n(X) ⊆N,我们用a#X表示a ∈ n(X)。

Psi‐演算工作台 9:3

项既可用作通信信道,也可用于通信中发送和接收的数据。项可以是结构化的,因此允许使用列表和集合、数字、布尔值等标准结构,以及更复杂的结构。断言用于对项及其之间的关系建模“事实”,例如通过为变量赋值或约束其取值范围。最基本的断言是单元,记为1,断言通过 ⊗操作符进行组合。条件用于对项执行测试。其结果取决于当前的断言环境,这通过一个蕴含关系( 蕴含 ϕ,记为 ϕ)来确定,该关系也是psi实例规范的一部分。

在Pi实例中,对应于多通道pi‐演算,项仅仅是名字a, b, c…,而条件则是关于名字的相等性测试。(名字相等性用于匹配结构[a= b]P,当且仅当a= b成立时,其行为与 P相同。)在π‐演算中没有断言,但ψ‐演算框架至少需要平凡单位断言。后续示例将展示如何利用断言来建模高级特性。

给定psi‐演算的参数T, C,A,智能体(用P, Q…表示)具有以下形式:
˜MN.P输出前缀
M(˜x).P输入前缀
˜M!N.P广播输出前缀
M?(˜x).P广播输入前缀
caseϕ1: P1[] ···[] ϕn:Pn 情况
(νa)P限制
P | Q并行
!P复制
( ||)断言
˜A〈M〉 调用

我们用M表示元组M1,… Mn。输出前缀和输入前缀表示多通道(单播)输出和输入,而广播前缀表示(同步的)广播输出和输入,这种传输是不可靠的(如在无线系统中),意味着传输可能不会被接收。case结构可以表现为任意满足对应条件ϕi为真的Pi;其他情况将被丢弃。限制将a在P中绑定,输入前缀在后缀中绑定 ˜x;我们识别α等价的智能体。调用形式会调用由形式A(˜y)⇐P定义的进程A;其行为为˜P{M/ ˜y}。

在Pi实例中,输出前缀和输入前缀是通常的a ˜x.P和a(˜x).P;匹配结构[a= b]P对应于情况true:P+ Q。如果我们有一个始终为真的条件真,我们可以将非确定性选择(传统上写作P+ Q)建模为情况真:P[]真:Q。

ψ‐演算的语义由标记迁移关系 P →α P′定义,表示在环境 中,代理P 可以执行一个动作 α 迁移为P′。在π‐演算实例中,环境 始终是平凡的1,但一般情况下,它表示环境的断言,包括并行进程。

语义仅对良构进程定义。在进程中,一个子项的出现被称为受保护的,如果它是前缀形式的一个真子项。一个进程是良构的,当在M(˜x).P和M?(˜x).P中, ˜x是一个无重复序列;在情况ϕ1: P1[] ···[] ϕn: Pn中,进程Pi没有非受保护断言;并且在复制!P中,进程P没有非受保护断言或广播输入前缀。对于进程定义,适用与复制类似的条件。

9:4 J. Borgstr¨om 等

动作包括输入M(˜x),表示通过由M表示的˜ ˜通道接收 绑定到 ˜x的数据,以及输出M(ν ˜x)N,表示通过M发送N并额外打开名字 ˜x的作用域,相应的广播动作˜M?(˜x)和M!(ν ˜x)N,以及静默动作 τ,它是输入与输出之间通信的结果。当 ˜x为空时,我们通常省略(ν˜x)和(˜x)。

用于通信的连通性谓词也由实例化定义。这些条件包括信道等价谓词M ↔. N,该谓词用于确定哪些项表示相同的单播信道,以及用于在广播通道上发送和接收的广播连接性谓词M≺.K和K. M:只有当在当前断言环境中存在M ≺. K时,才能使用项M在通道 K上发送广播消息,广播接收的情况类似(见第5节中的示例)。

例如,Pi代理
bc.Q \| b(a).case a= b: a(z).R
具有标签为bc和b(x)的迁移,适用于所有名字x和 τ。输入前缀可以生成无限多个输入动作 (此处每个x对应一个)。为了避免这种无限分支,我们在工具中使用符号语义(见第7节.1),其中实际值由变量进行抽象。相反,每条迁移都有一个迁移约束,该约束必须满足,相应的非符号转换才可能发生。形式上,这些迁移写作P α →− C P′,其中C是一个迁移约束。

前一个代理的输入迁移可以通过符号语义中的单个迁移来表示。为简便起见,我们展示输入前缀子代理的前两个迁移:
P= b(a). case a= b: a(z).R
w(a) −−−−−→ { |1b↔.w|} case a= b: a(z).R
v(z) −−−−−−−−−−−→ { |1a↔.v|}∧{ |1a=b|} R,
其中 w和 v是新的(形式语义参见第7节)。第一次迁移的约束直观上表示通道 w等价于 b(不一定总是存在这样的 w!);对于第二次迁移,除了case结构的条件外,还出现了类似的约束。

我们可以使用PWB来模拟P的迁移。该工具使用智能体的ASCII表示,其中非数字本字母条款和条件必须用双引号括起来, ν写作new,输出对象写在角括号之间,输出中的上划线通过前面加单引号表示。例如,bf(a,c).(νx)Q写作’b< ”f(a,c)”>.(newx)Q。

代理P的第一个迁移如下:

示意图0

打印约束时,平凡的 1 会被省略。此处的“gna”表示一个新鲜名称,对应于 w:符号输入动作的主语导。数情况”a= b”:a(x).R没有非符号迁移,因为a与b不是相同的名称,但符号语义在约束条件下a=b存在迁移。

约束{ |”a= b”| } 可通过将a替换为b来求解,如Solution行所述。该解由PWB中的约束求解器模块生成,对于π‐演算实例,该模块执行名称合一(参见第2节),类似于早期用于π‐相关演算的工具(例如MWB)。在将该解应用于代理后,会得到相应的非符号迁移。

除了符号执行外,PWB还包含一个符号检查器,用于计算一个代理与另一个代理(双)相似所需的最小充分约束,以及一个见证关系。在约束上应用一个解(如果存在的话)后,这两个智能体将以非符号方式相关联。

3. 实现

Psi‐演算工作台(PWB)使用标准ML编程语言实现,并在Poly/ML编译器[PolyML 2013]版本5.4下进行编译。PWB是开源的,可从Gutkovas和Borgstr¨om [2013]在线免费获取。

PWB 是ψ‐演算的一个模块化实现,既可作为建模工具使用,也可作为构建特定ψ‐演算实例工具的库。作为建模工具使用时,用户通过命令解释器进行交互,该解释器提供用于进程定义(手动或从文件加载)、操作进程环境、单步执行进程的符号迁移(强迁移和弱迁移)以及符号双模拟检查(强和弱)的命令。第4节和第5节给出了此类用法的示例。

接下来,我们将描述PWB 的实现以及创建ψ‐演算实例时需要提供的模块。

3.1. Psi‐演算实例化

PWB为实例实现者实现了一些辅助库。我们在图1中展示了PWB的架构。在此图中,组件之间的依赖关系从右向左:每个组件只能依赖于位于其上方或左侧的组件。所有组件都基于一个支持性库构建,该库提供了ψ‐演算的基本数据结构和核心算法。实例实现者需提供实例的参数、约束求解器以及解析和格式化输出代码的定义。这些由用户实现的组件将被工具实现的各种算法以及命令解释器调用。并非所有组件都需要实现:例如,双模拟约束求解器仅在进行双相似性检查时才需要。

一个实例的参数包括类型名称、项、条件和断言,以及三类函数:定义逻辑、代换和连通性的函数。作为类型的示例,以下是π‐演算的声明

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

9:6 J. Borgstr¨om 等人

图1. Psi‐演算工作台架构。

第2节中提到的实例。所有呈现的SML代码均由实例实现者编写。

我们需要三个函数来定义该实例的逻辑:蕴含(entails,或 ),用于描述在给定断言下哪些条件为真;组合算子(compose,或 ⊗),用于组合两个断言;以及单元断言(unit,或1)。我们要求断言组合构成一个交换幺半群(模蕴含),并且所有函数都是等变的,即它们对所有名字一视同仁。双模拟算法和弱符号语义还要求弱化成立,即对所有′, ϕ蕴含 ⊗′ ϕ。

我们还需要等变的代换函数,用于在项、条件和断言中将项代换为名字。

最后,我们有三个等变的函数用于描述演算的连通性:chaneq(用于单播连通性)、 brTransmit和brReceive(用于广播)。通常,这些函数是简单地注入到条件类型中 (例如,funchaneq(M,N)= ChanEq(M,N),其中ChanEq是条件的一个数据构造器),而连通性的定义则留给蕴含关系或约束求解器来完成。

信道等价chaneq需要满足交换的和传递的(对每个)。brTransmit是广播输出连通性
.
含M . ≺ K 或 蕴含K . M,则我们要求出现在K 中的所有名字也必须出现在M中。

Psi‐演算工作台 9:7

所有前述函数还需满足与代换可交换,即f(Xσ)=f(X)σ。

用户还需要为所调用的每种数据类型实现解析器 by t进程项的解析器。

3.2. 符号执行

PWB通过sstep命令提供进程的符号执行。这是探索进程属性或模型本身的有用工具。在此过程中,进程输入的值由变量表示,并在迁移推导过程中收集约束。这些约束表明了迁移在何种条件下可能发生,尽可能延迟变量的实例化。强符号语义和弱符号语义(忽略 τ‐ 迁移)均可用(见第7节)。

在ψ‐演算中,包含断言的并行上下文(例如( | x = 3|))可以启用额外迁移。因此,约束的一个解(σ,)由一个代换 σ(表示之前的输入)和一个断言 (表示并行上下文)组成。直观上,每个解(σ,)都能满足真,假无解,同时是C和C′的每个解都是C ∧C′的解,而(ν ˜a){ |′ ϕ|}的解是形如(σ,)的对,其中 ⊗′σ ϕσ且 ˜a中的名字不出现在, σ中。

实例实现者可以为迁移约束提供一个约束求解器。该求解器应返回描述约束不可满足性的字符串,或返回由代换和断言组成的解。由于迁移约束仅仅是原子约束的合取,通常一个简单的基于合一的求解器就已足够。求解器的类型如下:

例如,第2节中π‐演算实例的求解器执行合一,该操作通过迁移关系next实现。迁移系统中的节点要么是一个对(C σ),要么是失败状态 ∅:
(ν a˜){ |1 T|} ∧ C, σ → C, σ
(ν a˜){ |1 a= a|} ∧ C, σ → C, σ
(ν a˜){ |1 a= b|} ∧ C, σ → ∅ if a = b∧(a ∈ a˜ ∨ b ∈ a˜)
(ν a˜){ |1 a= b|} ∧ C, σ → C[b:= a], σ[b:= a] otherwise.

3.3. 符号(双)模拟

PWB还可用于检查进程上的模拟关系。例如,命令P˜ Q试图构造一个关联智能体P和Q的双模拟关系。为此,我们实现了一种基于Johansson等人[2012]工作的符号双模拟算法 (包含一些修正和优化)。该算法接收两个进程,并生成扩展约束语言中的一个约束;这两个进程在该约束的所有解下都是双模拟的。通过对该算法进行简单变体,可用于模拟验证。

互模拟约束语言还包括合取、析取和蕴含,以及项等价 { | = |}、新鲜性{ |a#X|}(直观含义为“a在X中非自由”)和静态蕴含。为了简化为此更丰富的语言开发约束求解器的过程,PWB包含一个具有适当辅助函数的SMT求解器库。除非断言语言是平凡的(仅含单元断言),否则将迁移约束求解器扩展为互模拟约束求解器所需的大部分额外工作在于正确处理静态蕴含约束。

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月。

4. 交替位协议

在本节中,我们描述了经典交替位协议在PWB中的建模。这展示了使用PWB为特定问题或问题领域定义定制化进程演算的方法。我们还给出了PWB中符号化弱转换生成的一个示例。

4.1. 交替位协议简介

交替位协议(ABP)[Bartlett 等人 1969]是一种通过有损信道实现可靠数据传输的简单网络协议。此处的“可靠”是指所有数据片段在接收方恰好被接收一次,并且顺序正确。考虑一个发送方Sender、一个接收方Receiver,以及它们之间的两个通信信道:DataChan,用于发送数据片段;ResponseChan,用于发送确认信息。我们在图2中展示了这种情况:箭头表示数据传输的方向。ABP假设具备可靠的错误检测能力,但不具备错误纠正能力。

为了确保接收方能够在存在数据丢失的通信信道中接收到每一个数据片段,发送方会重复发送同一片段,直到收到相应的确认信息,此时发送方才开始传输下一个片段。由于接收方不应接受同一个片段两次,因此需要一种协议来区分数据包。在ABP中,每个数据包都附带一个一位标志。第一个发送的数据包附带标志位0;接收方对该数据包的确认信息也包含标志位0。当发送方收到带有标志位0的确认信息时,便知道接收方已正确接收该片段,随后发送方将开始发送下一个带有标志位1的数据包,依此类推。因此,具有相同标志位的发送或接收的数据包序列及其相应的确认信息均指向同一数据片段。

4.2. 一个用于ABP的Psi‐演算实例

为了定义一个可表达ABP的Psi‐演算实例,我们从数据项开始。由于协议的行为不依赖于所传输的数据,因此我们只需将每个片段表示为一个名称。然而,协议本身需要一些数据值和结构。

在项的集合中,我们包含了通道DataChan和ResponseChan,以及值ERR,用于表示已检测到错误。我们还有0和1比特,以及对它们的取反操作 ∼·,并具有预期的等式 ∼0= 1和 ∼1= 0。

我们对ABP的描述是无类型的,因此这些项构造器会产生不打算作为模型一部分的项,例如 ∼ERR。这类冗余项会产生无效值 ⊥。综上所述,我们将数据项T 定义如下:

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

Psi‐演算工作台 9:9

此处及后续的显示中,符号表示为数学符号,SML为实例实现者编写的代码,PWB为用户在工具中使用的ASCII语法。

接下来我们定义条件。在协议中,我们需要比较发送方或接收方的比特与传输的比特,并检查在传输数据时是否发生了错误。为此,我们使用值上的等式=。

我们添加一个恒成立的条件真和一个永不成立的假条件。最后,我们包含一个用于单播通信的信道等价条件(ABP不使用广播,因此我们让广播连接性谓词返回假):

我们不需要断言来建模ABP,因此我们令A={Unit}如第2节所示。

最后一步,我们定义项和条件上的代换函数。这些是标准的避免捕获的代换,随后根据后文给出的项重写系统进行归一化。在计算弱迁移时,我们在代换后使用重写,以准确检测 τ‐迁移的循环。这也显著简化了约束求解器,因为范式比任意项更容易处理。

接下来,我们给出针对归约上下文 R::=[]|∼R的项的重写系统。它用于求值 ∼·操作符,消除变量的双重否定,并识别冗余项。特别是,项 ∼∼ERR是冗余项,将被重写为 ⊥:
∼ERR → ⊥
∼⊥ → ⊥
∼0 → 1
∼1 → 0
∼∼x → x if x ∈N.

以下是关于条件的项重写系统。涉及冗余项 ⊥的等式被重写为假。注意,我们仅考虑组成项已处于范式形式的等式条件;这已足够,因为条件上的代换函数是基于项上的代换函数定义的:
∼x= ∼y → x= y
∼x= x → False
x= ∼x → False
M= N → True if M= N and{M, N} ⊆ Val ∪N
M= N → False if M = N and{M, N} ⊆ Val
M= N → False if ⊥ ∈{M, N}.

最后,我们需要定义蕴含。对于范式中的条件,我们定义
Unit a↔. b iff a= b
Unit M= N iff M= N
Unit True,
否则我们让单元 ϕ iff ϕ →+ ϕ′ → 且单元 ϕ′

4.3. ABP迁移约束的约束求解器

ABP约束求解器是一个定义为迁移系统的标准合一算法。由于约束中的条件处于范式,该设计得到了极大简化。

以下是合一转换系统。前两条规则是平凡的。关于信道等价↔.条件的规则,即在π‐ 演算求解器中所见的经典名字合一规则。最后的规则涉及等式条件=。由于项处于范式,我们知道其中一侧必定是一个名称,因此我们进行消元,或通过交换以允许消元。接下来,
˜a#X

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

9:10 J. Borgstr¨om 等

d表示名字 ˜a在X中不自由出现;我们省略了每个条件前面的 1 :
(ν a˜){ |True|} ∧ C, σ → C, σ
(ν a˜){ |False|} ∧ C, σ → ∅
(ν a˜){ |a↔. b|} ∧ C, σ → C, σ if a= b and a, b ∈N
(ν a˜){ |a↔. b|} ∧ C, σ → C[b:= a], σ[b:= a] if a˜#a, b and a = b
(ν a˜){ |a↔. b|} ∧ C, σ → ∅ otherwise
(ν a˜){ |a= M|} ∧ C, σ → C[a:= M], σ[a:= M] if a˜#a, M and a ∈N
(ν a˜){ |M= N|} ∧ C, σ →(ν a˜){ |N= M|} ∧ C, σ otherwise.

4.4. ABP 作为一个进程

这里我们展示了在之前定义的ABPψ‐计算模型实例中对ABP进行建模的进程。我们使用用户在Psi‐演算实例中所使用的PWB语法给出该定义。

我们将图2中所示的ABP的组件Sender和Receiver建模为psi‐演算进程。组件 DataChan和ResponseChan的行为在我们的模型中被隐式地表示。为了组合该系统,各组件具有输入和输出通道,分别为inp和out。接收方和发送方各自还有一个额外的通道,分别用于向使用该协议的应用程序输出o和输入i。

发送方建模如下:首先在输入通道i上接收数据,然后递归地将数据与当前位b一起通过通道out输出。接着,发送方在输入通道inp上接收确认位:如果确认位与b匹配,则发送方翻转b并返回等待数据的状态;否则(如果位不匹配或发生错误),发送方将尝试重新发送数据和b,直到接收到带有标志b的确认为止。

接收方以双重方式工作:

每个通道上的错误可能随时发生。这种不可靠的进程通过将名称(表示比特)视为变量来隐式建模。由于传输的名称是变量,约束求解器可以通过找到适当的项进行替换,从而在发送方或接收方中启用任意的情况子句。

隐藏内部通道后,ABP系统可以描述如下:

4.5. 一个弱转换示例

在研究ABP时,观察协议何时与外部系统通信是很有意义的,此时忽略 τ‐迁移。我们在此展示这样一种“弱”迁移,

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

Psi‐演算工作台 9:11

其中发送方接收数据,并通过数据通道将其传输给接收方。我们对ABP 使用 wsstep命令,得到如下迁移之一:

迁移后,发送方(第13–16行)处于一种状态:它接收到了一个与其自身位不匹配的确认位(第8行的约束),从而将SenderSend的条件”b= ˜ackBit”(在此状态下为”sb= ˜rb”)化简为真(第15行)。

该迁移是PWB生成的七个迁移之一。由于发送方和接收方始终有可能检测到错误E RR,因此它们之间会循环产生无限多个弱迁移。wsstep命令能够检测到此类循环(模α‐ 等价)。由于智能体中出现的项均处于范式,wsstep在ABP上会终止。

我们展示了在PWB中开发一个定制的psi‐演算实例的过程。(完整代码清单可在线获取 [Gutkovas 和 Borgstr¨om 2013]。)通过这种方式,我们直接表达了比特及其操作,并表明在代换函数中使用计算是可行且有益的,这与传统演算不同。我们还展示了弱转换的符号模拟,这对应用很有帮助。

5. 无线传感器网络中的数据收集

在此示例中,我们研究一种用于无线传感器网络(WSNs)的数据收集协议 ) by在我们于PWB中实现的自定义ψ‐演算中对其进行建模。

无线传感器网络由大量感知环境数据的传感器节点组成。一个特殊的节点称为汇聚节点,用于从网络中收集数据。数据收集通常采用多跳通信,构建以汇聚节点为根的路由树[Madden et al. 2002]。由于无线通信是不可靠的,每次协议运行时可能会构建不同的路由树。

我们提出了一种简单的算法来构建路由树:汇聚节点通过广播一条包含其标识符Sink的特殊初始化消息来启动树的构建。当一个节点n首次接收到初始化消息时,它将其父节点 parentn 设置为该消息的发送方,并广播一条包含自身标识符的new初始化消息,以继续构建树的下一层。在树的构建完成后,每个节点向其父节点发送一条包含其数据的数据消息。此外,每个节点会将接收到的数据消息转发给其父节点,确保消息最终到达汇聚节点。

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

9:12 J. Borgstr¨om 等人

图3. 一个包含汇聚节点和两个传感器节点的简单拓扑,其中(a)表示连通性,(b)和(c)表示一些可能的路由树。

5.1. WSN数据采集的Psi演算实例

我们首先定义并实现了一个自定义的Psi‐演算实例,适用于对前述树的构建和数据采集协议进行建模。我们使用两种类型的结构化通道:广播通道init(M)和单播通道data(M)。节点之间的广播连接性由一个无向拓扑图给出。我们首先假设一个静态拓扑top;图3(a)的拓扑可表示为top={(0,1),(0,2),(1, 2)},其中汇聚节点ID为0。相应的psi‐演算参数定义如下:

由于我们考虑的是静态拓扑,因此将断言实现为单位类型。具有主体init(i)的广播输出前缀可以在广播信道init(i)上进行广播,而具有相同主体的输入前缀则可以从拓扑指定的任何连接的广播通道接收。当且仅当两个单播前缀的主题名称相同时,它们才能通信。因此,我们定义 如下:
init(M) . ≺init(N)当且仅当
M= N ∈ N
init(M) . init(N)当且仅当M,N ∈ N 且(M,N) ∈或(N,M) ∈
数据(a) ↔.数据(b)当且仅当a= b ∈N.

5.2. 符号转换的约束求解器

我们描述了转换约束求解器的实现。我们用 ∅表示无解。转换约束是条件的合取。这些约束在两个阶段中求解,分别对应于单播连接约束和广播连接约束。为了简化求解器,我们将进程中的所有自由名视为互不相同(参见区别[Milneretal.1992b])。对于单播约束,如果约束不满足,则求解器失败(返回 ∅)。
(ν a˜){ |data(a) ↔. data(b)|} ∧ C → C if a= b
(ν a˜){ |data(a) ↔. data(b)|} ∧ C → ∅ otherwise.

约束求解器随后检查给定拓扑中的广播连接性。设O为输出约束 { |init(n) . ≺a|},I为输入约束 { |a . init(n)|}。我们区分四种不同情况:
(1)如果I= ∅ 且O={{ |init(n)≺. a|}},则解为[a:= init(n)]。
(2)如果I = ∅ 且O={{ |init(n)≺. a|}},并且对于I中的每个约束{ |a.init(m)|} 都有(n,m) ∈ top,则解为[a:= init(n)]。否则,该约束不可满足,即 ∅。
(3)如果I = ∅ 且O= ∅,则约束求解器会找到n,使得对于每个{ |a. init(m)|} ∈ I,都有(n,m) ∈ top。对于每一个这样的n,[a:= init(n)] 是一个可能的解。
(4)如果I= ∅且O= ∅,则该约束的广播部分平凡成立。

5.3. 树构建模型

实例实现后,我们可以使用PWB语法定义用于建模树构建算法的进程。汇聚节点广播其自身的通道,然后进入数据收集模式;即,它持续监听其单播通道:

一个节点在其广播信道上监听父节点的信道,以便向该父节点发送数据。随后,类似于汇聚节点,它广播自己的单播信道,通过该信道接收待转发给父节点的数据。完成广播后,它将数据发送给父节点,并进入数据转发模式:

5.4. 示例强迁移

我们在此研究由一个包含汇聚节点和两个传感器节点的小型无线传感器网络生成的(符号)迁移系统。每个节点都有一个用于响应消息的唯一通道:

我们将展示PWB中一个可能的迁移序列,使用图3(a)所示的拓扑。为了便于跟踪,我们仅考虑带有广播输出和单播通信动作标签的迁移。

通过执行PWB在System3 上的符号模拟器,得到以下初始迁移。结果系统处于一种配置中,在此配置下,两个传感器节点都已获得父节点的通道,此处即汇聚节点的通道。随后,这些节点便能够将其数据传输给汇聚节点。单播信道连通性对应于图3(b)所示的路由树。这是由PWB生成的七种可能初始迁移之一,其中三种表示从环境接收的广播,另外三种表示并非所有节点都接收到广播消息的情况。迁移标签gna!(new bsChan)bsChan表示具有新鲜名称gna的通道。生成的约束要求 { |init(0) . ≺ gna|} ∧ { |gna . init(1)|} ∧{ |gna . init(2)|},意味着节点0输出连接到某个输入连接到节点1和2。约束求解器找到了该约束的一个解,该解将init(0)代入gna:

在导数中,汇聚节点成功将其单播通道chanS与两个节点进行了通信。

从这一点开始,系统可以通过两种对称的方式演化:任一节点都可以广播一条初始化消息,但由于(封闭)系统中没有任何节点在广播信道上监听,因此该消息不会被接收。以下是节点1的迁移:

系统现在处于节点1可以向汇聚节点发送数据的状态。通过执行节点2的类似迁移,我们得到一个系统,其中两个节点都已准备好传输数据:

我们展示了在PWB中使用高级特性,例如使用具有不同通信模式(点对点与广播)的结构化通道。广播连接图(拓扑)被形式化为一个断言;这使得我们有可能扩展模型,例如扩展到动态或局部连通性。我们使用符号执行来模拟系统的强符号迁移。这一切展示了 PWB在建模和研究无线传感器网络算法方面的多功能性和实用性。

6. 无线传感器网络中的动态拓扑

我们在此将第5节的示例扩展到动态拓扑。我们首先允许向连通性图中添加边,然后加入删除边的对偶操作。

参数与第5节示例中的相同,除了断言现在是表示拓扑中边的有限元组集合:
蕴含关系保持不变,单播约束的约束求解器也相同。为了实现广播连接性,如果必要的边不存在,求解器会尝试将其添加到解中(这在无线传感器网络的进程演算模型中是常见的[Ghassemi等人2008;Godskesen 2010])。例如,第5节中第一个迁移的约束在空拓扑下的解为([gna:=”init(0)”],”(0,2),(0,1)”)。

接下来,我们增加代理从环境中删除边的能力。在断言中,我们将边建模为二元切换器,因此如果同一条边出现两次,则等价于该边根本不出现(即{(M,N)} ⊗{(M, N)} 1)。参数通过添加表示边是否存在相应的条件进行扩展,而断言则为有限多重集:
环境中奇数个边元组表示该边存在;偶数个表示不存在。因此,向环境中添加一个元组可能会增加或移除一条边。我们通过以下蕴含定义来描述这一点:
conn(M,N)当且仅当M,N ∈ N 且 |(M,N)| + |(N, M)| 为奇数
disconn(M,N)当且仅当M,N ∈ N 且 conn(M,N)
init(M) . init(N)当且仅当conn(M,N).

对于第5节中的协议,我们可以重用相同的约束求解器,但需注意它无法处理断开连接条件控制广播输入的情况。我们还可以通过以下两个智能体来表示拓扑结构的变化:

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

9:16 J. Borgstr¨om 等人

代理Disconnect<1, 2> |( |”(1,2)”|)具有两条迁移:第一条为( |”(1,2)”|)| ( |”(1,2)”|),其对应的约束 { |”(1,2)” |−”conn(1,2)”|}可平凡求解;第二条为 0|(|”(1,2)”|),其对应的解为([],” (1,2)”)。在这两条迁移中,环境均被扩展了一个额外的元组(1,2),从而有效地从拓扑中移除了一条边。直观上,智能体Connect和Disconnect可用于在全局表中设置和清除位。

7. 符号语义

在本节中,我们描述了广播psi‐演算的一种符号操作语义,该语义相对于具体广播语义[Borgstr¨om等人 2011, 2013]是可靠的(定理7.11)和完备的(定理7.12)。此语义已在 PWB中实现,并对原始的符号语义[Johansson等人 2012]进行了扩展、简化和修正。

7.1. 符号操作语义

正如我们所见,符号操作语义中的迁移形式为P α →− C Q ,其中C是迁移启用所需满足的约束。每个PWB 实例实现一个求解器,该求解器用于计算该实例迁移约束的解。

定义 7.1(约束与解) 。一个解是形如(σ,)的对,其中 σ 是名字到项的替换序列, 是一个断言。转换约束用C,Ct表示,其对应的解sol(C)定义如下:
约束解
C,C′::=真{(σ,): σ是一个替换序列 ∧ ∈A}
|假∅
| (νa)C{ (σ,):b#σ,,C ∧(σ,) ∈sol((ab) · C)}
| { |′ ϕ|} {(σ,):′σ ⊗ ϕσ }
| ∃x.C{(σ,):y#σ,,C ∧([y:= M]σ,) ∈sol((xy) · C)}
| a ∈n(M){(σ,):a ∈n(Mσ)}
| C ∧C ′ sol(C) ∩ sol(C′)

(ab)·C表示在C中将a替换为b且将b替换为a(“交换”)。在(νa)C中,a在C中被绑定;在 ∃x.C中,x在C中被绑定。我们用 ∃ bx.C表示(νb)∃x.(b ∈n(x) ∧C); ∃和 · ∈n(·)的唯一使用形式即为此种受限形式(该形式本身仅用于表I中的规则SBRCLOSE)。我们采用符号表示(σ,) | = C来表示(σ,) ∈ sol(C),并用C ↔ D表示sol(C)= sol(D)。

迁移约束C定义了一组解sol(C),即通过应用代换并添加断言后使公式为真的那些解。例如,迁移约束 { |1 x= 3|} 的解为([x:= 3],1)和([], x= 3),其中[]是恒等代换。

限制在逻辑合取上具有分配性,且逻辑合取以true为单元并是结合的。因此,我们将在以下方程的模下考虑约束。
LEMMA 7.2 . (νa)(C1 ∧ C2) ↔(νa)C1 ∧(νa)C2 且 C1 ∧(C2 ∧ C3) ↔(C1 ∧ C2) ∧ C3 且 C ∧真 ↔ C。

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

Psi‐演算工作台 9:17

表格 I. 广播通信的实笑过渡规则 。SBRCOM的对称版本已被省略。在SBROPEN中,表达式 ν˜a∪{b} 表示将b插入到序列 ˜a中的任意位置。

代理 F(P)的框架概念在语义中被使用:直观上,它是代理的顶层断言,包括顶层绑定器。框架的形式为F::= | (ν a),其中a在(νa)中被绑定。进程的框架表示其对并行进程的贡献。例如,进程 F((νa)(( |1|) | MN.( |3|) | ( |2|)))的框架是(νa)(1 ⊗2)。注意3 不包含在框架中,因为它出现在前缀之下。为了定义符号操作语义,我们需要一种将并行进程的框架添加到当前迁移约束中的方法。

定义 7.3(向约束添加框架) 。我们按如下方式定义F ⊗C:
F ⊗(νa)C=(νa)(F ⊗ C) where a#F
(νa˜) ⊗ { |′ ϕ|}=(νa˜){ | ⊗′ ϕ|} where a˜#′, ϕ
(νa˜) ⊗ ∃x.C=(νa˜)∃x.( ⊗ C) where a˜#C and x#a˜,
F ⊗(C ∧ D)=(F ⊗ C) ∧(F ⊗ D)
F ⊗ C= C otherwise.

为了使符号语义能够识别出用于发送消息的原始通道,我们要求通道连接性在其左参数上满足部分单射性:即要求对于所有名字a,函数x →(x ↔.a)是单射的。

如果进程P中每个( ||)的出现都是输入或输出的子项,则称该进程为断言受保护。我们要求进程必须是良构的:P是良构的,当且仅当在P的每一个形如case ϕ˜:Q的子项中,每个Qi都是断言受保护的,并且在P的每一个形如!Q的子项中,Q是断言受保护的。

我们定义一个动作的主语(或通道) α为subj(x?(˜y))= subj(x(˜y))=˜ ˜ subj(x!(ν˜a)N)= subj(x(ν˜a)N)= x和subj(τ)= ∅。同时,我们将标签的绑定名称 ˜(即私有名称)定义为bn(x?(˜y))= bn(x(˜y))= ˜y和bn(x!(ν˜a)N)=˜bn(x(ν˜a)N)=˜a以及bn(τ)= ∅。

结构化的符号操作语义保持良构性,并在表I、II和III中定义。我们首先描述表I中的广播规则。首先考虑 SBROUT规则:M ˜N.P y! N −−−−−→ P。其迁移约束{ |1M . ≺y|}的解是那些使得输出前缀的主项M能够在新鲜通道上广播的解。

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

9:18 J. Borgstr¨om 等人

表II. 二进制通信的修订实笑过渡规则 。SCOM的对称版本被省略。在SCOM中,我们假设 ˜c1#y ˜ c2,2,M2 和 ˜c2#z1,M1 并令Ccom=((ν˜c1˜c2){ |1 ⊗2 M1 ↔.M2|}) ∧(((ν˜c2)2) ⊗C1) ∧(((ν˜c1)1) ⊗C2)。在SOPEN中,表达式ν˜a∪{b}表示将b插入到序列 ˜a中的任意位置。

表III. 广播与二进制通信共有的修订实笑过渡规则 。SPAR的对称版本被省略。

通道变量y。类似地,在 SBRIN中,我们可以从输入前缀的主语M能够监听的任意通道x接收一条广播。在SBRMERGE中,具有相同标签的两个输入被合并为一个。在SBRCOM中, Q接收到P的广播,并将消息N代入输入变量˜˜y。名字˜a在P中被限制,因此它们对 Q必须是新鲜的。在SBRMERGE和 SBRCOM中,每个迁移约束都扩展了另一个进程的框架。

在SBROPEN中,出现在消息N中的新名称˜b的作用域被打开;我们在迁移约束中记录b是新鲜的。在SBRCLOSE中,已到达其词法作用域的广播转变为内部 τ动作。新名字˜a的作用域被重新建立。

表II和表III中的其他符号规则与广播规则类似,但有两个例外。在表III的规则SCASE中,我们将 ϕi必须成立这一约束添加到迁移约束中。在表II的规则SCOM中,我们对输入和输出迁移的迁移约束进行部分解构,提取出第一个合取项。然后重新组合迁移约束的剩余部分,并添加它们的通道等价的约束(即1 ⊗2 M1 ↔. M2),得到Ccom。此处利用 ↔.的部分单射性来保证M1是产生该迁移的通道。

7.2. 与原始符号操作语义的比较

本文使用的符号语义在四个方面与Johansson等人提出的原始语义[Johanssonetal. 2012]存在显著差异:
(1)支持广播通信(表I);
(2)支持多体通信(同时发送多个消息项);
(3)不依赖于外部断言环境(稍后解释);以及(4)一个新的SCOM规则,原因将在后面说明。

原始的通信规则如下(省略了其新鲜性侧条件)。接下来,断言环境“…”收集当前进程上下文的断言,可以忽略:

为了推导出具有OLD‐SCOM的迁移,我们需要计算P和Q的帧,将帧中的绑定名称与出现在˜ ˜迁移约束中的绑定名称进行等同,使得 F(P)=(νbP)P 且 F(Q)=(νbQ)Q,然后检查1= 2= ⊗P ⊗Q。然而,在某些我们期望其成立的情况下,这些等式却失败了。

例7.4 。此示例展示了与进程构造子case和复制(!)下的限制相关的问题。我们以复制为例;使用case时的情况类似。考虑在π‐演算实例中的进程P=!(ν b)cb.Q。在原始语义中,P的符号输出转换具有约束(ν b){ |1 c↔. x|},因为在推导中使用了(ν b)c b.Q的框架(即(ν b)1)。当尝试推导P与进程c(x).R之间的通信时,OLD‐SCOM的侧条件˜F(P)=(νbP)P无法满足: F(P)=(νε)1,而P的迁移约束为(νb){ |1 c↔. x|},因此绑定名称的数量不同。

一个类似的问题与框架中限制的顺序有关,当非活动并行进程具有顶层限制时就会出现这种情况。

例7.5 。设P=(ν b)cb.Q | (ν a)c(x).R。在原始语义中,P的符号输出转换具有约束(νa)(ν b){ |1 c↔. x|},但 F(P)=(ν b)(ν a)1,其中绑定名称的顺序不同。

如果框架的约束符采用所谓的集合+约束符[Huffman和Urban 2010],即顺序无关且忽略冗余约束符,则上述两个问题均可避免。然而,这种约束符的概念在用于ψ‐演算的形式化[Bengtson和Parrow 2009]的NominalIsabelle[Urban和Tasson 2005]版本中并不可用。

示例7.6 。此示例展示了与断言组合不满足交换性相关的问题。设断言为名字的元组 ˜a,使用˜连接 ˜a;b进行组合。考虑OLD‐SCOM的前提:在原始语义中, 1将具有前缀Q;,而2 将具有前缀P;。由于连接是不交换的,当 P 和Q 为非空且n(P) = n(Q)时,OLD‐COM 的侧条件1= 2= ⊗P ⊗Q 无法成立。这使得两个进程( |a|) | c和( |b|) | c无法通过OLD‐SCOM进行通信。

这些示例表明,规则OLD‐SCOM 对其前提中迁移约束的句法形式做出了过强的假设。原始的符号语义在某些实例中仍然对应于具体语义[Bengtsonetal. 2011],例如当通信的进程不包含限制时。

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月。

9:20 J. Borgstr¨om 等人

表IV. 替换的一般要求
X[x:=x]= X
x[x:= M]= M
X[x:= M]= X 如果x#X
X[x:= L][y := M]= X[y := M][x:= L]如果x#y,M且y#L
X[˜x:= ˜T]=(( ˜y ˜x) ·X)[˜y:= ˜T]如果 ˜y#X ˜x

表V. 特定数据类型的要求
n(Mσ) ⊇n(M)\ n(σ)
n(M[˜a:= L˜]) ⊇ n( L˜)当n(M) ⊇ ˜a
(M . ≺N)σ= Mσ . ≺ Nσ
(N .M)σ= Nσ . Mσ
(M↔.N)σ= Mσ ↔. Nσ
1σ= 1
⊗1 N
⊗′ N ′ ⊗
1 ⊗(2 ⊗3) N(1 ⊗2)⊗3
( ⊗′)σ N σ ⊗′σ
⊗1 N ⊗2当 1 N 2

断言组合满足交换幺半群定律(而不仅仅是模断言等价)。与OLD‐SCOM不同,表II中的规则 SCOM对绑定名称的数量或断言结构没有任何假设,且表I中相应的广播规则SBRCOM和 SBRMERGE对其约束的形式也完全没有任何假设。

7.3. 符号操作语义的正确性

关于符号语义相对于具体广播语义的可靠性和完备性的证明[Borgstr¨om等人 2011]主要沿用了[Johansson等人 2012]的方法。主要区别在于,他们对应的引理7.10(描述转换约束的形式)并非在所有情况下都成立,如示例7.4、7.5和7.6所示。我们在此通过在模冗余限制(参见示例7.4)、限制顺序(参见示例7.5)以及断言组合的交换幺半群定律(参见示例7.6)的意义下考虑断言和框架,证明了一个较弱结果。

关于技术预备知识,我们假设表IV中代换的一般性质,以及表V中的同态和名称保持定律。例如,(名义)项代数中的标准代换概念满足所有这些性质。我们写作 N ′ iff n()= n(′),并且对于所有 ϕ,成立 ϕ iff′ ϕ。然后我们假设表V中的等价关系。例如,当断言是关于项的有限方程集,并具有标准代换时,这些等价关系即被满足。

与原始证明的主要区别在于引入了框架上的一个辅助关系(定义7.7),以准确描述迁移约束的结构(引理7.10),使得它们在规则SCOM中总能被分解,而不像OLD‐SCOM的情况。

定义 7.7(AC-等价) 。断言的结合/交换等价(AC等价)是最小的等价关系,满足以下条件:
(1) 1 ⊗ ≡AC ;以及(2)1 ⊗2 ≡AC 2 ⊗1; 以及(3)1 ⊗(2 ⊗3) ≡AC(1 ⊗2)⊗3;以及(4)1 ≡AC 2 ⇒ ⊗1 ≡AC ⊗2。
帧(ν˜a)1和(ν˜c)2是AC等价的,记作(ν˜a)1 ≡AC(ν˜c)2,如果1 ≡AC 2且{˜a} ∩ n(1) ={˜c} ∩ n(2)。

LEMMA 7.8 . AC等价是框架上的一个等价关系,且当F1 ≡ACF2,时,也有n(F1)= n(F2)和(νa)F 1 ≡AC(νa)F2以及G ⊗F1 ≡AC G⊗F2。
PROOF 。根据定义直接得出,使用表V中的定律。

例如,受保护的进程具有与单元框架1在AC上等价的帧。

LEMMA 7.9 .如果P是断言受保护的,则 F(P) ≡AC 1。
PROOF 。根据P进行归纳。

以下引理刻画了点对点输入和输出迁移的约束形式。约束中的第一个合取项始终是一个信道等价约束(即原始前缀的对象M与迁移对象变量y之间的信道等价),该约束必须在某个框架(ν˜c)下成立,且该框架与原始进程P的框架是AC等价的。该引理用于定理 7.12的证明中,以说明规则SCOM中迁移形状的前提条件始终成立。

LEMMA 7.10 (FORM OF CONSTRAINT) 。设 α=y (ν˜a) ˜N或 α=y(˜x)。如果P →−α C P ′ 且 y#P,则存在 ˜c 、M和D,使得 F(P)≡AC(ν˜c) 且y#˜c 、M、D以及C=(ν˜c) { | M↔.y |} ∧ D。
PROOF 。根据P α →− C P′的推导进行归纳。一个基本情况如下。

SOUT 。在这种情况下,该迁移是由
SOUT
K N˜. P −−−y −N˜−→ { |1K↔.y|} P.
y#K, N˜, P
˜Here˜c= ε, = 1,M= K,和D=真,其中 F(K N. P)= 1.

需要使用AC等价的情况如下。

SCASE 。在这种情况下,该迁移是由
SCASE
Pi α →− C P′
case ϕ˜: P˜ α −−−−−→ C∧{ |1ϕi|} P′.
bn(α)#ϕi
根据归纳,可得M,D′,,˜c,使得C=(ν˜c){ | M↔. y|} ∧ D ′,其中y#D′ 且 ˜F(Pi) ≡AC(ν˜c)。令D= D′ ∧ { |1 ϕi|};由于y#情况 ϕ˜:P,因此也有y#D。根据良构性,Pi是受保护的,因此根据引理7.9, F(Pi) ≡AC 1。由传递性,F(P)= 1 ≡AC(c)。

SPAR 。在这种情况下,该迁移是由
SPAR
P α →− C P′ P | Q α −−−−→ F(Q)⊗C P′ | Q
bn(α)#Q
α= τ ∨ subj(α)#Q.
根据归纳,存在M和D′˜c,使得C=(ν˜c){ | M↔. y|} ∧ D ′,其中y#D′且 F (P) ≡AC(ν˜c)。令D= F(Q) ⊗ D′;由于y#P|Q,因此也有y#D。根据引理7.8, F(P | Q)≡AC((ν˜c))⊗F(Q) ≡AC F(Q) ⊗(ν˜c)。

SSCOPE 。在这种情况下,该迁移是由
SSCOPE
P α →− C P′ (νb)P α −−−→ (νb)C (νb)P′ b#α.

ACM嵌入式计算系统汇刊,第14卷,第1期,第9篇,出版日期:2015年1月

9:22 J. Borgstr¨om 等人

表VI. 具体语义 。CBRCOM、CCOM和CPAR的对称版本被省略。在规则CBRCOM˜ ˜ ˜和CBRMERGE以及CCOM中,我们假设 F(P)=(νbP)P 和 F(Q)=(νbQ)Q,其中bP对于P˜bQ, Q,和 是新的,并且˜bQ 对于Q˜bP, P,和 是新的。在规则CPAR中,我们假设 F(Q)=(ν˜bQ)Q,其中˜bQ 对于 ,P,和 α是新的。在规则COPEN和CBROPEN中,表达式 ˜a∪{b} 表示将b插入到序列 ˜a中的任意位置。

CBROUT
M≺. K
M!N˜. P −K−!− →N˜ P

CBRIN
K. M |x˜| = | N˜|
M?(x˜). P −K−?− →N˜ P[x˜:= N˜]

CBRMERGE
Q ⊗ P −K−?− →N˜ P′
P ⊗ Q −K−?− →N˜ Q′
P | Q K? N˜ −−−→ P′ | Q′

CBRCOM
Q ⊗ P K!(νa˜)N˜ −−−−−→ P′
P ⊗ Q K? N˜ −−−→ Q′
P | Q K!(νa˜)N˜ −−−−−→ P′ | Q′
˜bP˜bQ#K a˜#Q

CBROPEN
P K!(νa˜)N˜ −−−−−→ P′
(νb)P K!(νa˜∪{b})N˜ −−−−−−−−→ P′
b#a˜,, K b ∈ n(N)

CBRCLOSE
P K!(νa˜)N˜ −−−−−→ P′
(νb)P τ →−(νb)(νa˜)P′
b ∈ n(K) b#

COUT
M↔. K
M N˜. P K N˜ −−→ P

CIN
M↔. K |x˜| = | N˜|
M(x˜). P K N˜ −−→ P[x˜:= N˜]

CCOM
⊗P ⊗Q M ↔. K
Q ⊗ P M(νa˜)N˜ −−−−−→ P′
P ⊗ Q K N˜ −−→ Q′x
P | Q τ →−(νa˜)(P′ | Q′)
˜b˜bPQ##MK a˜#Q

COPEN
P M(νa˜)N −−−−−→ P′
(νb)P M(νa˜∪{b})N −−−−−−−→ P′
b#a˜,, M b ∈ n(N)

CCASE
Pi α →− P′
ϕi
caseϕ˜: P˜ α →− P′

CREP
P | !P α →− P′
!P α →− P′

CPAR
Q ⊗ P α →− P′
P | Q α →− P′ | Q
bn(α)#Q

CSCOPE
P α →− P′
(νb)P α

CINV
P[x˜:= M˜] α →− P′
A〈 M˜〉 α →− P′
A〈x ˜〉 ⇐ P |x˜| = | M˜|

根据归纳,存在 ˜c 、M和D′,使得C=(ν˜c)( M↔. y) ∧ D ′,其中y#M,D且 F (P)≡AC(ν˜c)。令D=(νb)D′;尤其地,y#(νb)D。由引理7.8,F((νb)P)≡AC(νb)(ν˜c)。

SOPEN . As SSCOPE.

**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值