:: EULER_1 semantic presentation

Lemma1: for b1, b2 being Nat holds b1 gcd b2 = b1 hcf b2
proof end;

Lemma2: for b1, b2 being Nat holds
( b1,b2 are_relative_prime iff b1,b2 are_relative_prime )
proof end;

Lemma3: for b1, b2 being Nat
for b3 being Integer st b3 > 0 & b1 = b3 & b2 > 0 holds
b3 mod b2 = b1 mod b2
proof end;

Lemma4: for b1, b2 being Nat
for b3 being Integer holds
( b1 = b3 & b2 > 0 & b2 divides b3 iff ( b1 = b3 & b2 > 0 & b2 divides b1 ) )
proof end;

Lemma5: for b1 being Nat
for b2 being Integer st b1 <> 0 & [\(b2 / b1)/] + 1 >= b2 / b1 holds
b1 >= b2 - ([\(b2 / b1)/] * b1)
proof end;

theorem Th1: :: EULER_1:1
for b1, b2 being natural number holds
( b1 in b2 iff b1 < b2 )
proof end;

Lemma7: not 1 is prime
by INT_2:def 5;

theorem Th2: :: EULER_1:2
for b1 being Nat holds
( b1,b1 are_relative_prime iff b1 = 1 )
proof end;

theorem Th3: :: EULER_1:3
for b1, b2 being Nat st b1 <> 0 & b1 < b2 & b2 is prime holds
b1,b2 are_relative_prime
proof end;

theorem Th4: :: EULER_1:4
for b1, b2 being Nat holds
( b1 is prime & b2 in { b3 where B is Nat : ( b1,b3 are_relative_prime & b3 >= 1 & b3 <= b1 ) } iff ( b1 is prime & b2 in b1 & not b2 in {0} ) )
proof end;

theorem Th5: :: EULER_1:5
for b1 being finite set
for b2 being set st b2 in b1 holds
card (b1 \ {b2}) = (card b1) - (card {b2})
proof end;

theorem Th6: :: EULER_1:6
for b1, b2 being Nat st b1 hcf b2 = 1 holds
for b3 being Nat holds (b1 * b3) hcf (b2 * b3) = b3
proof end;

theorem Th7: :: EULER_1:7
for b1, b2, b3 being Nat st b1 <> 0 & b2 <> 0 & b3 <> 0 & (b1 * b3) hcf (b2 * b3) = b3 holds
b1,b2 are_relative_prime
proof end;

theorem Th8: :: EULER_1:8
for b1, b2 being Nat st b1 hcf b2 = 1 holds
(b1 + b2) hcf b2 = 1
proof end;

theorem Th9: :: EULER_1:9
for b1, b2, b3 being Nat holds (b1 + (b2 * b3)) hcf b2 = b1 hcf b2
proof end;

theorem Th10: :: EULER_1:10
for b1, b2 being Nat st b1,b2 are_relative_prime holds
ex b3 being Nat st
( ex b4, b5 being Integer st
( b3 = (b4 * b1) + (b5 * b2) & b3 > 0 ) & ( for b4 being Nat st ex b5, b6 being Integer st
( b4 = (b5 * b1) + (b6 * b2) & b4 > 0 ) holds
b3 <= b4 ) )
proof end;

theorem Th11: :: EULER_1:11
for b1, b2 being Nat st b1,b2 are_relative_prime holds
for b3 being Nat ex b4, b5 being Integer st (b4 * b1) + (b5 * b2) = b3
proof end;

theorem Th12: :: EULER_1:12
for b1, b2 being non empty finite set st ex b3 being Function of b1,b2 st
( b3 is one-to-one & b3 is onto ) holds
Card b1 = Card b2
proof end;

theorem Th13: :: EULER_1:13
for b1, b2, b3 being Integer holds (b1 + (b2 * b3)) mod b3 = b1 mod b3
proof end;

theorem Th14: :: EULER_1:14
for b1, b2, b3 being Nat st b1 <> 0 & b2 <> 0 & b3 <> 0 & b3 divides b1 * b2 & b1,b3 are_relative_prime holds
b3 divides b2
proof end;

theorem Th15: :: EULER_1:15
for b1, b2, b3 being Nat st b1 <> 0 & b2 <> 0 & b3 <> 0 & b1,b3 are_relative_prime & b2,b3 are_relative_prime holds
b1 * b2,b3 are_relative_prime
proof end;

theorem Th16: :: EULER_1:16
for b1, b2, b3 being Integer st b1 <> 0 & b2 <> 0 & b3 > 0 holds
(b3 * b1) gcd (b3 * b2) = b3 * (b1 gcd b2)
proof end;

theorem Th17: :: EULER_1:17
for b1, b2 being Nat
for b3 being Integer st b1 <> 0 & b2 <> 0 holds
(b1 + (b3 * b2)) gcd b2 = b1 gcd b2
proof end;

definition
let c1 be Nat;
func Euler c1 -> Nat equals :: EULER_1:def 1
Card { b1 where B is Nat : ( a1,b1 are_relative_prime & b1 >= 1 & b1 <= a1 ) } ;
coherence
Card { b1 where B is Nat : ( c1,b1 are_relative_prime & b1 >= 1 & b1 <= c1 ) } is Nat
proof end;
end;

:: deftheorem Def1 defines Euler EULER_1:def 1 :
for b1 being Nat holds Euler b1 = Card { b2 where B is Nat : ( b1,b2 are_relative_prime & b2 >= 1 & b2 <= b1 ) } ;

set c1 = { b1 where B is Nat : ( 1,b1 are_relative_prime & b1 >= 1 & b1 <= 1 ) } ;

for b1 being set holds
( b1 in { b2 where B is Nat : ( 1,b2 are_relative_prime & b2 >= 1 & b2 <= 1 ) } iff b1 = 1 )
proof end;

then E24: Card {1} = Card { b1 where B is Nat : ( 1,b1 are_relative_prime & b1 >= 1 & b1 <= 1 ) } by TARSKI:def 1
.= Euler 1 ;

theorem Th18: :: EULER_1:18
Euler 1 = 1 by Lemma24, CARD_1:79;

set c2 = { b1 where B is Nat : ( 2,b1 are_relative_prime & b1 >= 1 & b1 <= 2 ) } ;

for b1 being set holds
( b1 in { b2 where B is Nat : ( 2,b2 are_relative_prime & b2 >= 1 & b2 <= 2 ) } iff b1 = 1 )
proof end;

then E25: Card {1} = Card { b1 where B is Nat : ( 2,b1 are_relative_prime & b1 >= 1 & b1 <= 2 ) } by TARSKI:def 1
.= Euler 2 ;

theorem Th19: :: EULER_1:19
Euler 2 = 1 by Lemma25, CARD_1:79;

theorem Th20: :: EULER_1:20
for b1 being Nat st b1 > 1 holds
Euler b1 <= b1 - 1
proof end;

theorem Th21: :: EULER_1:21
for b1 being Nat st b1 is prime holds
Euler b1 = b1 - 1
proof end;

theorem Th22: :: EULER_1:22
for b1, b2 being Nat st b1 > 1 & b2 > 1 & b1,b2 are_relative_prime holds
Euler (b1 * b2) = (Euler b1) * (Euler b2)
proof end;