Sum of Constant Terms

Prove: ALL(m):ALL(f):[m  n & ALL(a):[a  n => f(a)=m]
       => ALL(k):[k  n => SUM(i,1,k):f(i)=k*m]]

Peano's Axioms

1	Set(n)
	& 1  n
	& ALL(a):[a  n => next(a)  n]
	& ALL(a):[a  n => ~next(a)=1]
	& ALL(a):ALL(b):[a  n & b  n & next(a)=next(b) => a=b]
	& ALL(a):[Set(a) & 1  a & ALL(b):[b  n & b  a => next(b)  a]
	=> ALL(b):[b  n => b  a]]
	Premise

2	Set(n)
	Split, 1

3	1  n
	Split, 1

4	ALL(a):[a  n => next(a)  n]
	Split, 1

5	ALL(a):[a  n => ~next(a)=1]
	Split, 1

6	ALL(a):ALL(b):[a  n & b  n & next(a)=next(b) => a=b]
	Split, 1

7	ALL(a):[Set(a) & 1  a & ALL(b):[b  n & b  a => next(b)  a]
	=> ALL(b):[b  n => b  a]]
	Split, 1

Define: +

8	ALL(a):ALL(b):[a  n & b  n => a+b  n]
	& ALL(a):[a  n => a+1=next(a)]
	& ALL(a):ALL(b):[a  n & b  n => a+next(b)=next(a+b)]
	Definition

9	ALL(a):ALL(b):[a  n & b  n => a+b  n]
	Split, 8

10	ALL(a):[a  n => a+1=next(a)]
	Split, 8

11	ALL(a):ALL(b):[a  n & b  n => a+next(b)=next(a+b)]
	Split, 8

Define: *

12	ALL(a):ALL(b):[a  n & b  n => a*b  n]
	& ALL(a):[a  n => a*1=a]
	& ALL(a):ALL(b):[a  n & b  n => a*(b+1)=a*b+a]
	Definition

13	ALL(a):ALL(b):[a  n & b  n => a*b  n]
	Split, 12

14	ALL(a):[a  n => a*1=a]
	Split, 12

15	ALL(a):ALL(b):[a  n & b  n => a*(b+1)=a*b+a]
	Split, 12

Previous result: * is commutative

16	ALL(a):ALL(b):[a  n & b  n => a*b=b*a]
	Premise

	Define: f
	
	f is constant function.

	17	x  n & ALL(a):[a  n => f(a)=x]
		Premise

	18	x  n
		Split, 17

	19	ALL(a):[a  n => f(a)=x]
		Split, 17

		
		Prove: y  n => f(y)  n
		
		Suppose...

		20	y  n
			Premise

		21	y  n => f(y)=x
			U Spec, 19

		22	f(y)=x
			Detach, 21, 20

		23	f(y)  n
			Substitute, 22, 18

	As Required:

	24	y  n => f(y)  n
		Conclusion, 20

	Generalizing...

	25	ALL(a):[a  n => f(a)  n]
		U Gen, 24

	Define: SUM

	26	ALL(f):[ALL(a):[a  n => f(a)  n]
		=> ALL(a):[a  n => SUM(i,a,a):f(i)=f(a)]
		& ALL(a):ALL(b):[a  n & b  n => SUM(i,a,b+1):f(i)=SUM(i,a,b):f(i)+f(b+1)]]
		Definition

	27	ALL(a):[a  n => f(a)  n]
		=> ALL(a):[a  n => SUM(i,a,a):f(i)=f(a)]
		& ALL(a):ALL(b):[a  n & b  n => SUM(i,a,b+1):f(i)=SUM(i,a,b):f(i)+f(b+1)]
		U Spec, 26

	28	ALL(a):[a  n => SUM(i,a,a):f(i)=f(a)]
		& ALL(a):ALL(b):[a  n & b  n => SUM(i,a,b+1):f(i)=SUM(i,a,b):f(i)+f(b+1)]
		Detach, 27, 25

	From the definitions of SUM and f...

	29	ALL(a):[a  n => SUM(i,a,a):f(i)=f(a)]
		Split, 28

	30	ALL(a):ALL(b):[a  n & b  n => SUM(i,a,b+1):f(i)=SUM(i,a,b):f(i)+f(b+1)]
		Split, 28

		
		Prove: y  n => SUM(i,y,y):f(i)=x
		
		Suppose...

		31	y  n
			Premise

		32	y  n => SUM(i,y,y):f(i)=f(y)
			U Spec, 29

		33	SUM(i,y,y):f(i)=f(y)
			Detach, 32, 31

		34	y  n => f(y)=x
			U Spec, 19

		35	f(y)=x
			Detach, 34, 31

		36	SUM(i,y,y):f(i)=x
			Substitute, 35, 33

	As Required:

	37	y  n => SUM(i,y,y):f(i)=x
		Conclusion, 31

	From the definiton of SUM and f...

	38	ALL(a):[a  n => SUM(i,a,a):f(i)=x]
		U Gen, 37

		
		Prove: y  n & z  n => SUM(i,y,z+1):f(i)=SUM(i,y,z):f(i)+x
		
		Suppose...

		39	y  n & z  n
			Premise

		40	y  n
			Split, 39

		41	z  n
			Split, 39

		Applying the definitions of SUM and f...

		42	ALL(b):[y  n & b  n => SUM(i,y,b+1):f(i)=SUM(i,y,b):f(i)+f(b+1)]
			U Spec, 30

		43	y  n & z  n => SUM(i,y,z+1):f(i)=SUM(i,y,z):f(i)+f(z+1)
			U Spec, 42

		44	SUM(i,y,z+1):f(i)=SUM(i,y,z):f(i)+f(z+1)
			Detach, 43, 39

		45	z+1  n => f(z+1)=x
			U Spec, 19

		46	ALL(b):[z  n & b  n => z+b  n]
			U Spec, 9

		47	z  n & 1  n => z+1  n
			U Spec, 46

		48	z  n & 1  n
			Join, 41, 3

		49	z+1  n
			Detach, 47, 48

		50	f(z+1)=x
			Detach, 45, 49

		51	SUM(i,y,z+1):f(i)=SUM(i,y,z):f(i)+x
			Substitute, 50, 44

	As Required:

	52	y  n & z  n => SUM(i,y,z+1):f(i)=SUM(i,y,z):f(i)+x
		Conclusion, 39

	Generalizing...

	53	ALL(b):[y  n & b  n => SUM(i,y,b+1):f(i)=SUM(i,y,b):f(i)+x]
		U Gen, 52

	From the definitions of SUM and f...

	54	ALL(a):ALL(b):[a  n & b  n => SUM(i,a,b+1):f(i)=SUM(i,a,b):f(i)+x]
		U Gen, 53

	Sufficient: For ALL(k):[k  n => SUM(i,1,k):f(i)=k*x]

	55	SUM(i,1,1):f(i)=1*x
		& ALL(k):[k  n & SUM(i,1,k):f(i)=k*x => SUM(i,1,k+1):f(i)=(k+1)*x]
		=> ALL(k):[k  n => SUM(i,1,k):f(i)=k*x]
		Induction

	Prove: SUM(i,1,1):f(i)=1*x (Induction, Part1)
	
	Applying the defintions of SUM and f...

	56	1  n => SUM(i,1,1):f(i)=x
		U Spec, 38

	57	SUM(i,1,1):f(i)=x
		Detach, 56, 3

	58	x  n => x*1=x
		U Spec, 14

	59	x*1=x
		Detach, 58, 18

	Applying commutativity of *...

	60	ALL(b):[x  n & b  n => x*b=b*x]
		U Spec, 16

	61	x  n & 1  n => x*1=1*x
		U Spec, 60

	62	x  n & 1  n
		Join, 18, 3

	63	x*1=1*x
		Detach, 61, 62

	64	1*x=x
		Substitute, 63, 59

	As Required: (Induction, Part 1)

	65	SUM(i,1,1):f(i)=1*x
		Substitute, 64, 57

		
		Prove: y  n & SUM(i,1,y):f(i)=y*x => SUM(i,1,y+1):f(i)=(y+1)*x
		
		Suppose...

		66	y  n & SUM(i,1,y):f(i)=y*x
			Premise

		67	y  n
			Split, 66

		68	SUM(i,1,y):f(i)=y*x
			Split, 66

		Applying the definitions of SUM and f...

		69	ALL(b):[1  n & b  n => SUM(i,1,b+1):f(i)=SUM(i,1,b):f(i)+x]
			U Spec, 54

		70	1  n & y  n => SUM(i,1,y+1):f(i)=SUM(i,1,y):f(i)+x
			U Spec, 69

		71	1  n & y  n
			Join, 3, 67

		72	SUM(i,1,y+1):f(i)=SUM(i,1,y):f(i)+x
			Detach, 70, 71

		73	SUM(i,1,y+1):f(i)=y*x+x
			Substitute, 68, 72

		Applying distributive rule...

		74	ALL(b):[x  n & b  n => x*(b+1)=x*b+x]
			U Spec, 15

		75	x  n & y  n => x*(y+1)=x*y+x
			U Spec, 74

		76	x  n & y  n
			Join, 18, 67

		77	x*(y+1)=x*y+x
			Detach, 75, 76

		Applying commutativity of *...

		78	ALL(b):[x  n & b  n => x*b=b*x]
			U Spec, 16

		79	x  n & y  n => x*y=y*x
			U Spec, 78

		80	x*y=y*x
			Detach, 79, 76

		81	x*(y+1)=y*x+x
			Substitute, 80, 77

		82	x  n & y+1  n => x*(y+1)=(y+1)*x
			U Spec, 78

		83	ALL(b):[y  n & b  n => y+b  n]
			U Spec, 9

		84	y  n & 1  n => y+1  n
			U Spec, 83

		85	y  n & 1  n
			Join, 67, 3

		86	y+1  n
			Detach, 84, 85

		87	x  n & y+1  n
			Join, 18, 86

		88	x*(y+1)=(y+1)*x
			Detach, 82, 87

		89	(y+1)*x=y*x+x
			Substitute, 88, 81

		90	SUM(i,1,y+1):f(i)=(y+1)*x
			Substitute, 89, 73

	91	y  n & SUM(i,1,y):f(i)=y*x
		=> SUM(i,1,y+1):f(i)=(y+1)*x
		Conclusion, 66

	92	ALL(k):[k  n & SUM(i,1,k):f(i)=k*x
		=> SUM(i,1,k+1):f(i)=(k+1)*x]
		U Gen, 91

	93	SUM(i,1,1):f(i)=1*x
		& ALL(k):[k  n & SUM(i,1,k):f(i)=k*x
		=> SUM(i,1,k+1):f(i)=(k+1)*x]
		Join, 65, 92

	94	ALL(k):[k  n => SUM(i,1,k):f(i)=k*x]
		Detach, 55, 93

As Required:

95	x  n & ALL(a):[a  n => f(a)=x]
	=> ALL(k):[k  n => SUM(i,1,k):f(i)=k*x]
	Conclusion, 17

Generalizing...

96	ALL(f):[x  n & ALL(a):[a  n => f(a)=x]
	=> ALL(k):[k  n => SUM(i,1,k):f(i)=k*x]]
	U Gen, 95

As Required:

97	ALL(m):ALL(f):[m  n & ALL(a):[a  n => f(a)=m]
	=> ALL(k):[k  n => SUM(i,1,k):f(i)=k*m]]
	U Gen, 96