action_set |
Def ActionSet(T) == car:Type T car car
Thm* T:Type{i}. ActionSet(T) Type{i'}
|
aset_car |
Def a.car == 1of(a)
Thm* T:Type, a:ActionSet(T). a.car Type
|
maction |
Def (S:L s) == if null(L) s else S.act(hd(L),(S:tl(L) s)) fi (recursive)
Thm* Alph:Type, S:ActionSet(Alph), L:Alph*, s:S.car. (S:L s) S.car
|
pi1 |
Def 1of(t) == t.1
Thm* A:Type, B:(A Type), p:a:A B(a). 1of(p) A
|
tl |
Def tl(l) == Case of l; nil nil ; h.t t
Thm* A:Type, l:A*. tl(l) A*
|
hd |
Def hd(l) == Case of l; nil "?" ; h.t h
Thm* A:Type, l:A*. ||l|| 1  hd(l) A
|
aset_act |
Def a.act == 2of(a)
Thm* T:Type, a:ActionSet(T). a.act T a.car a.car
|
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))
|