nd_auto_lang |
Def L(NDA)(l) == NDA(l)
Thm* Alph,St:Type, NDA:NDA(Alph;St). L(NDA) LangOver(Alph)
|
nd_accept_list |
Def NDA(l) == q:St. NDA(l) q & (F(NDA)(q))
Thm* Alph,St:Type, NDA:NDA(Alph;St), l:Alph*. NDA(l) Prop
|
nd_compute_list |
Def NDA(l) q
== if null(l) q = I(NDA) St
else t:St. NDA(tl(l)) t & NDA(t,hd(l),q) fi
(recursive)
Thm* Alph,St:Type, NDA:NDA(Alph;St), l:Alph*, q:St. NDA(l) q Prop
|
NDA_act |
Def n == 1of(n)
Thm* Alph,States:Type, n:NDA(Alph;States). n States Alph States Prop
|
auto_lang |
Def LangOf(DA)(l) == DA(l)
Thm* Alph,St:Type, A:Automata(Alph;St). LangOf(A) LangOver(Alph)
|
automata |
Def Automata(Alph;States) == (States Alph States) States (States  )
Thm* Alph,States:Type{i}. Automata(Alph;States) Type{i'}
|
decidable |
Def Dec(P) == P P
Thm* A:Prop. Dec(A) Prop
|
finite |
Def Fin(s) == n: , f:( n s). Bij( n; s; f)
Thm* T:Type. Fin(T) Prop
|
lang_eq |
Def L = M == l:Alph*. L(l)  M(l)
Thm* Alph:Type{i}, L,M:LangOver(Alph). L = M Prop{i'}
|
nd_automata |
Def NDA(Alph;States) == (States Alph States Prop) States (States  )
Thm* Alph,States:Type{i}. nd_automata{i}(Alph;States) Type{i'}
|
accept_list |
Def DA(l) == FinalState(DA)(Result(DA)l)
Thm* Alph,St:Type, A:Automata(Alph;St), l:Alph*. A(l) 
|
compute_list |
Def Result(DA)l
== if null(l) InitialState(DA) else DA((Result(DA)tl(l)),hd(l)) fi
(recursive)
Thm* Alph,St:Type, A:Automata(Alph;St), l:Alph*. (Result(A)l) St
|
DA_act |
Def a == 1of(a)
Thm* Alph,States:Type, a:Automata(Alph;States). a States Alph States
|
DA_init |
Def InitialState(a) == 1of(2of(a))
Thm* Alph,States:Type, a:Automata(Alph;States). InitialState(a) States
|
NDA_init |
Def I(n) == 1of(2of(n))
Thm* Alph,States:Type, n:NDA(Alph;States). I(n) States
|
pi1 |
Def 1of(t) == t.1
Thm* A:Type, B:(A Type), p:a:A B(a). 1of(p) A
|
assert |
Def b == if b True else False fi
Thm* b: . b Prop
|
int_seg |
Def {i..j } == {k: | i k < j }
Thm* m,n: . {m..n } Type
|
nat |
Def == {i: | 0 i }
Thm* Type
|
lelt |
Def i j < k == i j & j < k
|
le |
Def A B == B < A
Thm* i,j: . i j Prop
|
not |
Def A == A  False
Thm* A:Prop. ( A) Prop
|
biject |
Def Bij(A; B; f) == Inj(A; B; f) & Surj(A; B; f)
Thm* A,B:Type, f:(A B). Bij(A; B; f) Prop
|
iff |
Def P  Q == (P  Q) & (P  Q)
Thm* A,B:Prop. (A  B) Prop
|
DA_fin |
Def FinalState(a) == 2of(2of(a))
Thm* Alph,States:Type, a:Automata(Alph;States). FinalState(a) States  
|
surject |
Def Surj(A; B; f) == b:B. a:A. f(a) = b
Thm* A,B:Type, f:(A B). Surj(A; B; f) Prop
|
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
|
rev_implies |
Def P  Q == Q  P
Thm* A,B:Prop. (A  B) Prop
|
NDA_fin |
Def F(n) == 2of(2of(n))
Thm* Alph,States:Type, n:NDA(Alph;States). F(n) States  
|
hd |
Def hd(l) == Case of l; nil "?" ; h.t h
Thm* A:Type, l:A*. ||l|| 1  hd(l) A
|
tl |
Def tl(l) == Case of l; nil nil ; h.t t
Thm* A:Type, l:A*. tl(l) A*
|
null |
Def null(as) == Case of as; nil true ; a.as' false
Thm* T:Type, as:T*. null(as)
Thm* null(nil) 
|
pi2 |
Def 2of(t) == t.2
Thm* A:Type, B:(A Type), p:a:A B(a). 2of(p) B(1of(p))
|