1 (* ======== Robbins Conjecture proof from John ============================= *)
5 timeout := 2;; (* John apparently has a faster computer :-) *)
12 assume !x y. x+y = y+x [COM];
13 assume !x y z. x+(y+z) = (x+y)+z [ASS];
14 assume !a b. n(n(a+b)+n(a+n(b))) = a [ROB];
16 consider x such that x:A = x;
18 set u = n(x+n(x)) [U];
22 set e = u+n(x+x)+n(c) [E];
26 = n(n(x+n(x))+n(x+x)) by U;
30 n(x+u+n(x+u+n(x+x)+n(c))) = n(c) [1]
31 proof n(x+u+n(x+u+n(x+x)+n(c)))
32 = n((x+u)+n(x+u+n(x+x)+n(c))) by ASS,COM;
33 .= n(n(n((x+u)+x+x)+n((x+u)+n(x+x)))+n(x+u+n(x+x)+n(c))) by ROB;
34 .= n(n(n(x+u+x+x)+n(x+u+n(x+x)))+n(x+u+n(x+x)+n(c))) by ASS;
35 .= n(n(n(x+x+x+u)+n(x+u+n(x+x)))+n(x+u+n(x+x)+n(c))) by ASS,COM; // slow
36 .= n(n(n(c)+n(x+u+n(x+x)))+n(n(c)+x+u+n(x+x))) by ASS,COM,C;
37 .= n(c) by ROB,ASS,COM;
42 = n(u+n(x+x+u+x)) by C,ASS,COM;
43 .= n(u+n(x+x+u+n(u+n(x+x)))) by 0;
44 .= n(n(n(u+x+x)+n(u+n(x+x)))+n(x+x+u+n(u+n(x+x)))) by ROB;
45 .= n(n(x+x+u+n(u+n(x+x)))+n(n(u+x+x)+n(u+n(x+x)))) by COM;
46 .= n(n((x+x+u)+n(u+n(x+x)))+n(n(u+x+x)+n(u+n(x+x)))) by ASS;
47 .= n(n(n(u+n(x+x))+u+x+x)+n(n(u+n(x+x))+n(u+x+x))) by ASS,COM;
48 .= n(u+n(x+x)) by ROB;
54 = n(n(x+c+u)+u) by J,D,COM,ASS;
55 .= n(n(x+c+u)+n(n(u+c)+n(u+n(c)))) by ROB;
56 .= n(n(x+c+u)+n(x+n(c+u))) by 2,COM;
60 n(x+n(x+n(x+x)+u+n(c))) = n(x+x) [4]
61 proof n(x+n(x+n(x+x)+u+n(c)))
62 = n(n(n(x+n(u+n(c)))+n(x+u+n(c)))+n(x+n(x+x)+u+n(c)))
64 .= n(n(n(x+x)+n(x+u+n(c)))+n(n(x+x)+x+u+n(c))) by 2,ASS,COM;
65 .= n(n(n(x+x)+x+u+n(c))+n(n(x+x)+n(x+u+n(c)))) by ASS,COM;
71 = n(x+n(x+u+n(x+u+n(x+x)+n(c)))) by 1;
72 .= n(n(u+n(x+x))+n(x+u+n(x+u+n(x+x)+n(c)))) by 0;
73 .= n(n(u+n(x+x))+n(u+x+n(x+e))) by E,COM,ASS;
74 .= n(n(u+n(x+n(x+n(x+x)+u+n(c))))+n(u+x+n(x+e))) by 4;
75 .= n(n(u+n(x+n(x+(u+n(c))+n(x+x))))+n(u+x+n(x+e))) by COM;
76 .= n(n(u+n(x+n(x+u+n(c)+n(x+x))))+n(u+x+n(x+e))) by ASS;
77 .= n(n(u+n(x+n(x+u+n(x+x)+n(c))))+n(u+x+n(x+e))) by COM;
78 .= n(n(u+n(x+n(x+e)))+n(u+x+n(x+e))) by E;
84 = n(j+n(n(x+c)+n(x+n(c)))) by ROB;
85 .= n(j+n(n(x+c)+u)) by 5;
86 .= n(n(u+x+c)+n(u+n(x+c))) by J,D,COM,ASS;
93 .= n(n(j+n(x+n(c)))+n(j+x+n(c))) by ROB,COM;
94 .= n(n(j+u)+n(j+x+n(c))) by 5;
95 .= n(x+n(j+x+n(c))) by 3;
96 .= n(n(n(c)+u)+n(n(c)+j+x)) by 2,COM,ASS;
97 .= n(n(n(c)+n(j+x))+n(n(c)+j+x)) by 6;
101 thus ?c d. n(c+d) = n(c) by -`;;
105 (* ======== REWRITE version ================================================ *)
107 let old_default_prover = !default_prover;;
108 default_prover := "REWRITE_TAC",REWRITE_TAC;;
115 assume !x y. x+y = y+x [COM];
116 assume !x y z. x+(y+z) = (x+y)+z [ASS];
117 assume !a b. n(n(a+b)+n(a+n(b))) = a [ROB];
119 !x y z. x+y = y+x /\ (x+y)+z = x+(y+z) /\ x+(y+z) = y+(x+z) [AC]
120 by MESON_TAC,COM,ASS;
122 consider x such that x:A = x;
124 set u = n(x+n(x)) [U];
128 set e = u+n(x+x)+n(c) [E];
132 = n(n(x+x)+n(x+n(x))) by U,AC;
136 n(x+u+n(x+u+n(x+x)+n(c))) = n(c) [1]
137 proof n(x+u+n(x+u+n(x+x)+n(c)))
138 = n((x+u)+n(x+u+n(x+x)+n(c))) by AC;
139 .= n(n(n((x+u)+x+x)+n((x+u)+n(x+x)))+n(x+u+n(x+x)+n(c))) by ROB;
140 .= n(n(n(c)+x+u+n(x+x))+n(n(c)+n(x+u+n(x+x)))) by C,AC;
146 = n(u+n(x+x+u+n(u+n(x+x)))) by 0,C,AC;
147 .= n(n(n(u+x+x)+n(u+n(x+x)))+n(x+x+u+n(u+n(x+x)))) by ROB;
148 .= n(n(n(u+n(x+x))+u+x+x)+n(n(u+n(x+x))+n(u+x+x))) by AC;
149 .= n(u+n(x+x)) by ROB;
155 = n(n(x+c+u)+u) by J,D,AC;
156 .= n(n(x+c+u)+n(n(u+c)+n(u+n(c)))) by ROB;
157 .= n(n(x+c+u)+n(x+n(c+u))) by 2,AC;
161 n(x+n(x+n(x+x)+u+n(c))) = n(x+x) [4]
162 proof n(x+n(x+n(x+x)+u+n(c)))
163 = n(n(n(x+u+n(c))+n(x+n(u+n(c))))+n(x+n(x+x)+u+n(c))) by ROB;
164 .= n(n(n(x+x)+x+u+n(c))+n(n(x+x)+n(x+u+n(c)))) by 2,AC;
170 = n(n(u+n(x+x))+n(x+u+n(x+u+n(x+x)+n(c)))) by 0,1;
171 .= n(n(u+n(x+n(x+n(x+x)+u+n(c))))+n(u+x+n(x+e))) by 4,E,AC;
172 .= n(n(u+x+n(x+e))+n(u+n(x+n(x+e)))) by E,AC;
178 = n(j+n(n(x+c)+n(x+n(c)))) by ROB;
179 .= n(n(u+x+c)+n(u+n(x+c))) by 5,J,D,AC;
186 .= n(n(j+x+n(c))+n(j+n(x+n(c)))) by ROB;
187 .= n(n(u+n(c))+n(j+x+n(c))) by 2,3,5,AC;
188 .= n(n(n(c)+j+x)+n(n(c)+n(j+x))) by 6,AC;
192 thus ?c d. n(c+d) = n(c) by MESON_TAC,-`;;
194 unhide_constant "+";;
195 default_prover := old_default_prover;;