accept_list |
Def DA(l) == FinalState(DA)(Result(DA)l)
Thm* Alph,St:Type, A:Automata(Alph;St), l:Alph*. A(l) 
|
automata |
Def Automata(Alph;States) == (States Alph States) States (States  )
Thm* Alph,States:Type{i}. Automata(Alph;States) Type{i'}
|
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
|
equiv_rel | Def EquivRel x,y:T. E(x;y) == Refl(T;x,y.E(x;y)) & Sym x,y:T. E(x;y) & Trans x,y:T. E(x;y)
Thm* T:Type, E:(T T Prop). (EquivRel x,y:T. E(x,y)) Prop
|
DA_fin |
Def FinalState(a) == 2of(2of(a))
Thm* Alph,States:Type, a:Automata(Alph;States). FinalState(a) 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*
|
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
|
null |
Def null(as) == Case of as; nil true ; a.as' false
Thm* T:Type, as:T*. null(as)
Thm* null(nil) 
|
trans | Def Trans x,y:T. E(x;y) == a,b,c:T. E(a;b)  E(b;c)  E(a;c)
Thm* T:Type, E:(T T Prop). Trans x,y:T. E(x,y) Prop
|
sym | Def Sym x,y:T. E(x;y) == a,b:T. E(a;b)  E(b;a)
Thm* T:Type, E:(T T Prop). Sym x,y:T. E(x,y) Prop
|
refl | Def Refl(T;x,y.E(x;y)) == a:T. E(a;a)
Thm* T:Type, E:(T T Prop). Refl(T;x,y.E(x,y)) Prop
|
pi2 |
Def 2of(t) == t.2
Thm* A:Type, B:(A Type), p:a:A B(a). 2of(p) B(1of(p))
|
pi1 |
Def 1of(t) == t.1
Thm* A:Type, B:(A Type), p:a:A B(a). 1of(p) A
|