THEOREM
*******
ALL(a):ALL(b):[a
e n & b e n => [~a=0
& ~b=0 => 0^a * 0^b = 0^(a+b)]]
This machine-verified, formal
proof was written with the aid of the author's DC Proof 2.0 freeware available
at http://www.dcproof.com
Dan Christensen
2019-10-26
AXIOMS/DEFINTITIONS
*******************
Define: n, 0, 1
1 Set(n)
Axiom
2 0 e n
Axiom
3 1 e n
Axiom
Properties of +
***************
Closed on n
4 ALL(a):ALL(b):[a e n & b e n => a+b e n]
Axiom
Adding 0
5 ALL(a):[a e n => a+0=a]
Axiom
+ Commutative
6 ALL(a):ALL(b):[a e n & b e n => a+b=b+a]
Axiom
+ Associative
7 ALL(a):ALL(b):ALL(c):[a e n & b e n & c e n => a+b+c=a+(b+c)]
Axiom
8 ALL(a):ALL(b):[a e n & b e n => [~a=0 & ~b=0 => ~a+b=0]]
Axiom
Properties of *
***************
Closed on n
9 ALL(a):ALL(b):[a e n & b e n => a*b e n]
Axiom
Multiplying by 0
10 ALL(a):[a e n => a*0=0]
Axiom
Multiplying by 1
11 ALL(a):[a e n => a*1=a]
Axiom
* Associative
12 ALL(a):ALL(b):ALL(c):[a e n & b e n & c e n =>
a*b*c=a*(b*c)]
Axiom
* Commutative
13 ALL(a):ALL(b):[a e n & b e n => a*b=b*a]
Axiom
Define: ^ on n
**************
14 ALL(a):ALL(b):[a e n & b e n => [~[a=0 & b=0] => a^b e n]]
Axiom
15 0^1=0
Axiom
16 ALL(a):[a e n => [~a=0 => a^0=1]]
Axiom
17 ALL(a):ALL(b):[a e n & b e n
=>
[~[a=0 & b=0] => a^(b+1)=a^b*a]]
Axiom
Principle of Mathematical
Induction
***********************************
18 ALL(a):[Set(a) & ALL(b):[b e a => b e n]
=>
[0 e a & ALL(b):[b e a => b+1 e a]
=>
ALL(b):[b e n => b e a]]]
Axiom
PROOF
*****
Suppose...
19 x e n & y e n & ~x=0
Premise
20 x e n
Split, 19
21 y e n
Split, 19
22 ~x=0
Split, 19
Construct p
Apply Subset Axiom
23 EXIST(sub):[Set(sub) & ALL(c):[c e sub <=> c e n & x^(y+c)=x^y*x^c]]
Subset, 1
24 Set(p) & ALL(c):[c e p <=> c e n & x^(y+c)=x^y*x^c]
E Spec, 23
Define: p
25 Set(p)
Split, 24
26 ALL(c):[c e p <=> c e n & x^(y+c)=x^y*x^c]
Split, 24
Apply Principle of Mathematical Induction of set p
27 Set(p) & ALL(b):[b e p => b e n]
=>
[0 e p & ALL(b):[b e p => b+1 e p]
=>
ALL(b):[b e n => b e p]]
U Spec, 18
Prove: ALL(b):[b e p => b e n]
Suppose...
28 t e p
Premise
Apply definition of p
29 t e p <=> t e n & x^(y+t)=x^y*x^t
U Spec, 26
30 [t e p => t e n & x^(y+t)=x^y*x^t]
&
[t e n & x^(y+t)=x^y*x^t => t e p]
Iff-And, 29
31 t e p => t e n & x^(y+t)=x^y*x^t
Split, 30
32 t e n & x^(y+t)=x^y*x^t => t e p
Split, 30
33 t e n & x^(y+t)=x^y*x^t
Detach, 31, 28
34 t e n
Split, 33
As Required:
35 ALL(b):[b e p => b e n]
4 Conclusion, 28
36 Set(p) & ALL(b):[b e p => b e n]
Join, 25, 35
Sufficient: For ALL(b):[b e n => b e p]
37 0 e p & ALL(b):[b e p => b+1 e p]
=>
ALL(b):[b e n => b e p]
Detach, 27, 36
BASE CASE
*********
Prove: 0 e p
38 0 e p <=> 0 e n & x^(y+0)=x^y*x^0
U Spec, 26
39 [0 e p => 0 e n & x^(y+0)=x^y*x^0]
&
[0 e n & x^(y+0)=x^y*x^0 => 0 e p]
Iff-And, 38
40 0 e p => 0 e n & x^(y+0)=x^y*x^0
Split, 39
Sufficient: For 0 e p
41 0 e n & x^(y+0)=x^y*x^0 => 0 e p
Split, 39
Apply definition of ^ on n
42 ALL(b):[x e n & b e n => [~[x=0 & b=0] => x^b e n]]
U Spec, 14
43 x e n & y e n => [~[x=0 & y=0] => x^y e n]
U Spec, 42
44 x e n & y e n
Join, 20, 21
45 ~[x=0 & y=0] => x^y e n
Detach, 43, 44
Prove: ~[x=0 & y=0]
Suppose to the contrary...
46 x=0 & y=0
Premise
47 x=0
Split, 46
48 y=0
Split, 46
49 x=0 & ~x=0
Join, 47, 22
As Required:
50 ~[x=0 & y=0]
4 Conclusion, 46
51 x^y e n
Detach, 45, 50
52 x^y=x^y
Reflex, 51
53 y e n => y+0=y
U Spec, 5
54 y+0=y
Detach, 53, 21
55 x^(y+0)=x^y
Substitute, 54,
52
56 x^y e n => x^y*1=x^y
U Spec, 11, 51
57 x^y*1=x^y
Detach, 56, 51
58 x^(y+0)=x^y*1
Substitute, 57,
55
59 x e n => [~x=0 => x^0=1]
U Spec, 16
60 ~x=0 => x^0=1
Detach, 59, 20
61 x^0=1
Detach, 60, 22
62 x^(y+0)=x^y*x^0
Substitute, 61,
58
63 0 e n & x^(y+0)=x^y*x^0
Join, 2, 62
As Required:
64 0 e p
Detach, 41, 63
INDUCTIVE STEP
**************
Prove: ALL(b):[b e p => b+1 e p]
Suppose...
65 t e p
Premise
Apply definition of p
66 t e p <=> t e n & x^(y+t)=x^y*x^t
U Spec, 26
67 [t e p => t e n & x^(y+t)=x^y*x^t]
&
[t e n & x^(y+t)=x^y*x^t => t e p]
Iff-And, 66
68 t e p => t e n & x^(y+t)=x^y*x^t
Split, 67
69 t e n & x^(y+t)=x^y*x^t => t e p
Split, 67
70 t e n & x^(y+t)=x^y*x^t
Detach, 68, 65
71 t e n
Split, 70
72 x^(y+t)=x^y*x^t
Split, 70
73 ALL(b):[t e n & b e n => t+b e n]
U Spec, 4
74 t e n & 1 e n => t+1 e n
U Spec, 73
75 t e n & 1 e n
Join, 71, 3
76 t+1 e n
Detach, 74, 75
Apply definition of p
77 t+1 e p <=> t+1 e n & x^(y+(t+1))=x^y*x^(t+1)
U Spec, 26, 76
78 [t+1 e p => t+1 e n & x^(y+(t+1))=x^y*x^(t+1)]
&
[t+1 e n & x^(y+(t+1))=x^y*x^(t+1) => t+1 e p]
Iff-And, 77
79 t+1 e p => t+1 e n & x^(y+(t+1))=x^y*x^(t+1)
Split, 78
Sufficient: For t+1 e p
80 t+1 e n & x^(y+(t+1))=x^y*x^(t+1) => t+1 e p
Split, 78
81 ALL(b):[y e n & b e n => y+b e n]
U Spec, 4
82 y e n & t+1 e n => y+(t+1) e n
U Spec, 81, 76
83 y e n & t+1 e n
Join, 21, 76
84 y+(t+1) e n
Detach, 82, 83
Apply definition of p
85 ALL(b):[x e n & b e n => [~[x=0 & b=0] => x^b e n]]
U Spec, 14
86 x e n & y+(t+1) e n => [~[x=0 & y+(t+1)=0] => x^(y+(t+1)) e n]
U Spec, 85, 84
87 x e n & y+(t+1) e n
Join, 20, 84
88 ~[x=0 & y+(t+1)=0] => x^(y+(t+1)) e n
Detach, 86, 87
Prove: ~[x=0 & y+(t+1)=0]
Suppose to the contrary...
89 x=0 & y+(t+1)=0
Premise
90 x=0
Split, 89
91 y+(t+1)=0
Split, 89
92 x=0 & ~x=0
Join, 90, 22
As Required:
93 ~[x=0 & y+(t+1)=0]
4 Conclusion, 89
94 x^(y+(t+1)) e n
Detach, 88, 93
95 x^(y+(t+1))=x^(y+(t+1))
Reflex, 94
Apply associativity of +
96 ALL(b):ALL(c):[y e n & b e n & c e n => y+b+c=y+(b+c)]
U Spec, 7
97 ALL(c):[y e n & t e n & c e n => y+t+c=y+(t+c)]
U Spec, 96
98 y e n & t e n & 1 e n => y+t+1=y+(t+1)
U Spec, 97
99 y e n & t e n
Join, 21, 71
100 y e n & t e n & 1 e n
Join, 99, 3
101 y+t+1=y+(t+1)
Detach, 98, 100
102 x^(y+(t+1))=x^(y+t+1)
Substitute, 101,
95
Apply definition of ^
103 ALL(b):[x e n & b e n
=>
[~[x=0 & b=0] => x^(b+1)=x^b*x]]
U Spec, 17
104 ALL(b):[y e n & b e n => y+b e n]
U Spec, 4
105 y e n & t e n => y+t e n
U Spec, 104
106 y+t e n
Detach, 105, 99
Apply definition of p
107 x e n & y+t e n
=>
[~[x=0 & y+t=0] => x^(y+t+1)=x^(y+t)*x]
U Spec, 103, 106
108 x e n & y+t e n
Join, 20, 106
109 ~[x=0 & y+t=0] => x^(y+t+1)=x^(y+t)*x
Detach, 107, 108
Prove: ~[x=0 & y+t=0]
Suppose to the contrary...
110 x=0 & y+t=0
Premise
111 x=0
Split, 110
112 y+t=0
Split, 110
113 x=0 & ~x=0
Join, 111, 22
As Required:
114 ~[x=0 & y+t=0]
4 Conclusion, 110
115 x^(y+t+1)=x^(y+t)*x
Detach, 109, 114
116 x^(y+(t+1))=x^(y+t)*x
Substitute, 115,
102
117 x^(y+(t+1))=x^y*x^t*x
Substitute, 72,
116
Apply definition of ^
118 ALL(b):[x e n & b e n => [~[x=0 & b=0] => x^b e n]]
U Spec, 14
119 x e n & y e n => [~[x=0 & y=0] => x^y e n]
U Spec, 118
120 ~[x=0 & y=0] => x^y e n
Detach, 119, 44
Prove: ~[x=0 & y=0]
Suppose to the contrary...
121 x=0 & y=0
Premise
122 x=0
Split, 121
123 y=0
Split, 121
124 x=0 & ~x=0
Join, 122, 22
As Required:
125 ~[x=0 & y=0]
4 Conclusion, 121
126 x^y e n
Detach, 120, 125
Apply definition of ^
127 x e n & t+1 e n => [~[x=0 & t+1=0] => x^(t+1) e n]
U Spec, 118, 76
128 x e n & t+1 e n
Join, 20, 76
129 ~[x=0 & t+1=0] => x^(t+1) e n
Detach, 127, 128
Prove: ~[x=0 & t+1=0]
Suppose to the contrary...
130 x=0 & t+1=0
Premise
131 x=0
Split, 130
132 t+1=0
Split, 130
133 x=0 & ~x=0
Join, 131, 22
As Required:
134 ~[x=0 & t+1=0]
4 Conclusion, 130
135 x^(t+1) e n
Detach, 129, 134
Apply definition of *
136 ALL(b):[x^y e n & b e n => x^y*b e n]
U Spec, 9, 126
137 x^y e n & x^(t+1) e n => x^y*x^(t+1) e n
U Spec, 136, 135
138 x^y e n & x^(t+1) e n
Join, 126, 135
139 x^y*x^(t+1) e n
Detach, 137, 138
140 x^y*x^(t+1)=x^y*x^(t+1)
Reflex, 139
Apply definition of ^
141 ALL(b):[x e n & b e n
=>
[~[x=0 & b=0] => x^(b+1)=x^b*x]]
U Spec, 17
142 x e n & t e n
=>
[~[x=0 & t=0] => x^(t+1)=x^t*x]
U Spec, 141
143 x e n & t e n
Join, 20, 71
144 ~[x=0 & t=0] => x^(t+1)=x^t*x
Detach, 142, 143
Prove: ~[x=0 & t=0]
Suppose to the contrary...
145 x=0 & t=0
Premise
146 x=0
Split, 145
147 t=0
Split, 145
148 x=0 & ~x=0
Join, 146, 22
As Required:
149 ~[x=0 & t=0]
4 Conclusion, 145
113
150 x^(t+1)=x^t*x
Detach, 144, 149
151 x^y*x^(t+1)=x^y*(x^t*x)
Substitute, 150,
140
Apply associativity of * on n
152 ALL(b):ALL(c):[x^y e n & b e n & c e n => x^y*b*c=x^y*(b*c)]
U Spec, 12, 126
153 ALL(b):[x e n & b e n => [~[x=0 & b=0] => x^b e n]]
U Spec, 14
154 x e n & t e n => [~[x=0 & t=0] => x^t e n]
U Spec, 153
155 x e n & t e n
Join, 20, 71
156 ~[x=0 & t=0] => x^t e n
Detach, 154, 155
Prove: ~[x=0 & t=0]
Suppose to the contrary...
157 x=0 & t=0
Premise
158 x=0
Split, 157
159 t=0
Split, 157
160 x=0 & ~x=0
Join, 158, 22
As Required:
161 ~[x=0 & t=0]
4 Conclusion, 157
162 x^t e n
Detach, 156, 161
Apply associativity of *
163 ALL(c):[x^y e n & x^t e n & c e n => x^y*x^t*c=x^y*(x^t*c)]
U Spec, 152, 162
164 x^y e n & x^t e n & x e n => x^y*x^t*x=x^y*(x^t*x)
U Spec, 163
165 x^y e n & x^t e n
Join, 126, 162
166 x^y e n & x^t e n & x e n
Join, 165, 20
167 x^y*x^t*x=x^y*(x^t*x)
Detach, 164, 166
168 x^y*x^(t+1)=x^y*x^t*x
Substitute, 167,
151
169 x^(y+(t+1))=x^y*x^(t+1)
Substitute, 168,
117
170 t+1 e n & x^(y+(t+1))=x^y*x^(t+1)
Join, 76, 169
171 t+1 e p
Detach, 80, 170
As Required:
172 ALL(b):[b e p => b+1 e p]
4 Conclusion, 65
173 0 e p & ALL(b):[b e p => b+1 e p]
Join, 64, 172
As Required:
174 ALL(b):[b e n => b e p]
Detach, 37, 173
Prove: ALL(c):[c e n => x^(y+c)=x^y*x^c]
Suppose...
175 t e n
Premise
176 t e n => t e p
U Spec, 174
177 t e p
Detach, 176, 175
Apply definition of p
178 t e p <=> t e n & x^(y+t)=x^y*x^t
U Spec, 26
179 [t e p => t e n & x^(y+t)=x^y*x^t]
& [t e n & x^(y+t)=x^y*x^t => t e p]
Iff-And, 178
180 t e p => t e n & x^(y+t)=x^y*x^t
Split, 179
181 t e n & x^(y+t)=x^y*x^t => t e p
Split, 179
182 t e n & x^(y+t)=x^y*x^t
Detach, 180, 177
183 t e n
Split, 182
184 x^(y+t)=x^y*x^t
Split, 182
As Required:
185 ALL(c):[c e n => x^(y+c)=x^y*x^c]
4 Conclusion, 175
As Required:
186 ALL(a):ALL(b):[a e n & b e n & ~a=0
=>
ALL(c):[c e n => a^(b+c)=a^b*a^c]]
4 Conclusion, 19
Prove: ALL(a):ALL(b):ALL(c):[a e n & b e n & c e n => [~a=0 => a^(b+c)=a^b*a^c]]
Suppose...
187 x e n & y e n & z e n
Premise
188 x e n
Split, 187
189 y e n
Split, 187
190 z e n
Split, 187
Prove: ~x=0 => x^(y+z)=x^y*x^z
Suppose...
191 ~x=0
Premise
Apply previous result
192 ALL(b):[x e n & b e n & ~x=0
=>
ALL(c):[c e n => x^(b+c)=x^b*x^c]]
U Spec, 186
193 x e n & y e n & ~x=0
=>
ALL(c):[c e n => x^(y+c)=x^y*x^c]
U Spec, 192
194 x e n & y e n
Join, 188, 189
195 x e n & y e n & ~x=0
Join, 194, 191
196 ALL(c):[c e n => x^(y+c)=x^y*x^c]
Detach, 193, 195
197 z e n => x^(y+z)=x^y*x^z
U Spec, 196
198 x^(y+z)=x^y*x^z
Detach, 197, 190
As Required:
199 ~x=0 => x^(y+z)=x^y*x^z
4 Conclusion, 191
As Required:
200 ALL(a):ALL(b):ALL(c):[a e n & b e n & c e n => [~a=0 => a^(b+c)=a^b*a^c]]
4 Conclusion, 187