Thm* a:Id, T:Type, ds:x:Id fp-> Type, P:(State(ds) T Prop).
Thm* (with ds: ds action a:T precondition a(v) is P s v) MsgA | [ma-single-pre_wf] |
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* ma-single-effect(ds; da; k; x; f) MsgA | [ma-single-effect_wf] |
Thm* ds,ds':ltg:Id fp-> Type. ds ds'  State(ds') State(ds) | [ma-state-subtype2] |
Thm* ds,ds':ltg:Id fp-> Type. ds ds'  (State(ds') r State(ds)) | [ma-state-subtype] |
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* 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] |
Thm* eq:EqDecider(T), f,g,h:x:T fp-> Type.
Thm* f || g
Thm* 
Thm* h || f
Thm* 
Thm* h || g
Thm* 
Thm* g h f g & f h f g & h g h f g & h f h f g | [fpf-compatible-triple] |
Thm* eq:EqDecider(A), P:(A Type Prop), f,g:x:A fp-> Type.
Thm* y dom(f). w=f(y)  P(y,w)
Thm* 
Thm* y dom(g). w=g(y)  P(y,w)  y dom(f g). w=f g(y)  P(y,w) | [fpf-all-join-decl] |
Thm* eq:EqDecider(A), B:(A Type), f,g,h:a:A fp-> B(a).
Thm* f || h  g || h  f g || h | [fpf-compatible-join2] |
Thm* eq:EqDecider(A), B:(A Type), f,g:a:A fp-> B(a). f || g  g || f | [fpf-compatible-symmetry] |
Thm* eq:EqDecider(A), B:(A Type), f,g,h:a:A fp-> B(a).
Thm* h || f  h || g  h || f g | [fpf-compatible-join] |
Thm* B:(A Type), eq:EqDecider(A), f,g:a:A fp-> B(a). f || g  g f g | [fpf-sub-join-right] |
Thm* B1,B2:(A Type), eq:EqDecider(A), f:a:A fp-> B1(a), g:a:A fp-> B2(a).
Thm* f f g | [fpf-sub-join-left] |
Thm* eq:EqDecider(A), f,g:a:A fp-> Top, x:A, z:Top.
Thm* f g(x)?z ~ if x dom(f) f(x)?z else g(x)?z fi | [fpf-join-cap-sq] |
Thm* B,C:(A Type), eq:EqDecider(A), f:a:A fp-> B(a), g:a:A fp-> C(a), x:A.
Thm* x dom(f)  f g(x) = f(x) B(x) | [fpf-join-ap-left] |
Thm* B:(A Type), eq:EqDecider(A), f,g:a:A fp-> B(a), x:A.
Thm* x dom(f g)  f g(x) = if x dom(f) f(x) else g(x) fi B(x) | [fpf-join-ap] |
Thm* A:Type, B:(A Type), f,g:a:A fp-> B(a), eq:EqDecider(A).
Thm* f g a:A fp-> B(a) | [fpf-join_wf] |
Thm* eq:EqDecider(X), f,g:x:X fp-> Type, x:X. f g  (f(x)?Void r g(x)?T) | [subtype-fpf-cap-void] |
Thm* eq:EqDecider(A), ds:x:A fp-> Type, x:A. ds(x)?Void r ds(x)?Top | [fpf-cap-void-subtype] |
Thm* eq:EqDecider(X), f,g:x:X fp-> Type, x:X. g f  (f(x)?T r g(x)?Top) | [subtype-fpf-cap-top] |
Thm* eq:EqDecider(X), f,g:x:X fp-> Type. g f  ( x:X. f(x)?Top r g(x)?Top) | [subtype-fpf-cap] |
Thm* B:(A Type), eq:EqDecider(A), f,g:a:A fp-> B(a). f = g  f g | [fpf-sub_weakening] |
Thm* B:(A Type), eq:EqDecider(A), f,g,h:a:A fp-> B(a). f g  g h  f h | [fpf-sub_transitivity] |
Thm* strong-subtype(A;A')
Thm* 
Thm* ( B:(A Type), C:(A' Type), eq:EqDecider(A), eq':EqDecider(A'),
Thm* ( f,g:a:A fp-> B(a). ( a:A. B(a) r C(a))  f g  f g) | [fpf-sub_functionality] |
Thm* strong-subtype(A;A')
Thm* 
Thm* ( B:(A Type), C:(A' Type), eq:EqDecider(A), eq':EqDecider(A'),
Thm* ( f,g:a:A fp-> B(a). ( a:A. B(a) r C(a))  f g  f g) | [fpf-sub-functionality] |
Thm* A:Type, f:a:A fp-> Type, eq:EqDecider(A), x:A, z:Type. f(x)?z Type | [fpf-cap-wf-univ] |
Thm* B:(A Type), f:a:A fp-> B(a). f a:A fp-> Top | [fpf-trivial-subtype-top] |
Thm* A:Type, B:(A Type), f:a:A fp-> B(a), eq:EqDecider(A), x:A, z:B(x).
Thm* f(x)?z B(x) | [fpf-cap_wf] |
Thm* A:Type, B:(A Type), f:a:A fp-> B(a), eq:EqDecider(A), x:A,
Thm* P:(a:{a:A| a dom(f) } B(a) Prop). z != f(x) ==> P(x,z) Prop | [fpf-val_wf] |