| accept_config |
Def M(C) == n: . M(C)[n].st = M.t & ( k: n. M(C)[n].st = M.r)
Thm* M:PM{i}, C:Config(M). M(C) Prop
|
| tm_r |
Def p.r == 2of(2of(2of(2of(2of(2of(2of(p)))))))
Thm* p:PM{i}. p.r (p)
|
| nth_config |
Def (rec) M(C)[n] == if n= 0 C else M(M(C)[n-1]) fi
Thm* M:PM{i}, C:Config(M), n: . M(C)[n] Config(M)
|
| next_config |
Def M(Conf)
== let delta = (M)( < Conf.st,Conf.tape(Conf.hd) > ) in
< 1of(delta)
,( z.if z= Conf.hd 1of(2of(delta)) else Conf.tape(z) fi)
,if 2of(2of(delta)) Conf.hd+1 else Conf.hd-1 fi >
Thm* M:PM{i}, C:Config(M). M(C) Config(M)
|
| conf_st |
Def t.st == 1of(t)
Thm* M:PM{i}, t:Config(M). t.st (M)
|
| tm_q |
Def (p) == 1of(p)
Thm* p:PM{i}. (p) Type
|
| 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
|
| tm_t |
Def p.t == 1of(2of(2of(2of(2of(2of(2of(p)))))))
Thm* p:PM{i}. p.t (p)
|
| conf_hd |
Def t.hd == 2of(2of(t))
Thm* M:PM{i}, t:Config(M). t.hd 
|
| conf_tape |
Def t.tape == 1of(2of(t))
Thm* M:PM{i}, t:Config(M). t.tape   G(M)
|
| tm_delta |
Def (p) == 1of(2of(2of(2of(2of(p)))))
Thm* p:PM{i}. (p) (p) G(p)  (p) G(p) 
|
| pi2 |
Def 2of(t) == t.2
Thm* B:(A Type), p:a:A B(a). 2of(p) B(1of(p))
|
| eq_int |
Def i= j == if i=j true ; false fi
Thm* i,j: . i= j 
|
| pi1 |
Def 1of(t) == t.1
Thm* B:(A Type), p:a:A B(a). 1of(p) A
|
| let |
Def let x = a in b(x) == ( x.b(x))(a)
Thm* a:A, b:(A B). let x = a in b(x) B
|