is mentioned by
Thm* p q Thm* Thm* (a:, z:{a...}, s:({a...z}{1...n}Peg). Thm* (s is a Hanoi(n disk) seq on a..z & s(a) = (i.p) & s(z) = (i.q) Thm* ( Thm* ((2^n)z-a+1) | [hanoi_sol2_lb] |
Thm* p q Thm* Thm* (a:, z:{a...}, s:({a...z}{1...n}Peg). Thm* (s is a Hanoi(n disk) seq on a..z & s(a) = (i.p) & s(z) = (i.q) Thm* ( Thm* ((x:{a...z-1}, y:{x+1...z}, p',q':Peg. Thm* (((u:{a...x}. s(u,n) = p) & (u:{y...z}. s(u,n) = q) Thm* ((& s(x) = (i.p') {1...n-1}Peg & s(y) = (i.q') {1...n-1}Peg Thm* ((& p p' Thm* ((& q q')) | [hanoi_sol2_analemma] |
Thm* p q Thm* Thm* (a:. Thm* (1of(HanoiSTD(n disks; from: p; to: q; indexing from: a)) = a+(2^n)-1) | [hanoi_general_exists_lemma2PROG_endpoint] |
Thm* p q Thm* Thm* (a:. Thm* (z:{a...}, s:({a...z}{1...n}Peg). Thm* (s is a Hanoi(n disk) seq on a..z & s(a) = (i.p) & s(z) = (i.q)) | [hanoi_sol2_via_general] |
Thm* z:{a...}, s:({a...z}{1...n}Peg). Thm* s is a Hanoi(n disk) seq on a..z & s(a) = f & s(z) = g | [hanoi_general_exists] |
Thm* p q Thm* Thm* (a:. Thm* (HanoiSTD(n disks; from: p; to: q; indexing from: a)/z,s. Thm* (s is a Hanoi(n disk) seq on a..z Thm* (& s(a) = (i.p) {1...n}Peg Thm* (& s(z) = (i.q) {1...n}Peg) | [hanoi_sol2_ala_generalPROGworks] |
Thm* p q Thm* Thm* (a:. Thm* (HanoiSTD(n disks; from: p; to: q; indexing from: a) Thm* (= Thm* ((HanoiSTD(n-1 disks; from: p; to: otherPeg(p; q); indexing from: a)/m,s1. Thm* ((HanoiSTD(n-1 disks; from: otherPeg(p; q); to: q; indexing from: m+1) Thm* ((/z,s2. <z,HanoiHelper(n; s1; i.p; s2; i.q)/r1,r2. r1 @(m) r2>)) | [hanoi_sol2_ala_generalPROGcomp] |
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)) | [hanoi_sol2_ala_generalPROG_wf] |
Thm* p q Thm* Thm* (a:. Thm* (z:{a...}, s:({a...z}{1...n}Peg). Thm* (s is a Hanoi(n disk) seq on a..z & s(a) = (i.p) & s(z) = (i.q)) | [hanoi_sol2_ala_general] |
Thm* p q Thm* Thm* (z:{1...}, s:({1...z}{1...n}Peg). Thm* (s is a Hanoi(n disk) seq on 1..z & s(1) = (i.p) & s(z) = (i.q)) | [hanoi_sol2_via_permshift] |
Thm* f(n) g(n) Thm* Thm* (s1:({a...m}{1...n-1}Peg), s2:({m+1...z}{1...n-1}Peg). Thm* (s1 is a Hanoi(n-1 disk) seq on a..m Thm* (& s1(a) = f {1...n-1}Peg Thm* (& s2 is a Hanoi(n-1 disk) seq on m+1..z Thm* (& s2(z) = g {1...n-1}Peg Thm* (& s1(m) = s2(m+1) Thm* (& (i:{1...n-1}. s1(m,i) f(n) & s2(m+1,i) g(n)) Thm* ( Thm* ((HanoiHelper(n; s1; f; s2; g)/r1,r2. Thm* (((r1 @(m) r2) is a Hanoi(n disk) seq on a..z & r1(a) = f & r2(z) = g)) | [hanoi_general_exists_lemma2PROGworks] |
Thm* s1:({a...m}{1...n-1}Peg), s2:({m+1...z}{1...n-1}Peg). Thm* HanoiHelper(n; s1; f; s2; g) Thm* ({a...m}{1...n}Peg)({m+1...z}{1...n}Peg) | [hanoi_general_exists_lemma2PROG_wf] |
Thm* f(n) g(n) Thm* Thm* (s1:({a...m}{1...n-1}Peg), s2:({m+1...z}{1...n-1}Peg). Thm* (s1 is a Hanoi(n-1 disk) seq on a..m Thm* (& s1(a) = f {1...n-1}Peg Thm* (& s2 is a Hanoi(n-1 disk) seq on m+1..z Thm* (& s2(z) = g {1...n-1}Peg Thm* (& s1(m) = s2(m+1) Thm* (& (i:{1...n-1}. s1(m,i) f(n) & s2(m+1,i) g(n))) Thm* Thm* (r1:({a...m}{1...n}Peg), r2:({m+1...z}{1...n}Peg). Thm* ((r1 @(m) r2) is a Hanoi(n disk) seq on a..z & r1(a) = f & r2(z) = g) | [hanoi_general_exists_lemma2] |
Thm* f(n) = g(n) Thm* Thm* (a:, z:{a...}. Thm* ((s:({a...z}{1...n-1}Peg). Thm* ((s is a Hanoi(n-1 disk) seq on a..z Thm* ((& s(a) = f {1...n-1}Peg Thm* ((& s(z) = g {1...n-1}Peg) Thm* ( Thm* ((s:({a...z}{1...n}Peg). Thm* ((s is a Hanoi(n disk) seq on a..z & s(a) = f & s(z) = g)) | [hanoi_general_exists_lemma1] |
Thm* s2:({m+1...z}{1...n}Peg). Thm* (k:{1...n}. Moving disk k of n takes s1(m) to s2(m+1)) Thm* Thm* s1 is a Hanoi(n disk) seq on a..m Thm* Thm* s2 is a Hanoi(n disk) seq on m+1..z Thm* Thm* (s1 @(m) s2) is a Hanoi(n disk) seq on a..z | [hanoi_seq_join_seq] |
Thm* x:{m+1...z}. (s1 @(m) s2)(x) = s2(x) | [hanoi_seq_join_part2] |
Thm* x:{a...m}. (s1 @(m) s2)(x) = s1(x) | [hanoi_seq_join_part1] |
Thm* (s1 @(m) s2) {a...z}{1...n}Peg | [hanoi_seq_join_wf] |
Thm* s is a Hanoi(n disk) seq on a..z Thm* Thm* (x:{a...z}, i:{n'+1...n}. s(a,i) = s(x,i)) Thm* Thm* s is a Hanoi(n' disk) seq on a..z | [hanoi_seq_shallower] |
Thm* s is a Hanoi(n disk) seq on a..z Thm* Thm* (a',z':{a...z}. s is a Hanoi(n disk) seq on a'..z') | [hanoi_subseq] |
Thm* s is a Hanoi(n disk) seq on a..z Thm* Thm* (x.s(x-d)) is a Hanoi(n disk) seq on a+d..z+d | [hanoi_seq_shift] |
Thm* nn' Thm* Thm* (h:({n+1...n'}Peg). Thm* (s is a Hanoi(n disk) seq on a..z Thm* ( Thm* ((s(?) {to n} h {to n'}) is a Hanoi(n' disk) seq on a..z) | [hanoi_seq_deepen_seq] |
Thm* nn' Thm* Thm* (h:({n+1...n'}Peg), i:{1...n'}. Thm* (in (x:{a...z}. (s(?) {to n} h {to n'})(x,i) = s(x,i))) | [hanoi_seq_deepen_loweq] |
Thm* nn' Thm* Thm* (h:({n+1...n'}Peg), i:{1...n'}. Thm* (n<i (x:{a...z}. (s(?) {to n} h {to n'})(x,i) = h(i))) | [hanoi_seq_deepen_higheq] |
Thm* nn' Thm* Thm* (h:({n+1...n'}Peg). (s(?) {to n} h {to n'}) {a...z}{1...n'}Peg) | [hanoi_seq_deepen_wf] |
Thm* s is a Hanoi(n disk) seq on a..z Thm* Thm* (f:(PegPeg). Thm* (Inj(Peg; Peg; f) (x,i. f(s(x,i))) is a Hanoi(n disk) seq on a..z) | [hanoi_seq_permutepegs] |
Thm* s is a Hanoi(n disk) seq on a..z Thm* Thm* (a',z':{a...z}. Thm* ((x:{a'...z'}, i:{n'+1...n}. s(a',i) = s(x,i)) Thm* ( Thm* (s is a Hanoi(n' disk) seq on a'..z') | [hanoi_seq_core] |
Thm* s is a Hanoi(n disk) seq on a..z Prop | [hanoi_seq_wf] |
Thm* Moving disk k of n takes f to g f(k) g(k) | [hanoi_step_at_diff] |
Thm* Moving disk k of n takes f to g Moving disk k of n takes g to f | [hanoi_step_at_sym] |
Thm* (k:{1...n}. Moving disk k of n takes f to g) Thm* Thm* f(j) g(j) Moving disk j of n takes f to g | [hanoi_step_at_change] |
Thm* Moving disk k of n takes f to g f(i) g(i) i = k | [hanoi_step_at_unique] |
Thm* Moving disk k of n takes f to g Thm* Thm* f = (i.otherPeg(f(k); g(k))) {1...k-1}Peg | [hanoi_step_at_otherpeg] |
Thm* Moving disk k of n takes f to g f(k) g(k) | [hanoi_step_at_change2] |
Thm* Moving disk k of n takes f to g i k f(i) = g(i) | [hanoi_step_at_same] |
Thm* Moving disk k of n takes f to g Prop | [hanoi_step_at_wf] |
Thm* nn' Thm* Thm* (f':({n+1...n'}Peg), i:{1...n'}. Thm* (n<i (f {to n} f' {to n'})(i) = f'(i)) | [hanoi_extend_higheq] |
Thm* nn' Thm* Thm* (f':({n+1...n'}Peg), i:{1...n'}. Thm* (in (f {to n} f' {to n'})(i) = f(i)) | [hanoi_extend_loweq] |
Thm* nn' (f':({n+1...n'}Peg). (f {to n} f' {to n'}) {1...n'}Peg) | [hanoi_extend_wf] |
[hanoi_peg_perm_comp2] | |
[hanoi_peg_perm_comp1] | |
[hanoi_peg_perm_is_inj] | |
[hanoi_peg_perm_wf] | |
[hanoi_otherpeg_diff4] | |
[hanoi_otherpeg_diff3] | |
[hanoi_otherpeg_diff2] | |
[hanoi_otherpeg_diff1] | |
[hanoi_otherpeg_sym] | |
[hanoi_otherpeg_only] | |
[hanoi_otherpeg_wf] | |
Thm* p q Thm* Thm* (a:, z:{a...}, f:({a...z}Peg). Thm* (f(a) = p & f(z) = q Thm* ( Thm* ((x:{a...z-1}, y:{x+1...z}. Thm* (((u:{a...x}. f(u) = p) Thm* ((& f(x+1) p Thm* ((& f(y-1) q Thm* ((& (u:{y...z}. f(u) = q))) | [hanoi_pegseq_analemma] |
[eq_hanoi_PEG_wf] | |
Def == (i:{1...n}. f(i) = g(i) Peg i k) Def == & (i:{1...k-1}. f(i) f(k) Peg & g(i) g(k) Peg) | [hanoi_step_at] |
IF YOU CAN SEE THIS go to /sfa/Nuprl/Shared/Xindentation_hack_doc.html