Pairs
|
Thm* B:(A Type), p:(u:A B(u)). p = <p.1,p.2> a:A B(a)
|
Boolean
|
Thm* p,q: . (p q)  p & q
|
Unit
|
Thm* a:Unit. a =
|
Disjoint Union
|
Thm* z:A+B. z = InjCase(z; u. inl(u); v. inr(v))
|
Equality
|
Thm* ( x.x) = ( x.if x<0 0 ; x fi)   
Thm* ( x.x) ( x.if x<0 0 ; x fi)   
|
Intersection Types
|
Thm* B:(A Type), a:A. ( x:A. B(x)) B(a)
Thm* A:Type, B:Type(given A). A B Type
|
Quotient Types
|
Thm* 2 = 4 mod 2
|
Void
|
Thm* ( x.whatever) = ( x.x) Void A
|
Function Types
|
Thm* f:(A B). ( x.f(x)) = f
Thm* f,g:(A B). f = g  ( x:A. f(x) = g(x))
|
Polymorphism
|
Thm* f:(( mod 2) A). f   A
Thm* T:Type, f:( D:Type. D T). f(f) T
Thm* f:( D:Type. D T), A:Type, a:A, B:Type, b:B. f(a) = f(b) T
Thm* f:( C,D:Type. C D D C), A,B:Type, a:A, b:B. f(<a,b>) = <b,a> B A
Thm* A Top
|
Recursive Funs
|
Thm* x: . x!
Thm* mu {f:(   )| x: . f(x) } 
Thm* A:Type, n: . (A^n) Type
|
Recursive Types
|
Thm* A:Type. Sexpr(A) Type
Thm* a,b,c:X.
Thm* Reverse(Cons(Inj(a);Cons(Inj(b);Inj(c))))
Thm* =
Thm* Cons(Cons(Inj(c);Inj(b));Inj(a))
|
Propositions
|
Thm* A,B:Prop. (A & B) Prop
Thm* A:Type, P:(A Prop). ( x:A. P(x)) Prop
|
High-Order Props
|
Thm* A B  ( C:Prop. (A  C)  (B  C)  C)
|
Guarded Types
|
Thm* A:Prop, B:Prop(given A). (A & B) Prop
|
Type Functionality
|
Thm* A,B:Type{i}. A+B Type{i}
Thm* Type{i} Type{i'}
|
Prop Levels
|
Thm* Prop{i} Type{i'}
Thm* Prop{i} Prop{i'}
Thm* A,B:Prop{i}. ( C:Prop{i}. (A  C)  (B  C)  C) Prop{i'}
|
Type Conclusions
|
Thm* x:( List) {y: | y greater-bounds x }
|
Restricted Decls
|
Thm* k: . x:( k List) {y: (k+1)| y greater-bounds x }
|
Extraction
|
Thm* ext{sfa_doc_find_intlist_great_bound}
Thm* x:( List) {y: | y greater-bounds x }
|
Props as Types
|
Thm* P Q  ( x: . (x = 0  P) & (x 0  Q))
Thm* Dec(P)  ( b: . P  b)
|
Prop Witnesses
|
Thm* x: . y: . y y x & x<(y+1) (y+1)
|