inject |
Def Inj(A; B; f) == a1,a2:A. f(a1) = f(a2) B  a1 = a2
Thm* A,B:Type, f:(A B). Inj(A; B; f) Prop
|
int_seg |
Def {i..j } == {k: | i k < j }
Thm* m,n: . {m..n } Type
|
listify |
Def listify(f; m; n) == if n m nil else f(m).listify(f; m+1; n) fi (recursive)
Thm* T:Type, m,n: , f:({m..n } T). listify(f; m; n) T*
|
mem_f |
Def mem_f(T;a;bs) == Case of bs; nil False ; b.bs' b = a T mem_f(T;a;bs')
(recursive)
Thm* T:Type, a:T, bs:T*. mem_f(T;a;bs) Prop
|
nat |
Def == {i: | 0 i }
Thm* Type
|
select |
Def l[i] == hd(nth_tl(i;l))
Thm* A:Type, l:A*, n: . 0 n  n < ||l||  l[n] A
|
lelt |
Def i j < k == i j & j < k
|
nth_tl |
Def nth_tl(n;as) == if n 0 as else nth_tl(n-1;tl(as)) fi (recursive)
Thm* A:Type, as:A*, i: . nth_tl(i;as) A*
|
le_int |
Def i j ==  j < i
Thm* i,j: . i j 
|
le |
Def A B == B < A
Thm* i,j: . i j Prop
|
hd |
Def hd(l) == Case of l; nil "?" ; h.t h
Thm* A:Type, l:A*. ||l|| 1  hd(l) A
|
lt_int |
Def i < j == if i < j true ; false fi
Thm* i,j: . i < j 
|
bnot |
Def  b == if b false else true fi
Thm* b: .  b 
|
not |
Def A == A  False
Thm* A:Prop. ( A) Prop
|
tl |
Def tl(l) == Case of l; nil nil ; h.t t
Thm* A:Type, l:A*. tl(l) A*
|