append |
Def as @ bs == Case of as; nil bs ; a.as' a.(as' @ bs) (recursive)
Thm* T:Type, as,bs:T*. (as @ bs) T*
|
firstn |
Def firstn(n;as)
== Case of as; nil nil ; a.as' if 0 < n a.firstn(n-1;as') else nil fi
(recursive)
Thm* A:Type, as:A*, n: . firstn(n;as) A*
|
int_iseg |
Def {i...j} == {k: | i k & k j }
Thm* i,j: . {i...j} Type
|
length |
Def ||as|| == Case of as; nil 0 ; a.as' ||as'||+1 (recursive)
Thm* A:Type, l:A*. ||l||
Thm* ||nil|| 
|
nat |
Def == {i: | 0 i }
Thm* Type
|
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 
|
lt_int |
Def i < j == if i < j true ; false fi
Thm* i,j: . i < j 
|
le |
Def A B == B < A
Thm* i,j: . i j Prop
|
tl |
Def tl(l) == Case of l; nil nil ; h.t t
Thm* A:Type, l:A*. tl(l) A*
|
not |
Def A == A  False
Thm* A:Prop. ( A) Prop
|
bnot |
Def  b == if b false else true fi
Thm* b: .  b 
|