Thm* M1,M2:MsgA.
Thm* M1 M2
Thm* 
Thm* ( k:Knd, l:IdLnk, tg:Id.
Thm* (M2.sframe(k sends <l,tg>)  M1.sframe(k sends <l,tg>)) | [ma-sframe-sub] |
Thm* M1,M2:MsgA.
Thm* M1 M2
Thm* 
Thm* ( k:Knd, l:IdLnk, s:M2.state, v:M2.da(k), i:Id, ms:(tg:Id
Thm* ( k:Knd, l:IdLnk, s:M2.state, v:M2.da(k), i:Id, ms:( if source(l) = i
Thm* ( k:Knd, l:IdLnk, s:M2.state, v:M2.da(k), i:Id, ms:( if M2.da(rcv(l; tg))
Thm* ( k:Knd, l:IdLnk, s:M2.state, v:M2.da(k), i:Id, ms:( else Top fi) List.
Thm* (M2.send(k;l;s;v;ms;i)  M1.send(k;l;s;v;ms;i)) | [ma-send-sub] |
Thm* l:IdLnk, tg:Id, L:Knd List. only L sends on (l with tg) MsgA | [ma-single-sframe_wf] |
Thm* M:MsgA, k:Knd, l:IdLnk, tg:Id. M.sframe(k sends <l,tg>) Prop | [ma-sframe_wf] |
Thm* M:MsgA, l:IdLnk. M sends on link l  | [ma-sends-on_wf] |
Thm* M:MsgA, k:Knd, l:IdLnk, s:M.state, v:M.V(k), i:Id, ms:(tg:Id
Thm* M:MsgA, k:Knd, l:IdLnk, s:M.state, v:M.V(k), i:Id, ms:( if source(l) = i
Thm* M:MsgA, k:Knd, l:IdLnk, s:M.state, v:M.V(k), i:Id, ms:( if M.da(rcv
Thm* M:MsgA, k:Knd, l:IdLnk, s:M.state, v:M.V(k), i:Id, ms:( if (l; tg))
Thm* M:MsgA, k:Knd, l:IdLnk, s:M.state, v:M.V(k), i:Id, ms:( else Top fi) List.
Thm* M.send(k;l;s;v;ms;i) Prop | [ma-send_wf] |
Thm* M:MsgA, l:IdLnk, tg:Id. M.dout(l,tg) Type | [ma-dout_wf] |
Thm* M:MsgA, l:IdLnk, tg:Id. M.din(l,tg) Type | [ma-din_wf] |
Thm* M:MsgA, i:Id. ma-outlinks(M;i) (IdLnk Id Type) List | [ma-outlinks_wf] |
Thm* ltg:(IdLnk Id Type), i:Id, da1,da2:k:Knd fp-> Type.
Thm* (ltg da-outlinks(da1 da2;i))
Thm* 
Thm* (ltg da-outlinks(da1;i)) (ltg da-outlinks(da2;i)) | [da-outlinks-join] |
Thm* ltg:(IdLnk Id Type), i:Id, k:Knd, T:Type.
Thm* (ltg da-outlinks(k : T;i))
Thm* 
Thm* isrcv(k) & source(lnk(k)) = i
Thm* & (1of(ltg) ~ lnk(k))
Thm* & (1of(2of(ltg)) ~ tag(k))
Thm* & 2of(2of(ltg)) = T | [da-outlinks-single] |
Thm* da:k:Knd fp-> Type, i:Id. da-outlinks(da;i) (IdLnk Id Type) List | [da-outlinks_wf] |
Thm* da:k:Knd fp-> Type, k:{k:Knd| k dom(da) & isrcv(k) }.
Thm* da-outlink-f(da;k) IdLnk Id Type | [da-outlink-f_wf] |
Def PossibleWorld(D;w)
Def == FairFifo
Def == & ( i,x:Id. vartype(i;x) r M(i).ds(x))
Def == & & ( i:Id, a:Action(i).
Def == & & ( isnull(a)  (valtype(i;a) r M(i).da(kind(a))))
Def == & & ( l:IdLnk, tg:Id. (w.M(l,tg)) r M(source(l)).da(rcv(l; tg)))
Def == & & ( i,x:Id. M(i).init(x,s(i;0).x))
Def == & & ( i:Id, t: .
Def == & & ( isnull(a(i;t))
Def == & & (
Def == & & (( islocal(kind(a(i;t)))
Def == & & ((
Def == & & ((M(i).pre(act(kind(a(i;t))), x.s(i;t).x,val(a(i;t))))
Def == & & (& ( x:Id.
Def == & & (& (M(i).ef(kind(a(i;t)),x, x.s(i;t).x,val(a(i;t)),s(i;t+1).x))
Def == & & (& ( l:IdLnk.
Def == & & (& (M(i).send(kind(a(i;t));l; x.
Def == & & (& (s(i;t).x;val(a(i;t));withlnk(l;m(i;t));i))
Def == & & (& ( x:Id.
Def == & & (& ( M(i).frame(kind(a(i;t)) affects x)
Def == & & (& (
Def == & & (& (s(i;t).x = s(i;t+1).x M(i).ds(x))
Def == & & (& ( l:IdLnk, tg:Id.
Def == & & (& ( M(i).sframe(kind(a(i;t)) sends <l,tg>)
Def == & & (& (
Def == & & (& (w-tagged(tg; onlnk(l;m(i;t))) = nil Msg List))
Def == & & ( i,a:Id, t: .
Def == & & ( t': .
Def == & & (t t'
Def == & & (&  isnull(a(i;t')) & kind(a(i;t')) = locl(a)
Def == & & (& a declared in M(i)
Def == & & (& unsolvable M(i).pre(a, x.s(i;t').x)) | [possible-world] |
Def d-feasible(D)
Def == ( i:Id. Feasible(M(i)))
Def == & ( l:IdLnk, tg:Id.
Def == & (M(source(l)).dout(l,tg) r M(destination(l)).din(l,tg))
Def == & ( i:Id.
Def == & (finite-type({l:IdLnk
Def == & (finite-type({| destination(l) = i & M(source(l)) sends on link l })) | [d-feasible] |