THEOREM
*******
For any (possibly finite) set
x, x0ex and f: x --> x such that x = {x0, f(x0), f(f(x0)), ... }, induction will hold on x with "first"
number x0 and successor function f.
Note that x here is just the
smallest set containing x0, f(x0), f(f(x0)), ... i.e. every element of x can be reached by a
process of repeated application of function f starting at x0.
Prove: ALL(x):ALL(x0):ALL(f):[Set(x)
& x0 e x
& ALL(a):[a
e x => f(a) e x]
& ALL(a):[a
e x <=> ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => a e b]]
=> ALL(a):[Set(a)
& ALL(b):[b e a => b e x] <--- Induction
holds on x
=> [x0 e a & ALL(b):[b e a => f(b) e a]
=> ALL(b):[b
e x => b e a]]]]
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
PROOF
*****
Suppose...
1 Set(x)
&
x0 e x
&
ALL(a):[a e x => f(a) e x]
&
ALL(a):[a e x <=>
ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => a e b]]
Premise
x is a set
2 Set(x)
Split, 1
3 x0 e x
Split, 1
Define: f
(a function mapping x to itself)
4 ALL(a):[a e x => f(a) e x]
Split, 1
Define: x
(the smallest set that contains x0, f(x0), f(f(x0)), ... )
5 ALL(a):[a e x <=>
ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => a e b]]
Split, 1
Prove: ALL(a):[a e x => f(a) e x]
Suppose...
6 t e x
Premise
Apply definition of x for a=t
7 t e x <=> ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => t e b]
U Spec, 5
8 [t e x => ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => t e b]]
&
[ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => t e b] => t e x]
Iff-And, 7
9 t e x => ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => t e b]
Split, 8
10 ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => t e b] => t e x
Split, 8
11 ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => t e b]
Detach, 9, 6
Apply the definition of x for a=f(t)
12 f(t) e x <=> ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => f(t) e b]
U Spec, 5
13 [f(t) e x => ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => f(t) e b]]
&
[ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => f(t) e b] => f(t) e x]
Iff-And, 12
14 f(t) e x => ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => f(t) e b]
Split, 13
Sufficient: For f(t) e x
15 ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => f(t) e b] => f(t) e x
Split, 13
Prove: ALL(b):[Set(b) &
ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b]
=> f(t) e b]
Suppose...
16 Set(q) & ALL(c):[c e q => c e x] & x0 e q & ALL(c):[c e q => f(c) e q]
Premise
17 Set(q)
Split, 16
18 ALL(c):[c e q => c e x]
Split, 16
19 x0 e q
Split, 16
20 ALL(c):[c e q => f(c) e q]
Split, 16
Apply previous result
21 Set(q) & ALL(c):[c e q => c e x] & x0 e q & ALL(c):[c e q => f(c) e q] => t e q
U Spec, 11
22 t e q
Detach, 21, 16
Apply previous result
23 t e q => f(t) e q
U Spec, 20
24 f(t) e q
Detach, 23, 22
As Required:
25 ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b]
=>
f(t) e b]
4 Conclusion, 16
26 f(t) e x
Detach, 15, 25
As Required:
27 ALL(a):[a e x => f(a) e x]
4 Conclusion, 6
Prove: Induction holds on x with "first" element
x0 and successor function f
Suppose p is a subset of x
28 Set(p) & ALL(b):[b e p => b e x]
Premise
Prove: x0 e p & ALL(b):[b e p => f(b) e p]
=> ALL(b):[b e x => b e p]
Suppose...
29 x0 e p & ALL(b):[b e p => f(b) e p]
Premise
30 x0 e p
Split, 29
31 ALL(b):[b e p => f(b) e p]
Split, 29
Prove: ALL(b):[b e x => b e p]
Suppose...
32 u e x
Premise
Apply the definition of x for a=u
33 u e x <=> ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => u e b]
U Spec, 5
34 [u e x => ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => u e b]]
&
[ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => u e b] => u e x]
Iff-And, 33
35 u e x => ALL(b):[Set(b)
& ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => u e b]
Split, 34
36 ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => u e b] => u e x
Split, 34
37 ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => u e b]
Detach, 35, 32
38 Set(p) & ALL(c):[c e p => c e x] & x0 e p & ALL(c):[c e p => f(c) e p] => u e p
U Spec, 37
39 Set(p) & ALL(b):[b e p => b e x] & x0 e p
Join, 28, 30
40 Set(p) & ALL(b):[b e p => b e x] & x0 e p
&
ALL(b):[b e p => f(b) e p]
Join, 39, 31
41 u e p
Detach, 38, 40
As Required:
42 ALL(b):[b e x => b e p]
4 Conclusion, 32
As Required:
43 x0 e p & ALL(b):[b e p => f(b) e p]
=>
ALL(b):[b e x => b e p]
4 Conclusion, 29
Induction holds on x with "first" element x0 and
successor function f
As Required:
44 ALL(a):[Set(a) & ALL(b):[b e a => b e x]
=>
[x0 e a & ALL(b):[b e a => f(b) e a]
=>
ALL(b):[b e x => b e a]]]
4 Conclusion, 28
As Required:
45 ALL(x):ALL(x0):ALL(f):[Set(x)
&
x0 e x
&
ALL(a):[a e x => f(a) e x]
&
ALL(a):[a e x <=>
ALL(b):[Set(b) & ALL(c):[c e b => c e x] & x0 e b & ALL(c):[c e b => f(c) e b] => a e b]]
=>
ALL(a):[Set(a) & ALL(b):[b e a => b e x]
=>
[x0 e a & ALL(b):[b e a => f(b) e a]
=>
ALL(b):[b e x => b e a]]]]
4 Conclusion, 1