NDA_init |
Def I(n) == 1of(2of(n))
Thm* Alph,States:Type, n:NDA(Alph;States). I(n) States
|
hd |
Def hd(l) == Case of l; nil "?" ; h.t h
Thm* A:Type, l:A*. ||l|| 1  hd(l) A
|
nd_automata |
Def NDA(Alph;States) == (States Alph States Prop) States (States  )
Thm* Alph,States:Type{i}. nd_automata{i}(Alph;States) Type{i'}
|
pi1 |
Def 1of(t) == t.1
Thm* A:Type, B:(A Type), p:a:A B(a). 1of(p) A
|
reverse |
Def rev(as) == Case of as; nil nil ; a.as' rev(as') @ [a] (recursive)
Thm* T:Type, as:T*. rev(as) T*
|
pi2 |
Def 2of(t) == t.2
Thm* A:Type, B:(A Type), p:a:A B(a). 2of(p) B(1of(p))
|
append |
Def as @ bs == Case of as; nil bs ; a.as' a.(as' @ bs) (recursive)
Thm* T:Type, as,bs:T*. (as @ bs) T*
|