Page 1
A Theoretical Basis of Communication-Centred Programming for Web Service
Nobuko Yoshida (Imperial) Kohei Honda (Queen Mary)
TiC’2006, July 2006
A Theoretical Basis of Communication-Centred Programming for Web - - PowerPoint PPT Presentation
Page 1 A Theoretical Basis of Communication-Centred Programming for Web Service Nobuko Yoshida (Imperial) Kohei Honda (Queen Mary) TiC2006 , July 2006 Page 2 In Collaboration with: Marco Carbone (Queen Mary) Vasco Vasconcelos (Lisbon)
Page 1
TiC’2006, July 2006
Page 2
Page 3
Language
Page 4
Scenario: Item Purchasing
(Typical W3C example)
Page 5
= ⇒ use the π-calculus as an underlying formal model
Web Services? = ⇒ use the type theory of the π-calculus (session types) for structured programming of communication and concurrency
= ⇒ use a semantics, type and structured preserving translation from Web Service languages to the π-calculus
Page 6
(Honda and Tokoro 1991, Boudol 1992) P ::= 0 | a(x).P | ab | P|Q | (νx)P | !a(x).P
P ::= 0 | a(x).P | a(b).0 | P|Q | P\{x} | A
def
= P
Page 7
Interaction = Synchronisation (a.P+R)|(a.R+Q) − → P|R
Interaction = (Synchronisation and) Name-Passing a(x).P|ab − → P{b/x}
Page 8
(νx)P|Q = ((νx)P)|Q
(νy)!a(x).P = (νy)(!a(x).P).
a(x).x(z).0
Page 9
significance
Boudol 1991)
P|Q ≡ Q|P (P|Q)|R ≡ P|(Q|R)
(νxx)P ≡ (νx)P (νxy)P ≡ (νyx)P
(x ∈ fn(Q))
Page 10
≡ (νz′)(xz′|z′(w).cw|x(y).zy)
Page 11
Com x(y).P|xv − → P{v/y} Rep !x(y).P|xv − → P{v/y}|!x(y).P Par P − → P′ P|Q − → P′ |Q Res P − → P′ (νx)P − → (νx)P′ Struct Q ≡ P P − → P′ P′ ≡ Q′ Q − → Q′
Page 12
Let FW(ab) =!a(x).bx. Then FW(ab)|av − → bv|FW(ab).
→ FW(ab)|bv|aw − → FW(ab)|bv|bw We also have: FW(ab)|av|aw − → FW(ab)|av|bw − → FW(ab)|bv|bw
− → FW(ab)|bv|FW(bc) − → FW(ab)|FW(bc)|cv.
Page 13
≡ (νx)(ax|x(y).dy|a(z).zw) ≡ (νx)(x(y).dy|ax|a(z).zw) − → (νx)(x(y).dy|xw) − → (νx)dw ≡ dw.
Page 14
Page 15
def
= (νx)!a(y).yx N(a)|ab|ac − →− → N(a)|(νx)bx|(νx)cx
FW(aa)|av − → FW(aa)|av
def
= (FW(ab)|FW(ba)). Note that EQ(ab) ≡ EQ(ba). EQ(ab)|av EQ(ab)|ca ∼ = EQ(ab)|cb
Page 16
def
= a(x).(bx|cx) D(abcd)
def
= (νc1)(D(abc1)|D(c1cd))
def
= a(x).0
def
= a(x).FW(xb)
def
= a(x).FW(bx)
def
= a(x).FW(bc)
Page 17
Page 18
P ::= 0 | a(x).P | ab.P | P|Q | (νx)P | !a(x).P
→ P{v/y}|Q.
(x(y).P)⋆ = (νc)(xc|c(y).P⋆) (xv.P)⋆ = x(y).(yv|P⋆)
Page 19
P ::= a(x1,x2,...,xn).P | ab1,b2,...,bn.P | !a(x1,x2,...,xn).P | ···
− → P{v1/y1}{v2/y2}...{vn/yn}|Q.
(x(y1,y2,...,yn).P)∗ = x(c).c(y1).c(y2)...c(yn).P∗. (xv1,v2,...,vn.P)∗ = x(c).cv1.cv2...cvn.P∗.
Page 20
(x(y1,y2,...,yn).P)∗ = x(y1).x(y2)...x(yn).P∗. (xv1,v2,...,vn.P)∗ = xv1.xv2...xvn.P∗.
a(˜ x1);˜ b2;...;(˜ xn−1);˜ bn;P a˜ b1;(˜ x2);...;˜ bn−1;(˜ xn);P
Page 21
P ::= a[(x1).P1&(x2).P2] | !a[(x1).P1&(x2).P2] | ainlb.P | ainrb.P···
→ P1{b/x1}|Q a[(x1).P1&(x2).P2]|ainrb.Q − → P2{b/x2}|Q
(a[(x1).P1&(x2).P2])◦ = a(c).c(c1c2).(c1(x1).P◦
1 |c2(x2).P◦ 2)
(ainlb.Q)◦ = a(c).c(c1c2).c1b.Q◦
Page 22
Tru(a) = !a(x).inl Fls(a) = !a(x).inr
If a then P else Q = a(c)c[().P & ().Q]
→ P If a then P else Q|Fls(a) − → Q
(ainl)◦ = a(c)c(c1c2).c1 (ainr)◦ = a(c)c(c1c2).c2
Page 23
Page 24
Page 25
interaction in communication-centric distributed software.
protocols (can be done at run-time or by type inference)
Page 26
Kubo) [PARL94]
[ESOP98]
05]
[PADL04]
Page 27
Ravara and Gay) [CONCUR04]
Gunter) [JFP05]
Drossopoulou) [TCG05]
Working Group)
ahndrich et. al) [EuroSys06]
Page 28
Yoshida and Drossopoulou [ECOOP06]
(Carbone, Honda and Yoshida) [DCM06]
Vasconcelos) [SeCReT06]
Garralda) [PPDP06]
Page 29
Shared (a,b,d,e,...) and Session (c,k,...)
a(k).P a(k).P, !a(k).P initiation ke1 ···en;P !k(x1 ···xn);P data k ✁l;P k ✄{l1 : P1[]···[]ln : Pn} label kk′;P k(k′);P delegation
Page 30
a(k).P1 | a(k).P2 → (νk)(P1 | P2)
k˜ e;P1 | k(˜ x);P2 → P1 | P2[˜ v/˜ x] with ei →∗ vi
k ✁li;P | k ✄{l1 : P1[]···[]ln : Pn} → P | Pi
kk′;P1 | k(k′);P2 → P1 | P2
Page 31
kapple;P1 | k(x);k′1+x
k1;P1 | k(x,y);k′x+y
Page 32
S ::= nat | bool | α,α α ::= ↓˜ S; α | ↓α; β | &{l1 : α1,...,ln : αn} | end | ⊥ | ↑˜ S; α | ↑α; β | ⊕{l1 : α1,...,ln : αn} | t | µt.α
↑˜ S; α =↓˜ S;α ⊕{li : αi} = &{li : αi} ↑α; β =↓α;β end = end t = t µt.α = µt.α
Page 33
Shared (a:S,b:S′,...) Linear (k:α,k′ :β,...) Key Point a composition of ∆1 and ∆2 is defined if all common channels (k in S = dom(∆1)∩dom(∆2)) are dual. k(x);0 | kv | kw k:α k:α k:α k:⊥ k:α ∆1 ◦∆2 = {k:⊥ | k ∈ S}∪(∆1 ∪∆2)\S
Page 34
Γ·a:S ⊢ a⊲S Γ ⊢ 1⊲nat Γ ⊢ ei ⊲nat Γ ⊢ e1 +e2 ⊲nat
Γ ⊢ 0⊲∆ where ∆’s codomain is ⊥ or end.
Γ ⊢ a⊲α,α Γ ⊢ P⊲∆·k: α Γ ⊢ a(k).P⊲∆ Γ ⊢ a⊲α,α Γ ⊢ P⊲∆·k: α Γ ⊢ a(k).P⊲∆
Page 35
Γ ⊢ ˜ e⊲ ˜ S Γ ⊢ P⊲∆·k: α Γ ⊢ k˜ e;P⊲∆·k:↑˜ S; α Γ· ˜ x: ˜ S ⊢ P⊲∆·k:α Γ ⊢ k(˜ x);P⊲∆·k:↓˜ S; α
Γ ⊢ P⊲∆·k: β Γ ⊢ kk′;P⊲∆·k:↑α; β·k′ :α Γ ⊢ P⊲∆·k:β·k′ :α Γ ⊢ k(k′);P⊲∆·k:↓α; β
Page 36
Γ ⊢ P1 ⊲∆·k:α1 ··· Γ ⊢ Pn ⊲∆·k:αn Γ ⊢ k ✄{l1 : P1[]···[]ln : Pn}⊲∆·k:&{l1 : α1,...,ln : αn} Γ ⊢ P⊲∆·k:αj Γ ⊢ k ✁lj;P⊲∆·k: ⊕{l1 : α1,...,ln : αn}
Γ ⊢ P⊲∆ Γ ⊢ Q⊲∆′ Γ ⊢ P | Q⊲∆◦∆′ (∆ ≍ ∆′)
Γ·a:S ⊢ P⊲∆ Γ ⊢ (νa)P⊲∆ Γ ⊢ P⊲∆·k:⊥ Γ ⊢ (νk)P⊲∆ Γ ⊢ P⊲∆·k:end Γ ⊢ P⊲∆·k:⊥
Page 37
Γ ⊢ P⊲∆ and P ≡ Q imply Γ ⊢ Q⊲∆.
Γ ⊢ P⊲∆ and P →∗ Q imply Γ ⊢ Q⊲∆.
A typable program never reduces into an error.
Page 38
Γ = a:α,α,e:↑string,↓string,d:↑nat,↓nat α = ⊕{true,false} Γ ⊢ 0 ⊲ / Γ ⊢ a:α,α Γ ⊢ k ✁true ⊲ k:α Γ ⊢!a(k).k ✁true ⊲ /
Page 39
Γ ⊢ eapple ⊲ / Γ ⊢ d1 ⊲ / Γ ⊢ a:α,α Γ ⊢ k ✄{true : eapple [] false : d1} ⊲ k:α Γ ⊢ a(k).k ✄{true : eapple [] false : d1} ⊲ /
Page 40
a(k).kc;c(y);cy×3 a(k).k(c);b(k′).k′c;k′(y);ey+100 b(k′).k′(c);c2;c(z);k′z+3
Page 41
a(k).kc;c(y);y×3 a(k).k(c);b(k′).k′c;(y);ey+100 b(k′).k′(c);c2;(z);k′z+3
Page 42
b:α,α,z:nat ⊢ k′z+3 ⊲ k′ :↑nat b:α,α ⊢ c(z);k′z+3 ⊲ c:↓nat, k′ :↑nat b:α,α ⊢ c2;c(z);k′z+3 ⊲ c:↑nat;↓nat, k′ :↑nat b:α,α ⊢ k′(c);c2;c(z);k′z+3 ⊲ k′ :↓(↑nat;↓nat);↑nat b:α,α ⊢ b(k′).k′(c);c2;c(z);k′z+3 ⊲ /
Page 43
↑⊕{id:↓double; ⊕{accept:↑β;↑double;↓receipt, reject}} β =↑address;↓goods Buyer’s viewpoint of the Buyer-Seller interaction
Page 44
↑⊕{id:↑β} Seller’s viewpoint of the Seller-Shipper interaction
Page 45
Type unchanged
Page 46
Type unchanged
Page 47
Buyer a(c1).c1 ✁id;c1(y);
if y < 100 then
c1 ✁accept;c1k;kAddress;k(y);c1100;c1(z);P
else
c1 ✁reject;
Page 48
Buyer a(c1).c1 ✁id(y);
if y < 100 then
c1 ✁acceptk;kAddress;(y);c1100;(z);P
else
c1 ✁reject;
Page 49
Seller a(c1).c1 ✄{id : c110; c1 ✄{accept : c1(k); b(c2).c2 ✁id;c2k;c1(y);c1receipt [] reject : Q}}
Page 50
Seller a(c1).c1 ✄{id10; c1 ✄{accept(k) b(c2).c2 ✁idk;c1(y);receipt; [] reject : Q}}
Page 51
Modest Buyer a(c1).c1 ✁id;c1(y);
if y < 100 then
c1 ✁accept;c1k;c1100;c1(z);kAddress;k(y);P
else
c1 ✁reject;
Page 52
Modest Buyer a(c1).c1 ✁id(y);
if y < 100 then
c1 ✁acceptk;100;(z);kAddress;(y);P
else
c1 ✁reject;
Page 53
precise
contains too much information, and is inconvenient for programmers to directly write a global scenario.
Page 54
Part 2 Web Services and the π-Calculus
Page 55
Davide Sangiorgi and David Walker
Robin Milner
Structured Communication-Based Programming Honda, Vasconcelos and Kubo [ESOP98]