Thm* i:Id, M:{M:MsgA| Feasible(M) }. @i: M System | [m-sys-at_wf] |
Thm* D:Dsys, L:Id List.
Thm* ( i:Id. (i L) ma-is-empty(M(i)))
Thm* 
Thm* ( i:Id. Feasible(M(i)))
Thm* 
Thm* ( i L.( ltg ma-outlinks(M(i);i).(destination(1of(ltg)) L)
Thm* ( i L.( ltg ma-outlinks(M(i);i).
Thm* interface-check(D;1of(ltg);1of(2of(ltg));2of(2of(ltg)))))
Thm* 
Thm* d-feasible(D) | [finite-support-feasible] |
Thm* k:Knd, l:IdLnk, ds:x:Id fp-> Type, da:a:Knd fp-> Type,
Thm* f:(tg:Id State(ds) ma-valtype(da; k) (da(rcv(l; tg))?Void List)) List.
Thm* x dom(ds). A=ds(x)  A
Thm* 
Thm* k dom(da). A=da(k)  A  Feasible(ma-single-sends(ds; da; k; l; f)) | [ma-single-sends-feasible] |
Thm* a:Id, T,A:Type, x:Id, P:(A T Prop).
Thm* T
Thm* 
Thm* A
Thm* 
Thm* ( a:A. Dec( v:T. P(a,v)))  Feasible(ma-single-pre1(x;A;a;T;x,v.P(x,v))) | [ma-single-pre1-feasible] |
Thm* a:Id, T:Type, ds:x:Id fp-> Type, P:(State(ds) T Prop).
Thm* T
Thm* 
Thm* x dom(ds). A=ds(x)  A
Thm* 
Thm* ( s:State(ds). Dec( v:T. P(s,v)))
Thm* 
Thm* Feasible((with ds: ds
Thm* Faction a:T
Thm* Fprecondition a(v) is
Thm* FP s v)) | [ma-single-pre-feasible] |
Thm* x:Id, k:Knd, A,T:Type, f:(A T A).
Thm* A  T  Feasible(ma-single-effect0(x;A;k;T;f)) | [ma-single-effect0-feasible] |
Thm* x:Id, k:Knd, ds:x:Id fp-> Type, da:a:Knd fp-> Type,
Thm* f:(State(ds) ma-valtype(da; k) ds(x)?Void).
Thm* x dom(ds). A=ds(x)  A
Thm* 
Thm* k dom(da). A=da(k)  A  Feasible(ma-single-effect(ds; da; k; x; f)) | [ma-single-effect-feasible] |
Thm* x:Id, c:T, a:Id, P:(T T' Prop).
Thm* T'
Thm* 
Thm* ( u:T. Dec( v:T'. P(u,v)))
Thm* 
Thm* Feasible(ma-single-pre-init1(x;T;c;a;T';x,v.P(x,v))) | [ma-single-pre-init1-feasible] |
Thm* L:MsgA List. ( A,B L.A ||+ B)  ( A L.Feasible(A))  Feasible( (L)) | [ma-join-list-feasible] |
Thm* A,B:MsgA.
Thm* A || B
Thm* 
Thm* ma-frame-compatible(A; B)
Thm* 
Thm* ma-sframe-compatible(A; B)  Feasible(A)  Feasible(B)  Feasible(A B) | [ma-join-feasible] |
Def System == {M:(Id MsgA)| loc:Id. Feasible(M(loc)) } | [msystem] |