860 likes | 967 Vues
FM seminar UIUC, 6 Dec. 2002. Symbolic Equivalences for Open Systems. Roberto Bruni (Pisa – Illinois) Paolo Baldan (Pisa – Venezia) Andrea Bracciali (Pisa). Research supported by IST Programme on FET-GC Projects AGILE, MYTHS, SOCS Italian MIUR Project COMETA
E N D
FM seminar UIUC, 6 Dec. 2002 Symbolic Equivalences for Open Systems Roberto Bruni (Pisa – Illinois) Paolo Baldan (Pisa – Venezia) Andrea Bracciali (Pisa) • Research supported by • IST Programme on FET-GC Projects AGILE, MYTHS, SOCS • Italian MIUR Project COMETA • CNR Fellowship on Information Sciences and Technologies
Outline Ongoing Work! • Introduction & Motivation • Example: toy PC with ambients • Symbolic Bisimulation • Symbolic Transition Systems • Strict Symbolic Bisimilarity • Large & Irredundant Bisimilarity • Bisimulation by Unification • Conclusions • ( Traces ) • ( Duality, Related Work & Future Work )
Open Systems Evolve autonomously, interact via interfaces, programmable, … Ex. Web Services, WAN Computing, Mobile Code p q C[X1,X2,X3] r Components Coordinators
Interaction Components can be dynamically connected Ex. Access to Network Services (Typed) Holes: constrained dynamic binding C[p,q,r] Boundaries: access policies
The Problem Partially specified / partially known systems Behaviour defined via the possible instances Problem: how to reuse ordinary specification / analysis / verification techniques developed for “closed” systems?
General Goal Methodology for the formal analysis of open systems Focus on Process Calculi • Mathematical models of computation widely used for isolating and studying phenomena arising in concurrent languages (like -calculus for sequential computations) • Algebraic representations of processes (terms) • Components = Closed Terms • Coordinators = Contexts (holed processes) • Structural and Behavioural Equivalences Proposal: • Compact (Symbolic) LTS for open systems
Process Calculi Ingredients • Structure (,E): • Signature + Structural Axioms • Operational Semantics LTS/RS: • (SOS) inference rules for transitions/rewrites • Logic for expressing and proving properties • Specification & Verification Mostly devised for components!
Abstraction Equivalence on Components: p q • Bisimulation, Traces, May/Must Testing
Abstraction Equivalence on Components: p q • Bisimulation, Traces, May/Must Testing “Universal” Equivalence on Coordinators • C[X] univ D[X] iff p. C[p] D[p] (for simplicity, we consider one-holed contexts in most slides) • needs universal quantification!
a.b+a.c a.(b+c) a a a b c b+c b c b c 0 0 0 0 Bisimulation Focus on Bisimilarity (largest bisimulation): p q • if p –a p’ then q –a q’ with p’ q’ • (and vice versa)
p1 q1 a1 a1 an an pn qn Coordinators a1 a1 D[X] C[X] an an Graphically Components p q
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R Example: Ambients + Asynchronous CCS com. p ::= 0 | a’ | a.p | n[p] | open n.p | in n.p | out n.p | p|p Assume AC1 parallel composition, a unique label (omitted)
In Maude Notation I fmod CCSAmb is protecting MACHINE-INT . sorts Act Amb Proc . op n : MachineInt -> Amb . op a : MachineInt -> Act . op 0 : -> Proc . op _^ : Act -> Proc [frozen] . op _._ : Act Proc -> Proc [frozen] . op _[_] : Amb Proc -> Proc . op open(_)._ : Amb Proc -> Proc [frozen] . op in(_)._ : Amb Proc -> Proc [frozen] . op out(_)._ : Amb Proc -> Proc [frozen] . op _|_ : Proc Proc -> Proc [assoc comm id:0] .
In Maude Notation II vars N M : Amb . vars P Q R : Proc . vars A : Act . rl (N[P]) | (open(N) . Q) => P | Q . rl (N[P]) | (M[(in(N) . Q) | R]) => N[P | (M[Q | R])] . rl N[(P | (M[(out(N) . Q) | R]))] => (N[P]) | (M[(Q | R)]) . rl N[(A . P) | (A ^) | Q] => N[P | Q] . endfm
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Components n[a.0|a’]- n[0] -/ ? m[b.0|b’]- m[0] -/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Components n[a.0|a’]- n[0]-/ ? m[b.0|b’]- m[0] -/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Components n[a.0|a’] - n[0]-/ ? m[b.0|b’]- m[0]-/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Components n[a.0|a’] - n[0] -/ ? m[b.0|b’] - m[0]-/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Components n[a.0|a’] - n[0] -/ ? m[b.0|b’] - m[0] -/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Components n[a.0|a’] - n[0] -/ ? m[b.0|b’] - m[0] -/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Components n[a.0|a’] - n[0] -/ ? m[b.0|b’] - m[0] -/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Problem on Coordinators n[X] ? m[X]
Symbolic Approach Bisimulation Without Instantiation • Facilitate analysis & verification of coordinators’ properties Distinguishing Features • Symbolic LTS • states are coordinators • labels are spatial/modal formulae • Avoids universal closure • Allows for coalgebraic techniques • Constructive definition for Algebraic SOS and GSOS specs • (In general yields equivalences finer than univ )
Notation We start from a PC specified by • Syntax & Structural Equivalence: (,E) • T,E is the set of Components p,q,r, … • T,E(X) is the set of Coordinators C, D, … • C[X1,…,Xn] means var(C) {X1,…,Xn} • Labels: ranged by a,b,… • LTS:L(defined on T,E & ) • possibly defined via SOS inference rules
Symbolic Transition Systems Ordinary SOS approach: • Behavior of a coordinator can depend on: • The spatial structure of the components that are inserted/connected/substituted • The behavior of those components Idea: to borrow formulae from a suitable “logic” to express the most general class of components that can take part in the coordinators’ evolution
What Logic Do We Need? Formulae must express the minimal amount of information on components for enabling the step: • “Most general” active components needed for the step • Assumptions not only on the structure of components, but also on their behavior • Components not playing active role in the step
Spatial / Modal Formulae Logic L must include, as atomic formulae: • Place-holders (process variables) X: q╞ X • Components p: q╞ p iff q Ep We will also consider: • Spatial formulae (for operators f): • q╞ f(1,…,n) iff q1╞1… qn╞n. q E f(q1,…,qn) • Modality a (for labels a): • q╞a. iff p╞. q –a p
Symbolic Transitions Coordinators C[X] –(Y)a D[Y] intuitively: whenever p╞(q), then C[p] –a D[q] ( q is to some extent the residual of p after satisfying ) Formula Ordinary label
Symbolic Transitions: Examples • n[ X | a’ ] –a.Y n[Y] for any p E a.q, n[ p|a’ ] – n[q] • X1 | X2–.Y1,Y2 Y1 | Y2 for any p1– q1 and p2 , p1|p2 – q1|p2
p╞(q) Correctness STS C[X] –(Y)a D[Y] C[p] –a D[q] pi,qi. pi╞(qi) C[p1] –a D[q1] C[p2] –a D[q2] LTS L C[pn] –a D[qn] components that, plugged in C, can perform a
Completeness r EC[p] –a q LTS L ,s,D. C[X] –(Y)a D[Y] STS with p╞(s) and q E D[s]
Strict Bisimilarity Strict Bisimilarity: largest (strict) bisimulation s.t. C[X] –(Y)a C’[Y] strictstrict D[X] –(Y)a D’[Y] THEOREM: If the STS is correct & complete, then strict univ
Strict Bisimilarity Strict Bisimilarity: largest (strict) bisimulation s.t. C[X] –(Y)a C’[Y] strictstrict D[X] –(Y)a D’[Y] THEOREM: If the STS is correct & complete, then strict univ
Strict Bisimilarity Strict Bisimilarity: largest (strict) bisimulation s.t. C[X] –(Y)a C’[Y] strictstrict D[X] –(Y)a D’[Y] THEOREM: If the STS is correct & complete, then strict univ
Strict Bisimilarity Strict Bisimilarity: largest (strict) bisimulation s.t. C[X] –(Y)a C’[Y] strict strict D[X] –(Y)a D’[Y] THEOREM: If the STS is correct & complete, then strict univ
Strict Bisimilarity Strict Bisimilarity: largest (strict) bisimulation s.t. C[X] –(Y)a C’[Y] strict strict D[X] –(Y)a D’[Y] THEOREM: If the STS is correct & complete, then strict univ
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R Back to the Open Problem n[X] –Y|k[out n.Z|W]] n[Y]|k[Z|W] strict? m[X]
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R Back to the Open Problem n[X] –Y|k[out n.Z|W]]n[Y]|k[Z|W] strict? m[X]–Y|k[out n.Z|W]] –/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R Back to the Open Problem n[X] –Y|k[out n.Z|W]]n[Y]|k[Z|W] strict m[X]–Y|k[out n.Z|W]] –/
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R Back to the Open Problem n[X] univ m[X] (take X = k[out n.0])
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Last Problem n[m[out n.X]] –Y n[0]|m[0] strict? n[0]|m[a’|a.X] –Y n[0]|m[0]
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Last Problem n[m[out n.X]] –Y n[0]|m[Y] strict n[0]|m[a’|a.X] –Y n[0]|m[Y]
n[P]|open n.Q P|Q n[P]|m[in n.Q|R] n[P|m[Q|R]] n[P|m[out n.Q|R]] n[P]|m[Q|R] n[a.P|a’|Q] n[P|Q] P Q P Q n[P] n[Q] P|R Q|R A Last Problem n[m[out n.X]] strict n[0]|m[a’|a.X] n[m[out n.X]] univ n[0]|m[a’|a.X]
r.P –r P key1(X) –lock(r.Y) key1(Y)key1(X) ~strict~univ key2(X) –lock(r.Y) key2(Y)key2(X) ~strict~univ key3(X) –lock(r.Y) key3(Y)key3(X) key3(X) –lock(r.lock(Y)) key3(lock(Y))~strict~univ key1(X) keyi(lock(r.P)) – keyi(P) Is ~strict Too Fine? I p ::= 0 | r.p | lock(p) | key1(p) | key2(p) | key3(p) | … “Pathological” example:
r.P –r P key1(X)–lock(r.Y) key1(Y)key1(X) ~strict ~univ key2(X)–lock(r.Y) key2(Y)key2(X) ~strict ~univ key3(X)–lock(r.Y) key3(Y)key3(X) key3(X)–lock(r.lock(Y)) key3(lock(Y)) ~strict ~univ key1(X) keyi(lock(r.P)) – keyi(P) Is ~strict Too Fine? I p ::= 0 | r.p | lock(p) | key1(p) | key2(p) | key3(p) | … “Pathological” example:
r.P –r P key1(lock(X)) –r.Y key1(Y)key1(lock(X)) ~strict~univ key2(lock(X)) –r.Y key2(Y)key2(lock(X)) key2(lock(X)) –r.Y key2(Y)~strict~univ key3(lock(X)) key3(lock(X)) –r.Y key3(Y)~strict~univ key1(lock(X)) keyi(lock(r.P)) – keyi(P) Is ~strict Too Fine? II p ::= 0 | r.p | lock(p) | key1(p) | key2(p) | key3(p) | … “Pathological” example:
r.P –r P key1(lock(X))–r.Y key1(Y)key1(lock(X)) ~strict ~univ key2(lock(X))–r.Y key2(Y)key2(lock(X)) key2(lock(X))–r.Y key2(Y) ~strict ~univ key3(lock(X)) key3(lock(X))–r.Y key3(Y) ~strict ~univ key1(lock(X)) keyi(lock(r.P)) – keyi(P) Is ~strict Too Fine? II p ::= 0 | r.p | lock(p) | key1(p) | key2(p) | key3(p) | … “Pathological” example:
Large Bisimilarity Large Bisimilarity: largest (large) bisimulation s.t. C[X] –(Y)a C’[Y] large D’[(Y)] large D[X] –(Z)a D’[Z] (Y) = ((Y)) (Y) spatial THEOREM: If the STS is correct & complete, then large univ
Large Bisimilarity Large Bisimilarity: largest (large) bisimulation s.t. C[X] –(Y)a C’[Y] large D’[(Y)] large D[X] –(Z)a D’[Z] (Y) = ((Y)) (Y) spatial THEOREM: If the STS is correct & complete, then large univ
Large Bisimilarity Large Bisimilarity: largest (large) bisimulation s.t. C[X] –(Y)a C’[Y] large D’[(Y)] large D[X] –(Z)a D’[Z] (Y) = ((Y)) (Y) spatial THEOREM: If the STS is correct & complete, then large univ