一种递归π演算向Petri网的转换方法
康辉1, 张双双1,2, 梅芳1
1.吉林大学,计算机科学与技术学院,长春 130012
2.吉林信息安全测评中心,长春 130062
梅芳(1977),女,讲师,博士.研究方向:自主通信,策略网管.E-mail:meifang@jlu.edu.cn

康辉(1968),女,副教授.研究方向:Web服务与服务组合技术.E-mail:kanghui@jlu.edu.cn

摘要

针对π演算中的递归结构,本文给出了一种递归π演算向Petri网的转换方法。该转换遵循基本进程转换规则以及组合规则,采用层次化方法,针对递归次数较多时产生的Petri网结点过多的情况,本文给出了一种更简洁的Petri网表示,它保留了系统的语义,且编码完全相同的轨迹集合,对于在规模较大的复杂系统中应用Petri网模型有着积极的意义。本文还分别证明了递归π演算与转换的Petri网的互模拟等价性以及Petri网与其简洁表示的等价性。

关键词: 计算机软件; 递归π演算转换; 层次化方法; Petri网简洁表示; 互模拟等价
中图分类号:TP31 文献标志码:A 文章编号:1671-5497(2014)01-0142-07
Petri net translation of recursion π-calculus
KANG Hui1, ZHANG Shuang-shuang1,2, MEI Fang1
1.College of Computer Science and Technology, Jilin University, Changchun 130012,China
2.Jilin Information Technology Security Evaluation Center,Changchun 130062,China
Abstract

In view of the recursive structure in π-calculus, a kind of Petri net translation of recursion π-calculus is presented. Following the basic process translation rules and combination rules, the translation uses the hierarchical method. When the recursive structure executes many times, excessive more Petri net nodes will be generated. To solve this problem, a more compact representation for this Petri net is defined, which preserves the semantics of the system in that it encodes exactly the same set of traces. The bisimulation of recursion π-calculus and the Petri net transition is proved, as well as the equivalence between Petri net and its more compact representation.

Keyword: computer application; recursion π-calculus translation; hierarchical method; more compact representation of Petri net; bisimulation equivalence

随着面向服务的计算(Service-oriented computing SOC/Service-oriented architecture,SOA)技术[ 1]和业务流程管理(Business process management,BPM)技术[ 2]的广泛应用以及对软件可信性要求越来越高,很多学者用π演算和Petri网作为服务组合和业务流程技术的理论基础。π演算用来描述拓扑结构动态变化的并发系统,通过相应的数学分析方法,对系统的属性和行为进行分析。但是π演算[ 3, 4, 5, 6, 7]的进程表达式比较繁琐,不能形象地反应系统物理结构信息,不能刻画系统的真并发行为,而且从系统验证角度来看,其支持工具少,仅有MVB和HAL等几种自动验证工具,这样给后续的形式化验证带来了困难。Petri网[ 8, 9]是一种形式化图形验证工具,它侧重于系统的结构描述和性质分析,并且能有效地刻画系统真正的并发语义。它是一种可用网状图形表示的系统模型[ 10, 11],适合描述异步、并发、分布式的系统,既可用于静态的结构分析,又可用于动态的行为分析。

由于π演算存在固有缺陷,很多学者已经在将π演算向Petri网转换这方面做了很多研究[ 12, 13],例如Raymond Devillers[ 12]等人已经提出了其转换的一般方法。但是对于π演算中递归结构的转换,目前仍然空白。在π演算中,对递归的表达是其基本的语义,较为简单;而在一般Petri网中,对递归的描述非常困难。实际应用π演算时递归结构经常出现,因此,本文给出了一种π演算中递归结构转换为Petri网的方法。

1 基本概念及转换规则
1.1 基本概念

关于π演算的基本概念,在文献[3]中已有详细介绍在此不再赘述。在给出π演算中递归表达式基本形式之前,先看一个例子:

(1)

式(1)中每个通道 a b c、…中都保存着一个数值 h'(这个数值可以不一样),从已知通道 a开始,读取通道内当前值 h'加到现有的值上,直到得到的 h值大于10时可以选择执行输出该值。这样,从 a开始到输出 h时所有计算过的通道即是该get函数的路径。

在式(1)中,既有自调用的算子,又有非自调用的算子,并且有选择运算符“+”将两个进程相连。在不满足递归出口条件时,多次执行前缀算子 ab获取下一个通道,并执行计算 h值操作。当满足递归出口条件时,可以选择继续自调用,也可以终止调用过程。

本文给出了一种一般π演算的递归表达式的基本形式:

(2)

式中: 均为非自调用的表达式。可以看出,式(1)符合该表达式形式。

当然,在一些表达式中也会出现有多个自调用表达式的形式,比如:

(3)

(4)

(5)

在式(3)至式(5)中,均有两次自调用,虽然在转换时与式(2)有点不同,但基本转换思路大致相同。为了方便描述转换过程,在本文中,以式(2)这种递归形式为例。

为了更好地记录递归运算的层次,本文引入轨迹的概念。通常,轨迹一般用来指进程P所依次执行的一系列活动,一般用表示。

定义1 轨迹:π演算递归结构执行时,为了记录递归运算的层次,我们将递归调用的顺序称为轨迹,用字母trail表示。调用一次用 σ1 表示,调用第二次用 σ2 表示,以此类推,调用第 n次用 σ n 表示,则进程中递归结构执行的轨迹trail=< σ1, σ2,…, σn>。

定义2 逆轨迹:与轨迹相应地,在递归返回时其轨迹称为逆轨迹,记为trail-1,上述递归返回的逆轨迹即为trail-1=< σ n, σ n-1,…, σ1>。

在本文中,π演算进程P转换而成的Petri网记为 NP, N P是一个有向连通图,其节点分别称为库所和变迁。这些节点通过有向弧相连。相同类型的两个节点之间是不允许相连的。

1.2 转换规则

递归π演算向Petri网转换要遵循一些转换规则,在本文中将这些规则概括为两类:基本进程的转换规则以及组合规则。

1.2.1 基本进程转换规则

对于向子网 K( ρ)的转换,是根据表达式 的语法树,其组成为给定基本子项(进程项0,进程调用,内部动作以及输入输出前缀)的图转换。

由于不涉及任何的名字操作,因此进步进程项0和内部动作前缀 τ十分简单。进程调用 X( α1,…, α nX)也类似,但是结果将产生一个层次变迁,它将通过标识等价规则进行激发变换[ 10]

每个输出前缀 β(其中 α β),将会被转换成未标识的Petri网的形式 ,其中 t k表示已知输出变迁, t n表示新的输出变迁, t c表示交互输出变迁。

具体的转换规则如图1所示。

图1 空进程、哑动作 τ、进程调用、动作前缀向Petri网转换规则Fig.1 Translation rules from o, τ,the process call and the prefix to Petri nets

1.2.2 组合规则

本节中的组合规则用于合并Petri网的算子,包括前缀组合规则、选择组合规则、并行组合规则以及范围处理规则,其中前3个规则给出了合并标签库所、相应的持有者的方法[ 12]

假设有网 是两个不相干的未标记的Petri网,并且有 如果 那么 D1= D2,即被相同符号标识的持有者库所也有同样的值类型集合。下面将给出四种组合规则的形式化处理方法,如图2所示。

图2 组合规则Fig.2 Composition rules

前缀组合规则: N1. N2 。假设 N1有唯一的入口控制库所和唯一的出口控制库所(出口控制库所记作 s1),通过如下步骤获得组合结果:

(1)网 N1和网 N2并排放置。

(2)对应每个 创建一个新的库所 s'2,用符号 i标识,同时将网 N1和网 N2中在 si t Ti ( i∈{1,2})的弧 Ψ在新的库所 s'2 t上标记,并使用同样的注释符号和同样的弧类型(无向或是有向的)标记,而后网 N1的唯一出口控制库所和网 N2的出口控制库所将被删除。

(3)对于有相同标识符号和类型的持有者库所将被合并为一个持有者库所,并且如前一样,具有相同的标识符号和类型,在原来的网 N1和网 N2中连接合并的持有者库所与变迁之间的弧及注释标识在合并后的持有者库所中保持不变。

1)选择组合规则: N1+ N2,可通过如下过程获得图转换结果:

①网 N1和网 N2并排放置。

对于每个 创建一个新的库所 s,用符号e标识,并且使得每个在 s i和t∈ T i, i∈{1,2}的弧 Ψ在新的库所 s和变迁 t上作同样标识,即使用相同的注释符号和相同的弧类型(无向或是有向的);类似地,对于每个 创建一个新的库所 s ,用符号 x标识,其连接性与上面规则定义一致。最后,将原来在网 N1和网 N2中标识的入口控制库所(被符号 e标识)和出口控制库所(被符号 x标识)删除。

②具有相同名字的持有者库所的合并可参见前缀组合规则。

2)并行组合规则: N1| N2,可通过如下过程获得图转换结果:

①网 N1和网 N2并排放置;

②具有相同名字的持有者库所的合并可参见前缀组合规则。

3)范围处理规则: N= sco( N1),可通过如下过程获得图转换结果:

①对于每对变迁 t1, t2 T1,其中 t1 t2分别被snd或rcv所标识,创建一个新的变迁 t,用符号 τ标识,而在变迁 t与库所 s上的弧注释符号是在变迁 t1与库所 s以及变迁 t2与库所 s的弧注释符号的简单合并。在这里注意在snd所标识的变迁周围的弧与rcv所标识的变迁周围的弧是互不相干的,所以不需要进行反复的合并操作。

②最后删除被snd和rcv所标识的变迁以及与其相连接的弧。

2 递归π演算向Petri网的转换及等价性证明
2.1 准备与讨论

类似于式(1)中的例子,当数据 h满足 h>10时才可以选择执行 ,因此在执行递归时要判断是否满足递归出口的条件。因此在递归调用和递归返回间加入一个判定库所,用来存储判定是否满足递归出口条件的判定托肯。判定托肯的形式为F.D或者T.D,其中F.D表示不满足递归出口条件,D表示这个托肯的类型是判定托肯(decision token);T.D表示满足递归出口条件。

对于如何记录当前数据属于哪次递归操作,本文采用trail.data.place的形式,即当前轨迹.数据值.所在库所的形式存储在栈库所中。

对于轨迹,在执行递归调用时,调用一次用 σ1 标记,调用第二次用 σ2 标记,…,调用第 n次用 σ n 表示,进程中递归结构执行的轨迹trail=< σ1, σ2,…, σ n >。例如递归主体 X( a1,…, an)将用轨迹标记为 σ1, σ2,…, σ n. X( a1,…, an)。对于递归主体后面的 ,在递归返回之前是不执行的,在执行 时是按照轨迹< σ1, σ2,…, σ n >的逆轨迹< σ n, σ n -1,…, σ1>执行的。

2.2 递归π演算向Petri网的转换

对于π演算递归结构向Petri网的转换,本文采用层次化方法,即将表达式中的每一个子表达式(包括递归主体)都先转换成对应的子网,然后组合起来;如果自调用表达式没有满足递归出口条件,那么对自调用表达式的网结构进行进一步细化,将下一次调用的网结构展开代替上一层中自调用表达式对应的网结构。

下面给出关于式(2)的递归结构全景图第一层,如图3所示。

说明:

(1)最开始的库所 与最后的库所 是此π演算表达式对应网结构的控制库所,这是假设该表达式是一个主式;如果此递归π演算表达式是其他π演算表达式的子式,这两个库所应换成与外界相连、用于传递控制信号的内部库所 i

图3 典型π演算递归结构转换结果全景图第一层Fig.3 First layer of franslation panoramic view from typical recursion π calculus to Petri net

(2)图中的库所 是本文新加库所——判定库所,存储了判定是否满足递归出口条件的判定托肯F.D和T.D。

(3)在自调用表达式对应的网结构与判定库所 d之间有一条弧相连,表示在执行自调用表达式时,其中的条件发生了变化,这个变化的条件要及时传给判定库所,使判定库所做出合理的判断。

(4)在 等表达式前进行了轨迹的标记;而表达式 R( b1,…, b n)却没有轨迹标记,因为在递归调用时此表达式只执行一次。

(5)判定库所对应一个判断逻辑,严格来讲,如果系统中有多个递归表达式,则每一个表达式单独对应一个判定库所。

(6)出于版面考虑,这里没有画出栈库所、名字持有者库所、标签库所以及相关弧。

式(2)递归结构全景的第二层如图4所示。

图4 典型π演算递归结构转换结果全景图第二层Fig.4 Second layer of translation panoramic view from typical recursion π calculus to Petri net

类似地,调用多次的π演算表达式对应的网结构也能够给出。

对于形如式(2)的π演算表达式,采用层次化方法,将π演算递归结构转换成Petri网的步骤为:

(1)按照1.2节中的基本进程转换规则及组合规则将 以及 分别转换成对应的子网 NP1 NP2 NP3

(2)将自调用表达式 X(a'1,…,a'n)先看做一个整体表示,对应的网结构先用 NP0 表示。各个组成部分用构造sco( NP1 | NP2 | NP3 | NP0)网连接起来,这将多种标签库所和可能来自不同部分的有 uv标记的变迁对合并起来。这个构造并不合并其他的持有者库所。移除所有标记为 uv的变迁。

(3)判断 是否满足递归出口条件,若不满足,将 视为 转步骤(1)。用不同的标记来记录不同的调用;若满足,转(4)。

(4)将图3中的变迁 P( a1,…, a n)用子网 NP1 替换,如果 NP1 只有一个输入库所 e,那么将此库所与开始的库所 e合并,仍旧记为 e;否则创建一个辅助变迁 t1,使开始库所 e指向辅助变迁 t1,然后由变迁 t1 指向 NP1 所有的输入库所 e,再将 NP1 所有的输入库所 e改为内部库所 i

同样地,如果 NP1 只有一个输出库所 x,将此库所与最后库所 x合并,记为 x;否则创建一个辅助变迁 t2,使 NP1 所有的输出库所 x指向辅助变迁 t2,然后由变迁 t2 指向最后的库所 x,再将 NP1 所有的输出库所 x改为内部库所 i

在用 NP2 NP3 替换 R( b1,…, b n)、 Q( a1,…, an)时也做同样的处理。

(5)将相同的名字持有者库所合并,与原库所相连的弧以原方式练到合并后的库所上。将需要保存数据的变迁用弧与栈库所相连。

(6)为了得到完整的变迁网 N p,向输入库所中插入一个小黑点作为托肯,并把下面的通道插入到持有者库所中去:

①把 ζ( α)插入到每个 α标记的持有者库所中,其中 α domain( ζ);

②把 a. a. K插入到标签库所中,其中对于每一个 α known( ζ);

③把 n. N插入到标签库所中,其中 n C\ konwn( ζ);

④把 Δ. R插入到标签库所中,其中 Δ rstr( ζ)。

2.3 互模拟等价

本文定义了从递归π演算到Petri网的语义转换,从而产生了有限结构转换网—— N P,它是具有有限库所、变迁和弧的网结构,该递归结构的标号迁移系统 ItsP与转换后的Petri网所对应的标号迁移系统It 是强互模拟。

定理1 N p是具有有限库所、变迁和弧的Petri网图,并且使得ItsP和It 是互为强互模拟的标号迁移系统。

证明 基本π演算部分的Petri网语义等价证明在文献[ 12]中详细介绍了转换的思想、方法以及相关的语义等价证明,在此不再赘述。

关于递归结构的Petri网语义等价的证明采用数学归纳法。具体如下:

K为递归结构执行次数,即递归层数。

(1)当 K=1时,按照文中所述递归π演算向Petri网的转换方法,其直接转换为不带递归结构的基本π演算,其互模拟等价性是已知的。

(2)假设当 K= n时,从递归π演算向Petri网的转换具有互模拟等价性,那么证明当 K= n+1时互模拟等价仍成立。由于当 K= n时,前 n层的递归调用已经实现,即可以将前 n层递归调用得到的π演算表达式看做一个复杂无递归的基本π演算表达式,这样再加上第 n+1层的递归调用转化为(1)中的形式,此时 K'=1,符合(1)中所证互模拟等价。因此当 K= n+1时递归π演算向Petri网转化的互模拟等价性成立。证毕。

3 更简洁的Petri网表示

Petri网是一个很好的描述与分析并行系统的模型。但是当递归结构递归的次数较多时,会产生巨大的Petri网。尤其是在实际应用中,如果系统过大或较复杂时,会遇到结点数过多的情况。系统的组合状态数又随结点数成指数函数增长,这就是所谓的组合爆炸问题。解决结点数过多引起的组合爆炸问题的办法是尽量减少模型的结点个数。为了使转换后的Petri网较为简洁,本文给出了压缩的Petri网图,它保留了系统的语义,并编码完全相同的轨迹集合。

3.1 一种更简洁的Petri网表示

分析如式(2)形式的π演算的递归结构,如果该π演算表达式不满足递归出口条件,那么会循环执行自调用表达式之前的子表达式 P( a1,…, a n),执行过程大致如图5所示。

图5 π演算表达式递归结构执行图Fig.5 Execution of π calculus expression recursive structure

如果π演算表达式的递归结构执行多次,那么会产生巨大的Petri网,因此本文考虑将其进行简化,得到一种更简洁的Petri网表示。受图3启发,本文将典型π演算递归结构转换结果用全景图表示,如图6所示。

图6 一种更简洁的Petri网表示Fig.6 A more compact representation of Petri net

这里需要考虑以下几个问题:

对于递归出口之前每次执行的表达式 P(a1,…, a n),其每次具体执行是不一样的,我们在其前面用轨迹标记,表示按照轨迹 σ1, σ2,…, σn 执行,这里的轨迹是根据判定库所的变化一步一步生成的。然后在执行递归返回时, Q(a″1,…,a″n)按照轨迹 σ1, σ2,…, σn 的逆轨迹 σn, σn-1,…, σ1执行。

经过判断,只有执行P(a1,…,an)时,判定条件发生的改变,那么需要将与自调用表达式对应的网结构相连的弧改为表达式P(a1,…,an)对应的网结构与判定库所相连。

3.2 等价性证明

本文给出了 N p 的一种更简洁Petri网表示,记为 N c,它是具有有限库所、变迁和弧的网结构,保留了系统的语义,编码完全相同的轨迹集合。

定理2 N c是具有有限库所、变迁和弧的Petri网图,并且使得 N p N c编码完全相同的轨迹集合(激发顺序)。

证明 针对递归结构,分别从递归调用、递归出口及递归返回三部分考虑其执行的轨迹集合。

(1)对每次递归调用执行的表达式 P( a1,…, a n), N p N c 的执行轨迹均为{ σ1, σ2,…, σn}。

(2)对递归出口执行的表达式 R( b1,…, b n),由于只执行一次,因此其轨迹集合可以忽略。

(3)对递归返回表达式 Q( a1,…, a n), N p N c 的轨迹集合均为{ σn, σn-1,…, σ1}。证毕。

4 结束语

通过对π演算递归结构和Petri网的经典理论进行研究分析,本文首先给出了递归π演算的基本形式,然后将递归π演算向Petri网进行转换,并证明这种转换的互模拟等价性;随后针对多次递归的情况对由π演算递归结构转换得到的Petri网进行简化,得到了一种保持系统语义的、编码完全相同的轨迹集合的更简洁的Petri网,与原Petri网相比能够提高对于模型验证的效率,比如对移动系统的验证等。

The authors have declared that no competing interests exist.

参考文献
[1] Thomas E. Service-Oriented Architecture(SOA): Concepts, Technology, and Design[M]. New Jersey: PrenticeHall, 2005. [本文引用:1]
[2] Leymann F, Roller D, Schmidt M T. Web services and business process management[J]. IBM Systems Journal, 2002, 41(2): 198-211. [本文引用:1] [JCR: 1.792]
[3] Milner R, Parrow J, Walker D. A calculus of mobile processes part I/II[J]. Journal of Information and Computation, 1992, 100(1): 1-77. [本文引用:1]
[4] Milner R. Communication and Concurrent[M]. New Jersey: PreticeHall, 1989. [本文引用:1]
[5] Roland Meyer. A theory of structural stationarity in the π-Calculus[J]. Acta Informatica, 2009, 46: 87-137. [本文引用:1] [JCR: 0.474]
[6] Michele B, Davide S. A fully abstract semantics for causality in the Pi calculus[C]∥Proceedings of STACS'95, LNCS, Springer, 1995, 900: 243-254. [本文引用:1]
[7] Baeten J C M, Bergstra J A, Klop J W. An operational semantics for process algebra[J]. Mathematical Problems in Computation Theory, 1988, 21: 47-81. [本文引用:1]
[8] Eile B, Raymond D, Maciei K. Petri Net Algebra[M]. Bolin: Springer, 2001. [本文引用:1]
[9] Ulrich B, Daniel M. Object-oriented concepts for coloured Petri nets[C]∥IEEE International Conference on Systems, Man and Cybernetics, 1993, 3: 279-286. [本文引用:1]
[10] Peschanski F, Klaudel H, Devillers R. A Petri Net Interpretation of Open Reconfigurable Systems[C]∥PETRI NETS 2011, LNCS 6709, 2011: 208-227. [本文引用:2]
[11] Christensen S, Hansen N D. Coloured Petri nets extended with place capacities, test arcs and inhibitor arcs[J]. Application and Theory of Petri Nets, 1993, 691: 186-205. [本文引用:1]
[12] Raymond D, Hanna K, Maciej K. A compositional Petri net translation of general Pi calculus terms[J]. Formal Aspects of Computing, 2008, 20: 429-450. [本文引用:4] [JCR: 0.5]
[13] Peschanski F, Klaudel H, Devillers R. A decidable characterization of a graphical pi-calculus with iterators[C]∥In: Infinity. EPTCS, 2010, 39: 47-61. [本文引用:1]