| Some definitions of interest. |
|
exponentiation | Def n^k == if k= 0 1 else n (n^(k-1)) fi (recursive) |
| | Thm* n: , k: . (n^k)  |
| | Thm* n,k: . (n^k)  |
| | Thm* n: , k: . (n^k)   |
|
hanoi_seq | Def s is a Hanoi(n disk) seq on a..z
Def == x,x':{a...z}.
Def == x+1 = x'  ( k:{1...n}. Moving disk k of n takes s(x) to s(x')) |
| | Thm* n: , a,z: , s:({a...z} {1...n} Peg).
Thm* s is a Hanoi(n disk) seq on a..z Prop |
|
hanoi_PEG | Def Peg == {1...3} |
| | Thm* Peg Type |
|
hanoi_sol2_ala_generalPROG | Def HanoiSTD(n disks; from: p; to: q; indexing from: a)
Def == if n= 0 <a, x,i. whatever>
Def == else HanoiSTD(n-1 disks; from: p; to: otherPeg(p; q); indexing from: a)
Def == else /m,s1.
Def == else HanoiSTD(n-1 disks; from: otherPeg(p; q); to: q; indexing from: m
Def == else HanoiSTD(+1)
Def == else /z,s2. <z,HanoiHelper(n; s1; i.p; s2; i.q)/r1,r2. r1 @(m) r2> fi
Def (recursive) |
| | Thm* n: , p,q:Peg.
Thm* p q
Thm* 
Thm* ( a: .
Thm* (HanoiSTD(n disks; from: p; to: q; indexing from: a)
Thm* ( z:{a...} ({a...z} {1...n} Peg)) |
|
int_iseg | Def {i...j} == {k: | i k & k j } |
| | Thm* i,j: . {i...j} Type |
|
int_upper | Def {i...} == {j: | i j } |
| | Thm* n: . {n...} Type |
|
nat | Def == {i: | 0 i } |
| | Thm* Type |
|
le | Def A B == B<A |
| | Thm* i,j: . (i j) Prop |
|
nequal | Def a b T == a = b T |
| | Thm* A:Type, x,y:A. (x y) Prop |
|
pi1 | Def 1of(t) == t/x,y. x |
| | Thm* A:Type, B:(A Type), p:(a:A B(a)). 1of(p) A |