Thm* A:Type, B:(A Type), f:a:A fp-> B(a), eq:EqDecider(A), x:A.
Thm* x dom(f)  f(x) B(x) | [fpf-ap_wf] |
Thm* B:(A Type), f:x:A fp-> B(x). fpf-is-empty(f)  f = x:A fp-> B(x) | [assert-fpf-is-empty] |
Thm* A:Type, B:(A Type). x:A fp-> B(x) | [fpf-empty_wf] |
Thm* eq:EqDecider(Y), f:x:X fp-> Top, x:Y.
Thm* strong-subtype(X;Y)  x dom(f)  x X | [fpf-dom-type2] |
Thm* eq:EqDecider(Y), f:x:X fp-> Top, x:Y.
Thm* strong-subtype(X;Y)  x dom(f)  x X | [fpf-dom-type] |
Thm* eq1,eq2:EqDecider(A), f:a:A fp-> Top, x:A. x dom(f)  x dom(f) | [fpf-dom_functionality2] |
Thm* B:(A Type), eq1,eq2:EqDecider(A), f:a:A fp-> B(a), x:A.
Thm* x dom(f) = x dom(f)  | [fpf-dom_functionality] |
Thm* B1:(A1 Type), B2:(A2 Type).
Thm* strong-subtype(A1;A2)
Thm* 
Thm* ( a:A1. B1(a) r B2(a))  (a:A1 fp-> B1(a) r a:A2 fp-> B2(a)) | [subtype-fpf3] |
Thm* B1,B2:(A Type).
Thm* ( a:A. B1(a) r B2(a))  (a:A fp-> B1(a) r a:A fp-> B2(a)) | [subtype-fpf2] |