:: INT_2 semantic presentation

definition
let a be integer number ;
redefine func abs as abs c1 -> Element of NAT ;
coherence
abs a is Element of NAT
proof end;
end;

theorem Th1: :: INT_2:1
canceled;

theorem Th2: :: INT_2:2
canceled;

theorem Th3: :: INT_2:3
for a being natural number holds
( 0 divides a iff a = 0 )
proof end;

theorem Th4: :: INT_2:4
for a, b being natural number holds
( ( a = 0 or b = 0 ) iff a lcm b = 0 )
proof end;

theorem Th5: :: INT_2:5
for a, b being natural number holds
( ( a = 0 & b = 0 ) iff a hcf b = 0 )
proof end;

theorem Th6: :: INT_2:6
for a, b being natural number holds a * b = (a lcm b) * (a hcf b)
proof end;

theorem Th7: :: INT_2:7
canceled;

theorem Th8: :: INT_2:8
for n being natural number holds
( - n is Element of NAT iff n = 0 )
proof end;

theorem Th9: :: INT_2:9
- 1 is not Element of NAT by ;

theorem Th10: :: INT_2:10
for a being Integer holds
( 0 divides a iff a = 0 )
proof end;

theorem Th11: :: INT_2:11
for a being Integer holds
( a divides - a & - a divides a )
proof end;

theorem Th12: :: INT_2:12
for a, b, c being Integer st a divides b holds
a divides b * c
proof end;

theorem Th13: :: INT_2:13
for a, b, c being Integer st a divides b & b divides c holds
a divides c
proof end;

theorem Th14: :: INT_2:14
for a, b being Integer holds
( ( a divides b implies a divides - b ) & ( a divides - b implies a divides b ) & ( a divides b implies - a divides b ) & ( - a divides b implies a divides b ) & ( a divides b implies - a divides - b ) & ( - a divides - b implies a divides b ) & ( a divides - b implies - a divides b ) & ( - a divides b implies a divides - b ) )
proof end;

theorem Th15: :: INT_2:15
for a, b being Integer st a divides b & b divides a & not a = b holds
a = - b
proof end;

theorem Th16: :: INT_2:16
for a being Integer holds
( a divides 0 & 1 divides a & - 1 divides a )
proof end;

theorem Th17: :: INT_2:17
for a being Integer holds
( ( not a divides 1 & not a divides - 1 ) or a = 1 or a = - 1 )
proof end;

theorem Th18: :: INT_2:18
for a being Integer st ( a = 1 or a = - 1 ) holds
( a divides 1 & a divides - 1 ) by ;

theorem Th19: :: INT_2:19
for a, b, c being Integer holds
( a,b are_congruent_mod c iff c divides a - b )
proof end;

theorem Th20: :: INT_2:20
for a being Integer holds abs a is Element of NAT ;

theorem Th21: :: INT_2:21
for a, b being Integer holds
( a divides b iff abs a divides abs b )
proof end;

definition
let a be Integer;
let b be Integer;
canceled;
func c1 lcm' c2 -> Integer equals :: INT_2:def 2
(abs a) lcm (abs b);
coherence
(abs a) lcm (abs b) is Integer
;
commutativity
for b1, a, b being Integer st b1 = (abs a) lcm (abs b) holds
b1 = (abs b) lcm (abs a)
;
end;

:: deftheorem Def1 INT_2:def 1 :
canceled;

:: deftheorem Def2 defines lcm' INT_2:def 2 :
for a, b being Integer holds a lcm' b = (abs a) lcm (abs b);

theorem Th22: :: INT_2:22
canceled;

theorem Th23: :: INT_2:23
for a, b being Integer holds a lcm' b is Element of NAT ;

theorem Th24: :: INT_2:24
canceled;

theorem Th25: :: INT_2:25
for a, b being Integer holds a divides a lcm' b
proof end;

theorem Th26: :: INT_2:26
for b, a being Integer holds b divides a lcm' b by ;

theorem Th27: :: INT_2:27
for a, b, c being Integer st a divides c & b divides c holds
a lcm' b divides c
proof end;

definition
let a be Integer;
let b be Integer;
func c1 gcd c2 -> Integer equals :: INT_2:def 3
(abs a) hcf (abs b);
coherence
(abs a) hcf (abs b) is Integer
;
commutativity
for b1, a, b being Integer st b1 = (abs a) hcf (abs b) holds
b1 = (abs b) hcf (abs a)
;
end;

:: deftheorem Def3 defines gcd INT_2:def 3 :
for a, b being Integer holds a gcd b = (abs a) hcf (abs b);

theorem Th28: :: INT_2:28
canceled;

theorem Th29: :: INT_2:29
for a, b being Integer holds a gcd b is Element of NAT ;

theorem Th30: :: INT_2:30
canceled;

theorem Th31: :: INT_2:31
for a, b being Integer holds a gcd b divides a
proof end;

theorem Th32: :: INT_2:32
for a, b being Integer holds a gcd b divides b by Th3;

theorem Th33: :: INT_2:33
for a, b, c being Integer st c divides a & c divides b holds
c divides a gcd b
proof end;

theorem Th34: :: INT_2:34
for a, b being Integer holds
( ( a = 0 or b = 0 ) iff a lcm' b = 0 )
proof end;

theorem Th35: :: INT_2:35
for a, b being Integer holds
( ( a = 0 & b = 0 ) iff a gcd b = 0 )
proof end;

definition
let a be Integer;
let b be Integer;
pred c1,c2 are_relative_prime means :Def4: :: INT_2:def 4
a gcd b = 1;
symmetry
for a, b being Integer st a gcd b = 1 holds
b gcd a = 1
;
end;

:: deftheorem Def4 defines are_relative_prime INT_2:def 4 :
for a, b being Integer holds
( a,b are_relative_prime iff a gcd b = 1 );

theorem Th36: :: INT_2:36
canceled;

theorem Th37: :: INT_2:37
canceled;

theorem Th38: :: INT_2:38
for a, b being Integer st ( a <> 0 or b <> 0 ) holds
ex a1, b1 being Integer st
( a = (a gcd b) * a1 & b = (a gcd b) * b1 & a1,b1 are_relative_prime )
proof end;

theorem Th39: :: INT_2:39
for a, b, c being Integer st a,b are_relative_prime holds
( (c * a) gcd (c * b) = abs c & (c * a) gcd (b * c) = abs c & (a * c) gcd (c * b) = abs c & (a * c) gcd (b * c) = abs c )
proof end;

theorem Th40: :: INT_2:40
for c, a, b being Integer st c divides a * b & a,c are_relative_prime holds
c divides b
proof end;

theorem Th41: :: INT_2:41
for a, c, b being Integer st a,c are_relative_prime & b,c are_relative_prime holds
a * b,c are_relative_prime
proof end;

definition
let p be natural number ;
attr a1 is prime means :Def5: :: INT_2:def 5
( p > 1 & ( for n being natural number holds
( not n divides p or n = 1 or n = p ) ) );
end;

:: deftheorem Def5 defines prime INT_2:def 5 :
for p being natural number holds
( p is prime iff ( p > 1 & ( for n being natural number holds
( not n divides p or n = 1 or n = p ) ) ) );

definition
let m be natural number , n be natural number ;
pred c1,c2 are_relative_prime means :Def6: :: INT_2:def 6
m hcf n = 1;
symmetry
for m, n being natural number st m hcf n = 1 holds
n hcf m = 1
;
end;

:: deftheorem Def6 defines are_relative_prime INT_2:def 6 :
for m, n being natural number holds
( m,n are_relative_prime iff m hcf n = 1 );

theorem Th42: :: INT_2:42
canceled;

theorem Th43: :: INT_2:43
canceled;

theorem Th44: :: INT_2:44
2 is prime
proof end;

theorem Th45: :: INT_2:45
canceled;

theorem Th46: :: INT_2:46
not 4 is prime
proof end;

registration
cluster natural prime set ;
existence
ex b1 being natural number st b1 is prime
by ;
cluster non zero natural non prime set ;
existence
ex b1 being natural number st
( not b1 is zero & not b1 is prime )
proof end;
end;

theorem Th47: :: INT_2:47
for p, q being natural number st p is prime & q is prime & not p,q are_relative_prime holds
p = q
proof end;

theorem Th48: :: INT_2:48
for l being natural number st l >= 2 holds
ex p being Element of NAT st
( p is prime & p divides l )
proof end;