750 likes | 891 Views
热烈庆贺西北大学 信息科学与技术学院成立五周年 计算机科学系成立三十周年!. 郝克刚. 2010.6.20. 我写给 各位同仁的 一封信. 推荐一本书: 2009.9 由科学院软件所林惠民院士翻译出版的 “通信与移动系统: π - 演算” 。 该书作者图灵奖得主 Robin Milner 为中译本所写的序言中,对中国学者给与了很大的期待:“作为在世界上发挥日益重要作用的伟大国家,中国具有引领 为新技术建立科学基础 的机会 …… 。” 我们西北大学一向具有 重视基础理论的优良传统 ,我衷心希望大家能够继续坚持这点优势,并向你们的学生强调学习理论的重要性。
E N D
热烈庆贺西北大学信息科学与技术学院成立五周年计算机科学系成立三十周年!热烈庆贺西北大学信息科学与技术学院成立五周年计算机科学系成立三十周年! 郝克刚
2010.6.20.我写给各位同仁的一封信 • 推荐一本书:2009.9由科学院软件所林惠民院士翻译出版的 “通信与移动系统:π-演算”。 • 该书作者图灵奖得主Robin Milner为中译本所写的序言中,对中国学者给与了很大的期待:“作为在世界上发挥日益重要作用的伟大国家,中国具有引领为新技术建立科学基础的机会……。” • 我们西北大学一向具有重视基础理论的优良传统,我衷心希望大家能够继续坚持这点优势,并向你们的学生强调学习理论的重要性。 • 我愿意同大家共享学习心得。
读几本经典的书 • 如果问中文系的老师、学生,你读过几遍红楼梦? • 计算机系的学生要读几本甚么样的经典图书? • 计算机科学是20世纪人类历史上最伟大的科技成就。 • 承担为新技术建立科学基础的重任。
实践和理论的关系 • 不能把这个循环简单化。这个循环可能要由很多人,甚至几代人分工来完成。 • 要允许理论研究暂时离开实践活动。 实践 理论
对学理论的几点心得 • 学理论的大敌,就是“急用先学、立竿见影”的功利主义。 • 不要在学理论时,总是不断地问:有什么用?有用才学,没用就不学。而是要下力气先学懂弄通。 • 要能静下心来,不是去简单背诵理论的结论,而是要顺着作者的逻辑,仔细品味理论背后的真谛,学习如何提出问题和解决问题的方法。 • 学理论要试着提出些问题,通过对问题的解决加深对理论的理解。
Pi演算(π-calculus)模型介绍及其 表达能力(Expressiveness)的研究 郝克刚
Pi 演算(π-calculus) • Pi 演算起源于上世纪80年代末,由图灵奖得主Robin Milner提出。 • 它是一种描述和分析并发系统的演算模型,用演算中的归约表示由进程间的相互通信形成的动态演化。
罗宾. 米勒Robin Milner 1991年ACM图灵奖获得者 professor of computation theory University of Edinburgh, University of Cambridge • LCF(logic for computable functions) • ML (Metalanguage)元语言,也称函数式语言 • CCS (calculus for communicating systems)通信系统演算 • 1989年提出 - calculus ( Milner, R., Parrow, J. and Walker, D. A calculus of mobile processes. 移动进程演算)
什么是演算 演算的三大要素 逻辑演算 -演算 -演算的基本概念 符号系统 -表达式的语法 -演算的演算规则 结构等同 规约 π-演算的一个重要特点,动态耦合系统 -演算介绍提纲
什么是演算? • 演算的起源, • 17世纪后期,德国哲学家莱布尼茨首先明确地提出了数理逻辑的指导思想。他设想能建立一“普遍的符号语言”,这种语言包含着“思想的字母”,每一基本概念应由一表意符号来表示。一种完善的符号语言又应该是一个“思维的演算”,他设想,论辩或争论可以用演算来解决。
演算系统 逻辑系统 逻辑思维 演算的例子 • 命题演算 – 命题逻辑 • 谓词演算 – 谓词逻辑 • 时态逻辑演算 – 时态逻辑 • -演算 – 可计算函数
构成演算的三大要素 • 符号系统 • 表达式的合式形成规则 • 演算(推演)规则 • 演算的表达能力、应用。
符号系统(Signature) • 系统中所用的符号,构成演算对象的基本元素。 • 例如,命题演算中的 • 命题变量:p,q,r,……命题连接词: , ,, , • 谓词演算中的 • 个体变量:x,y,z,……谓词:P,Q,R,…… • 全称、存在量词: ,。 • 时态逻辑演算中的 • 下一时刻算子o,必然算子,终于算子<>等。
表达式的形成规则 终结符 非终结符 • 形成合式表达式的语法规则。 • 通常使用BNF, EBNF。例如对于命题演算: <合式公式>:: =<命题变量> | <合式公式>| <合式公式> <命题连接词> <合式公式> <命题变量> ::= <字母> | <命题变量><字母> <命题连接词> ::= | | | <字母> ::= a | b |… | z 如,p q p q • 为避免歧义。合理使用括号和定义连接词优先。
演算、推演规则 例如命题演算的推演规则 p —————— p q q —————— p q —————— p p p —————— p p —————— p
-演算 – 可计算函数 • 语法规则 < -term> ::= <variable> | <variable> . < -term> | (< -term> < -term>) <variable> ::= f| g| h| … x| y| z| … • 语法规则可更简捷地写为: E ::= V | V.E | (E1 E2) V :: = f| g| h| … x | y | z | … 其中V是任意一个变量 , E i是任意一个 -表达式。 我们称 V是-表达式的 head , E是-表达式的 body. f . x .( f (f x))
自由变量的集合 • fv(E) 表示E中自由变量的集合 fv(x) = {x} fv( (E1E2) ) = fv (E1) U fv (E2) fv(λx.E) = fv (E) -{x} • 例如:f . x . f(n (fx) ) fv (f . x . f(n (fx) )) = fv (x . f(n (fx) )) –{f} = fv (f(n (fx) )) –{x} –{f}= fv (f) U fv (n (fx) ) –{x} –{f} ={f} U{n}Ufv ((fx) ) –{x} –{f} ={f} U{n}U{f} U{x}–{x} –{f} = {f,n,x}–{x} –{f} = {n}
h换成g x换成y 演算规则 h . x . ( h (h x) ) →g. x . (g (g x) ) →g. y . ( g (g y) ) • 归约规则 Reduction Rule • α-rule(换名): λx.E → λy.E [y/x] if y fv (E) • β-rule(作用,代入): ( λx.E Ea ) →E [Ea/x] if x fv (E) • η rule(消去): ( λx.E Ea ) → E if x fv (E) • 其中E[Ea /x] :对表达式 E,用 Ea 替换其中自由变量 x 的所有出现。 (g. y . (g (gy) )f) x →y . f (f y) x →f (f x) (y . (f (f z)) x ) →f (f z)
表达自然数上的函数 Succ 2 • ( n . f . x . f (n f x)) ( g . y . g (g y)) • f . x . f (g. y . g (g y) f x) • f . x . f (y . f (f y) x) • f . x . f (f (f x)) = 3 • 定义自然数(用 -表达式 来表达) define 0 = f . x . x define 1 = f . x . f x define 2 = f . x . f (f x) define 3 = f . x . f (f (f x)) …… • 定义后继函数 define Succ = n . f . x . f (n f x) • 验证 Succ 2 = 3
-演算理论的重要贡献 • 定义如此简捷的一个演算,它的功能竟然等同于所有的可计算函数(-演算等价于图灵机、递归函数、正规算法等) • 这是 20世纪计算机科学理论最重要的成就之一。 • 欣赏和品味抽象之美,简约之美。
罗宾. 米勒 的π演算 • The π-calculus是Robin Milner在下述演算系统的基础上建立的。 • Church’s λ-calculus 等价于 Turing Machines • CCS (calculus for communicating systems) - Robin Milner • CSP (communicating sequential processes) - Anthony Hoare
π- 演算的基本概念: • 符号、表达式、归约 • 在π-演算中最基本的元素是名字(name),名字有无穷多,记作: x,y,…∈ Name • 再一个概念就是进程( process,过程),进程是由名字按照下属语法(BNF,EBNF)构成的表达式
pi演算表达式的语法: • 进程 P ::= M |P|Q| !P | (vx)P • 和型 M::= 0 |π ۰P|M + M • 前缀 π ::= <y> | x(z)| τ 下面对它的语法和直观语义分别作些解释
前缀 π ::= <y> | x(z)| τ • 其中 π P的前缀 π有以下三种形式。直观地讲,前缀 π表示一个动作(action), 它是执行 π P的第一个动作。 • x(y) P,它将 y绑定到进程P,解释为:“在通道x上接受信息并交给进程P 的某个名字 y ”。 • <y> P,也可写为y P,它不绑定y到进程P,解释为:“将名字y 输出到通道x上”。如果只是同步,而不传送信息, y 可省略。 • P,解释为:“执行 P 的内部动作” 。
M::=0|π ۰P|M +M • M 称为 “和型 (Summation) ” 式,是进程的最基本的形式。M 用递归的方式定义。 • 0 是什么都不做的空进程,(若在和型式中,常被省略掉。) • 形如π P的项也是和型式。 • 有穷个0 或形如π P的项相加而成的表达式,也是和型式。自然它也可以写成 ∑i∈Iπi Pi=π1 P1 + π2 P2 +…+ πn Pn
π1 P1 +…+ πn Pn • 在这里, “和”的直观意思解释为在各个项中只选择一个项执行,其他选项将被抛弃。 • 选择是由“配对(redex)归约基”来实现的. 例如,下面的x(y)和 z就构成一个配对 x(y).P + w(y).R | z.Q 后面将会讲到,上式将归约为 →P[z/y] | Q • P[z/y]指用 z替换表达式P中自由变量 x的所有出现。
进程 P ::= M |P|Q | !P | (νx)P • P |Q称为并行,解释为独立并行执行的进程 ,它们之间可以通过通道通信。 • !P 称为重复(replication),等同于很多个进程P在并行执行:P |P|… 数量不受限制,根据需要动态产生。 • 一个最普通的例子是 ! zP ,它提供了一种需要时就产生的资源。 ! zP | x(y).Q | x(y).R →! zP | zP | zP | x(y).Q | x(y).R →! zP | P | P | Q[z/y] | R[z/y]
P ::= M |P|Q | !P | (νx)P • 最后, (νx)P,称为限制(restriction) 或新名字(new) 它限制名字 x只在 P 中有效,或者说它声明了一个只在P 中使用的名字x,它区别于 P 以外的任何名字,即使它同样叫 x但与此 x不同。 P =(νa)((a.Q1+b.Q2)| .0 )|( .R1+ .R2) P → (νa)(Q1)|( .R1+ .R2) 或P → (νa)(Q2)| .0 )|(R1) P ? → (νa)(Q1)| .0 )|(R2) X
结构等同structural congruence 我们称 两个进程R1 ,R2是结构等同的(structural congruence结构同余),记作 R1≡R2,如果R1 是由R2经过若干次下属转换或等式替换得来的: • 改变绑定名字( 转换)。 • P+Q≡ Q+P • P|0≡P, P|Q≡Q|P , (P|Q)|R≡ P|(Q|R) • !P≡P |!P • (νx)0≡ 0, (νx) (νy) P≡(νy) (νx)P • 如果 x 不在P中自由出现 (νx) (P |Q)≡P | (νx) Q
TAU内动 .P + M → P REACT 交互( x(y).P+M) | ( z.Q + N) →P [z/y] | Q 归约(reduction)规则 在进程表达式P, P’之间建立归约关系: P→ P’ • 两条公理 • 三条推理规则 P → P’ P → P’ PAR并行: ————————RES 限制: ————————— P | Q→ P’ | Q(νx) P → (νx) P’ P ≡ Q P → P’ P’≡ Q’ STRUCT 结构: ———————————————— Q → Q’
注意,有些是规则不允许的! • 受动作约束的项以及和项不能单独规约,例如 a.( x(y).P | z.Q) → a.( P [z/y] | Q ) • 我们并没有这样的规则 而是用结构等同推出: !P≡P |…|P |!P→nP’ |…|P’ | !P X P → P’ ——————— !P → !P’ X
P R Q π-演算的一个重要特点 • 通道名可以作为名字传送。 x(y). a.P | z.Q |z(w).R →a.P | Q | z(w).R → P | Q | R [a/w] • 动态耦合系统的模型
动态耦合系统的模型 • 固定结构和动态耦合系统 • E-mail, -- Add • Internet, SOA --URL • mobility,,移动通信。 • ……。
Petri网模型 • 诞生于上世纪六十年代,由德国学者C.A.Petri 在其博士论文中首次提出。它是面向并行系统建模的一种非常好的形式化。Petri网可以采用图形化的表示方法,具有直观的特点,另一方面它又有严格的数学定义,和一系列进行系统属性分析的方法。
用pi 演算和Petri网模型作为基础。 • 随着面向服务的计算(SOC,SOA)技术和业务流程管理(BPM)技术的发展和应用,不少学者用pi 演算和 Petri 网模型作为服务组合和工作流模式的严格的理论基础。 • 可信(Dependability)软件必须要以严格的理论作为基础。 • 但是究竟哪个更合适更好,存在者很大的争论。
Pi calculus or Petri nets ? SOA SOC BPEL BPM Workflow best foundation Pi calculus or Petri nets ?
表达能力(expressiveness) • 这就引起学术界关注探讨和研究这两个模型之间在表达能力(expressiveness)和适用性(suitability)等方面的关系和差异的问题。 • 因为只有研究清楚了模型的表达能力,才能更准确地确定它们的适用范围。
expressiveness Pi calculus Petri nets
用pi演算表达Petri网的研究 • 开展用pi演算表达Petri网的研究的目的是研究两个模型的表达能力(expressiveness)。 • 用相互表达的方法,可以细致地分析他们表达能力的差异。能表达的部分说明表达能力强的一面,不能表达的部分说明表达能力弱的一面。
研究的结论 • 研究的结论是两个模型各有所长各有所短。 • 某些Petri网的子集可以直接用Pi演算表达,一般的Petri网只要将Pi演算扩展到Pi+演算就可表达,甚至带抑止弧的Petri网也可用Pi+演算的某种扩展(加优先机制)表达。 • 但是由于Pi演算中通道名可以作为名字传送,因而能够表达结构松散的动态耦合系统,而Petri网模型中由于位置和转移的连接是固定的,较适合于表达结构固定的耦合系统,很难表达松散的动态耦合系统。 • 是否有倾向性呢,有,那就是,我们说Pi演算表达能力比Petri网强。
承认各有所长各有所短。 • 我们当前的研究的目的和结论仍然只能是尊重模型的多样性,承认各有所长各有所短。 • 研究表达能力的目的是明确各自模型的优势和劣势,确定模型的适应范围。这样的研究有助于应用中针对不同的要求,选择不同的模型。 • 但是表达能力的强弱只是模型属性的一个方面,例如Petri网虽然表达能力不强,但是它在简单、直观、有严格的分析方法等方面有其优势,所以仍然有其存在和应用的空间。 • 当前的研究结论绝不是选择一个而抛弃一个,或创造一个新的统一的模型去适应所有的情形。
Petri网的某些子集可以用pi演算直接表达 • 定理1.容量不限的不加权的S-网系统、自由选择网系统可以用Pi 演算表达。 • 定理2.容量不限的加权 T-网系统可以用Pi 演算表达。 • 现在简单介绍Petri网
Petri网(P/T网)系统 • N =(P,T,F,W,K,q0), • 其中P = {P1,…,Pm}(位置集),T = { T1,…,Tn }(转移集),满足P∩T = ∧, • F ⊆(P T)∪(T P)(边集) • W: F →N+ (边的权重) N+ = { 1,2,…} • K: P →N+∪{∝} (容量) • q0 : P →N (初始标识) N = { 0,1,2,…}
Wil van der Aalst的挑战 • 定理的证明就不具体陈述。关于用Pi 演算的表达仅用下面的例子给以简单说明。 • Wil van der Aalst在他的文章[11]对于力主使用Pi演算的人给出了7个挑战,其中第4个挑战就是具体给出了一个例子如图2,问如何容易地用Pi演算对它描述。
Q0= 1۰ 2۰0 | 1۰0 | 3۰0 | 2۰0 | 4۰0 T= g1۰g2۰ 3۰ 4۰T 用p 演算表达 Petri 网系统 !f3۰ 3۰0 !f1۰ 1۰0 !f2۰ 2۰0 !f4۰ 4۰0
每一位置Pi 表示为: Pi=!f i ۰ i۰0 (i=1,2,…11) 转移 a,…, h 描述如下: A= g1۰ 2۰ 3. A B= g2۰ 4۰B C= g3۰ 6۰ 7۰C D= g7۰ 9۰D E= g3۰ 5۰E F= g5۰ g6۰ 8۰F G= g8۰ 10۰G H= g9۰g10۰. 11۰H 初始标识:Q0 = 1.0 P1|…| P11| A|…| H| Q0
T1 = g1۰ 3۰ T1 T2 = g1۰ g2۰g2۰ 4۰ T2 T3 = g2۰ g2۰ 5۰ T3 一般 Petri 网的表达 T1 P3 P1 T2 P4 如果按照前面描述的方法表达,有可能出现阻塞。这与Petri网的激发规则不相符合。 P2 T3 P5
pi+演算, 一种对pi演算的扩展 • pi演算(π-calculus)是一个表达能力相当强的模型。然而在考虑如何用它来表示Petri网时,发现pi演算功能仍不够强,很难用其准确地描述Petri网中同步和竞争的组合,以及权重、容量等特性。 • 我们提出了一种对pi演算的扩展,称为pi+演算,增加了多原语同步通信机制。用pi+演算可以较准确地表示Petri网系统的动态行为,而且能更加细致地描述它丰富的动态语义。
pi演算的扩展 • pi+演算是在传统的pi演算的基础上,增加多原语同步通信机制 。 • pi演算中 <y>۰P | x (z)۰R → P | R [y/z] • 我们称 <y>为发送原语(send primitive), x (z)为接收原语(receive primitive), x是通道名,y是沿通道发送的数据,z是接收变量。
单对原语同步通信机制 <u>۰P | <v>۰ Q | x (z)۰y (w)۰R | y (z)۰ S → P | <v>۰ Q | y (w)۰ R[u/z] | y (z)۰ S → P | Q | R[u/z, v/w] | y (z)۰ S 或者 → P | Q | y (w)۰ R[u/z] | S [v/z]