Article PEPIN, MML version 4.99.1005

:: PEPIN:th 1
theorem
for b1 being natural set holds
   b1,b1 + 1 are_relative_prime;

:: PEPIN:th 2
theorem
for b1, b2 being natural set
      st b2 is prime & not b1,b2 are_relative_prime
   holds b1 hcf b2 = b2;

:: PEPIN:th 3
theorem
for b1, b2, b3 being natural set
      st b1 divides b3 * b2 & b3,b1 are_relative_prime
   holds b1 divides b2;

:: PEPIN:th 4
theorem
for b1, b2, b3 being natural set
      st b1 divides b2 & b3 divides b2 & b1,b3 are_relative_prime
   holds b1 * b3 divides b2;

:: PEPIN:funcreg 1
registration
  let a1 be natural set;
  cluster a1 ^2 -> natural;
end;

:: PEPIN:funcnot 1 => PEPIN:func 1
definition
  let a1 be Element of NAT;
  redefine func a1 ^2 -> Element of NAT;
end;

:: PEPIN:th 5
theorem
for b1 being integer set
      st 1 < b1
   holds 1 mod b1 = 1;

:: PEPIN:th 6
theorem
for b1, b2 being natural set
      st b1 <> 0
   holds    b1 divides b2
   iff
      b2 mod b1 = 0;

:: PEPIN:th 7
theorem
for b1, b2 being natural set
      st b1 <> 0 & b1 divides b2 mod b1
   holds b1 divides b2;

:: PEPIN:th 8
theorem
for b1, b2, b3 being natural set
      st 0 < b2 & b1 mod b2 = b3
   holds b2 divides b1 - b3;

:: PEPIN:th 9
theorem
for b1, b2, b3 being natural set
      st b1 * b2 <> 0 & b2 is prime & b3 mod (b1 * b2) < b2
   holds b3 mod (b1 * b2) = b3 mod b2;

:: PEPIN:th 10
theorem
for b1 being natural set
for b2 being integer set holds
   ((b2 * b1) + 1) mod b1 = 1 mod b1;

:: PEPIN:th 11
theorem
for b1, b2, b3 being natural set
      st 1 < b1 & (b2 * b3) mod b1 = b3 mod b1 & b3,b1 are_relative_prime
   holds b2 mod b1 = 1;

:: PEPIN:th 12
theorem
for b1, b2, b3 being natural set holds
(b1 |^ b2) mod b3 = ((b1 mod b3) |^ b2) mod b3;

:: PEPIN:th 13
theorem
for b1 being natural set
      st b1 <> 0
   holds b1 ^2 mod (b1 + 1) = 1;

:: PEPIN:th 14
theorem
for b1, b2, b3 being natural set
      st b1 ^2 < b2 & b3 mod b2 = b1
   holds b3 ^2 mod b2 = b1 ^2;

:: PEPIN:th 15
theorem
for b1, b2 being natural set
      st b1 is prime & b2 mod b1 = - 1
   holds b2 ^2 mod b1 = 1;

:: PEPIN:th 16
theorem
for b1 being natural set
      st b1 is even
   holds b1 + 1 is odd;

:: PEPIN:th 17
theorem
for b1 being natural set
      st 2 < b1 & b1 is prime
   holds b1 is odd;

:: PEPIN:th 18
theorem
for b1 being natural set
      st 0 < b1
   holds 2 to_power b1 is even;

:: PEPIN:th 19
theorem
for b1, b2 being natural set
      st b1 is odd & b2 is odd
   holds b1 * b2 is odd;

:: PEPIN:th 20
theorem
for b1, b2 being natural set
      st b1 is odd
   holds b1 |^ b2 is odd;

:: PEPIN:th 21
theorem
for b1, b2 being natural set
      st 0 < b1 & b2 is even
   holds b2 |^ b1 is even;

:: PEPIN:th 22
theorem
for b1 being natural set holds
      2 divides b1
   iff
      b1 is even;

:: PEPIN:th 23
theorem
for b1, b2 being natural set
      st b1 * b2 is even & b1 is odd
   holds b2 is even;

:: PEPIN:th 24
theorem
for b1 being natural set holds
   b1 |^ 2 = b1 ^2;

:: PEPIN:th 26
theorem
for b1, b2 being natural set
      st 1 < b1 & 0 < b2
   holds 1 < b1 |^ b2;

:: PEPIN:th 27
theorem
for b1, b2 being natural set
      st b1 <> 0 & b2 <> 0
   holds b1 |^ b2 = b1 * (b1 |^ (b2 -' 1));

:: PEPIN:th 28
theorem
for b1, b2 being natural set
      st b2 mod 2 = 0
   holds (b1 |^ (b2 div 2)) ^2 = b1 |^ b2;

:: PEPIN:th 29
theorem
for b1, b2 being natural set
      st b1 <> 0 & 1 <= b2
   holds (b1 |^ b2) div b1 = b1 |^ (b2 -' 1);

:: PEPIN:th 30
theorem
for b1 being natural set holds
   2 |^ (b1 + 1) = (2 |^ b1) + (2 |^ b1);

:: PEPIN:th 31
theorem
for b1, b2, b3 being natural set
      st 1 < b1 & b1 |^ b2 = b1 |^ b3
   holds b2 = b3;

:: PEPIN:th 32
theorem
for b1, b2 being natural set holds
   b1 <= b2
iff
   2 |^ b1 divides 2 |^ b2;

:: PEPIN:th 33
theorem
for b1, b2, b3 being natural set
      st b1 is prime & b2 divides b1 |^ b3 & b2 <> 1
   holds ex b4 being Element of NAT st
      b2 = b1 * b4;

:: PEPIN:th 34
theorem
for b1, b2, b3 being natural set
      st b3 <> 0 & b1 is prime & b3 < b1 |^ (b2 + 1)
   holds    b3 divides b1 |^ (b2 + 1)
   iff
      b3 divides b1 |^ b2;

:: PEPIN:th 35
theorem
for b1, b2, b3 being natural set
      st b1 is prime & b2 divides b1 |^ b3 & b2 <> 0
   holds ex b4 being Element of NAT st
      b2 = b1 |^ b4 & b4 <= b3;

:: PEPIN:th 36
theorem
for b1, b2, b3 being natural set
      st 1 < b1 & b2 mod b1 = 1
   holds (b2 |^ b3) mod b1 = 1;

:: PEPIN:th 37
theorem
for b1, b2 being natural set
      st 0 < b1
   holds (b2 |^ b1) mod b2 = 0;

:: PEPIN:th 38
theorem
for b1, b2 being natural set
      st b2 is prime & b1,b2 are_relative_prime
   holds (b1 |^ (b2 -' 1)) mod b2 = 1;

:: PEPIN:th 39
theorem
for b1, b2, b3 being natural set
      st b1 is prime & 1 < b2 & b2 divides b1 |^ b3 & not b2 divides (b1 |^ b3) div b1
   holds b2 = b1 |^ b3;

:: PEPIN:funcnot 2 => PEPIN:func 2
definition
  let a1 be integer set;
  redefine func a1 ^2 -> Element of NAT;
end;

:: PEPIN:th 40
theorem
for b1, b2 being natural set
      st 1 < b2
   holds    b1 mod b2 = 1
   iff
      b1,1 are_congruent_mod b2;

:: PEPIN:th 43
theorem
for b1, b2, b3, b4 being integer set
      st b1,b2 are_congruent_mod b3 & b1,b4 are_congruent_mod b3
   holds b2,b4 are_congruent_mod b3;

:: PEPIN:th 44
theorem
3 is prime;

:: PEPIN:th 45
theorem
for b1 being natural set
      st b1 <> 0
   holds Euler b1 <> 0;

:: PEPIN:th 46
theorem
for b1 being natural set
      st b1 <> 0
   holds - b1 < b1;

:: PEPIN:th 48
theorem
for b1 being natural set
      st b1 <> 0
   holds b1 div b1 = 1;

:: PEPIN:funcnot 3 => PEPIN:func 3
definition
  let a1, a2, a3 be natural set;
  func Crypto(A2,A3,A1) -> Element of NAT equals
    (a2 |^ a1) mod a3;
end;

:: PEPIN:def 1
theorem
for b1, b2, b3 being natural set holds
Crypto(b2,b3,b1) = (b2 |^ b1) mod b3;

:: PEPIN:th 49
theorem
for b1, b2, b3, b4, b5 being natural set
   st b1 is prime & b2 is prime & b1 <> b2 & b3 = b1 * b2 & b4,Euler b3 are_relative_prime & (b4 * b5) mod Euler b3 = 1
for b6 being Element of NAT
      st b6 < b3
   holds Crypto(Crypto(b6,b3,b4),b3,b5) = b6;

:: PEPIN:funcnot 4 => PEPIN:func 4
definition
  let a1, a2 be natural set;
  assume 1 < a2 & a1,a2 are_relative_prime;
  func order(A1,A2) -> Element of NAT means
    0 < it &
     (a1 |^ it) mod a2 = 1 &
     (for b1 being natural set
           st 0 < b1 & (a1 |^ b1) mod a2 = 1
        holds 0 < it & it <= b1);
end;

:: PEPIN:def 2
theorem
for b1, b2 being natural set
   st 1 < b2 & b1,b2 are_relative_prime
for b3 being Element of NAT holds
      b3 = order(b1,b2)
   iff
      0 < b3 &
       (b1 |^ b3) mod b2 = 1 &
       (for b4 being natural set
             st 0 < b4 & (b1 |^ b4) mod b2 = 1
          holds 0 < b3 & b3 <= b4);

:: PEPIN:th 50
theorem
for b1 being natural set
      st 1 < b1
   holds order(1,b1) = 1;

:: PEPIN:th 52
theorem
for b1, b2, b3 being natural set
      st 1 < b1 & 0 < b2 & (b3 |^ b2) mod b1 = 1 & b3,b1 are_relative_prime
   holds order(b3,b1) divides b2;

:: PEPIN:th 53
theorem
for b1, b2, b3 being natural set
      st 1 < b1 & b2,b1 are_relative_prime & order(b2,b1) divides b3
   holds (b2 |^ b3) mod b1 = 1;

:: PEPIN:th 54
theorem
for b1, b2 being natural set
      st b1 is prime & b2,b1 are_relative_prime
   holds order(b2,b1) divides b1 -' 1;

:: PEPIN:funcnot 5 => PEPIN:func 5
definition
  let a1 be natural set;
  func Fermat A1 -> Element of NAT equals
    (2 |^ (2 |^ a1)) + 1;
end;

:: PEPIN:def 3
theorem
for b1 being natural set holds
   Fermat b1 = (2 |^ (2 |^ b1)) + 1;

:: PEPIN:th 55
theorem
Fermat 0 = 3;

:: PEPIN:th 56
theorem
Fermat 1 = 5;

:: PEPIN:th 57
theorem
Fermat 2 = 17;

:: PEPIN:th 58
theorem
Fermat 3 = 257;

:: PEPIN:th 59
theorem
Fermat 4 = (256 * 256) + 1;

:: PEPIN:th 60
theorem
for b1 being natural set holds
   2 < Fermat b1;

:: PEPIN:th 61
theorem
for b1, b2 being natural set
      st b1 is prime & 2 < b1 & b1 divides Fermat b2
   holds ex b3 being Element of NAT st
      b1 = (b3 * (2 |^ (b2 + 1))) + 1;

:: PEPIN:th 62
theorem
for b1 being natural set
      st b1 <> 0
   holds 3,Fermat b1 are_relative_prime;

:: PEPIN:th 63
theorem
for b1 being natural set
      st 3 |^ (((Fermat b1) -' 1) div 2),- 1 are_congruent_mod Fermat b1
   holds Fermat b1 is prime;

:: PEPIN:th 64
theorem
5 is prime;

:: PEPIN:th 65
theorem
17 is prime;

:: PEPIN:th 66
theorem
257 is prime;

:: PEPIN:th 67
theorem
(256 * 256) + 1 is prime;

:: PEPIN:th 68
theorem
for b1, b2 being natural set
      st 0 < b2 & b1 mod b2 = 0
   holds b1 div b2 = b1 / b2;

:: PEPIN:th 69
theorem
for b1, b2 being natural set
      st 0 < b2
   holds (b1 |^ b2) div b1 = (b1 |^ b2) / b1;

:: PEPIN:th 70
theorem
for b1 being real set
for b2 being natural set
      st 0 < b2 & 1 < b1
   holds 1 < b1 |^ b2;

:: PEPIN:th 71
theorem
for b1 being real set
for b2, b3 being natural set
      st 1 < b1 & b3 < b2
   holds b1 |^ b3 < b1 |^ b2;