con_free_g |
Def ConFreeG(G)
== i:||G.prod||. (a:V. [inl(a)] = 1of(G.prod[i]) (V+T List)) & ||2of(G.prod[i])|| > 0
Thm* V,T:Type, G:Grammar(V;T). ConFreeG(G) Prop |
g_prod |
Def g.prod == 1of(g)
Thm* V,T:Type, g:Grammar(V;T). g.prod ((V+T List)(V+T)*)* |
select |
Def l[i] == hd(nth_tl(i;l))
Thm* A:Type, l:A*, n:. 0n n < ||l|| l[n] A |
pi2 |
Def 2of(t) == t.2
Thm* A:Type, B:(AType), p:a:AB(a). 2of(p) B(1of(p)) |
list_p |
Def T List == {l:(T*)| ||l|| > 0 }
Thm* T:Type. (T List) Type |
length |
Def ||as|| == Case of as; nil 0 ; a.as' ||as'||+1 (recursive)
Thm* A:Type, l:A*. ||l|| Thm* ||nil|| |
gt |
Def i > j == j < i
Thm* i,j:. i > j Prop |
pi1 |
Def 1of(t) == t.1
Thm* A:Type, B:(AType), p:a:AB(a). 1of(p) A |
int_seg |
Def {i..j} == {k:| i k < j }
Thm* m,n:. {m..n} Type |
nth_tl |
Def nth_tl(n;as) == if n0 as else nth_tl(n-1;tl(as)) fi (recursive)
Thm* A:Type, as:A*, i:. nth_tl(i;as) A* |
hd |
Def hd(l) == Case of l; nil "?" ; h.t h
Thm* A:Type, l:A*. ||l||1 hd(l) A |
lelt | Def i j < k == ij & j < k |
tl |
Def tl(l) == Case of l; nil nil ; h.t t
Thm* A:Type, l:A*. tl(l) A* |
le_int |
Def ij == j < i
Thm* i,j:. ij |
le |
Def AB == B < A
Thm* i,j:. ij Prop |
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 |
About: