The Mizar article:

The Euler's Function

by
Yoshinori Fujisawa, and
Yasushi Fuwa

Received December 10, 1997

Copyright (c) 1997 Association of Mizar Users

MML identifier: EULER_1
[ MML identifier index ]


environ

 vocabulary INT_1, INT_2, ARYTM_3, ABSVALUE, NAT_1, ARYTM_1, ORDINAL2, ARYTM,
      FILTER_0, FINSET_1, CARD_1, BOOLE, FUNCT_1, SGRAPH1, RELAT_1, FINSEQ_1,
      EULER_1;
 notation TARSKI, XBOOLE_0, ZFMISC_1, SUBSET_1, ORDINAL2, ORDINAL1, NUMBERS,
      XCMPLX_0, XREAL_0, CARD_1, INT_1, GROUP_1, NAT_1, INT_2, FINSEQ_1,
      FINSET_1, RELAT_1, FUNCT_1, FUNCT_2;
 constructors NAT_1, GROUP_1, INT_2, REAL_1, DOMAIN_1, MEMBERED;
 clusters SUBSET_1, FINSET_1, INT_1, CARD_1, XREAL_0, FINSEQ_1, RELSET_1,
      ARYTM_3, MEMBERED, ORDINAL2;
 requirements REAL, NUMERALS, SUBSET, BOOLE, ARITHM;
 definitions TARSKI, FUNCT_1, FUNCT_2, XBOOLE_0;
 theorems TARSKI, INT_2, AXIOMS, FINSEQ_1, CARD_1, FINSET_1, NAT_LAT, CQC_THE1,
      NAT_1, ABSVALUE, CARD_2, REAL_1, RLVECT_1, ZFMISC_1, INT_1, GR_CY_2,
      FUNCT_1, FUNCT_2, SQUARE_1, PRE_FF, DOMAIN_1, RELSET_1, ORDINAL2,
      XBOOLE_0, XBOOLE_1, XCMPLX_0, XCMPLX_1;
 schemes NAT_1, FUNCT_7;

begin :: Preliminary

reserve a,b,c,k,l,m,n for Nat,
        i,j,x,y for Integer;

Lm1:0 <= k & 0 <= n implies k gcd n = k hcf n
proof
  assume 0 <= k & 0 <= n;
  then abs(k) = k & abs(n) = n by ABSVALUE:def 1;
  hence thesis by INT_2:def 3;
end;

Lm2:a,(b qua Integer) are_relative_prime iff
                                    a,b are_relative_prime
proof
  thus a,(b qua Integer) are_relative_prime implies
                                    a,b are_relative_prime
  proof
    assume a,(b qua Integer) are_relative_prime;
    then A1:a gcd b = 1 by INT_2:def 4;
      a >= 0 & b >= 0 by NAT_1:18;
    then a hcf b = 1 by A1,Lm1;
    hence thesis by INT_2:def 6;
  end;
  assume a,b are_relative_prime;
  then A2:a hcf b = 1 by INT_2:def 6;
    a >= 0 & b >= 0 by NAT_1:18;
  then a gcd b = 1 by A2,Lm1;
  hence thesis by INT_2:def 4;
end;

Lm3:i > 0 & a = i & k > 0 implies i mod k = a mod k
proof
  assume A1:i > 0 & a = i & k > 0;
  then i mod k = a - (i div k)*k by INT_1:def 8;
  then a - ((i div k)*k - (i div k)*k) = i mod k + (i div k)*k by XCMPLX_1:37;
  then A2:a - 0 = i mod k + (i div k)*k by XCMPLX_1:14;
    0/k < i/k by A1,REAL_1:73;
  then 0 <= i/k & 0 <> i/k & i/k <= [\ i/k /]+1 by INT_1:52;
  then 0 + 1 <= [\ i/k /]+1 by INT_1:20;
  then 0 + 1 + -1 <= [\ i/k /]+1 + -1 by AXIOMS:24;
  then 0 + (1 + -1) <= [\ i/k /] + (1 + -1) by XCMPLX_1:1;
  then 0 <= i div k by INT_1:def 7;
  then reconsider t = i div k as Nat by INT_1:16;
    i mod k >= 0 by A1,GR_CY_2:2;
  then reconsider tt = i mod k as Nat by INT_1:16;
  A3:a = t*k + tt by A2;
    tt < k by A1,GR_CY_2:3;
  hence thesis by A3,NAT_1:def 2;
end;

Lm4:
  a = i & m > 0 & m divides i iff a = i & m > 0 & m divides a
proof
  thus a = i & m > 0 & m divides i implies a = i & m > 0 & m divides a
  proof
   assume A1: a = i & m > 0 & m divides i;
    then consider j such that
      A2: i = m*j by INT_1:def 9;
      j >= 0
    proof
      assume not j >= 0;
      then m*j < 0*j by A1,REAL_1:71;
      hence contradiction by A1,A2,NAT_1:18;
    end;
    then reconsider j as Nat by INT_1:16;
      a = m*j by A1,A2;
    hence thesis by A1,NAT_1:def 3;
  end;
  assume A3: a = i & m > 0 & m divides a;
  then ex j being Nat st a = m*j by NAT_1:def 3;
  hence thesis by A3,INT_1:def 9;
end;

Lm5:k <> 0 & ([\ j/k /]) + 1 >= j/k implies k >= j - (([\ j/k /])*k)
proof
  assume A1:k <> 0 & ([\ j/k /]) + 1 >= j/k;
  A2:k >= 0 by NAT_1:18;
    ([\ j/k /]) + 1 + -1 >= j/k + -1 by A1,AXIOMS:24;
  then ([\ j/k /]) + (1 + -1) >= j/k + -1 by XCMPLX_1:1;
  then ([\ j/k /]) >= j/k -1 by XCMPLX_0:def 8;
  then (([\ j/k /]))*k >= ((j/k)-1)*k by A2,AXIOMS:25;
  then -(((j/k) - 1)*k) >= -(([\ j/k /])*k) by REAL_1:50;
  then j + -(((j/k) - 1)*k) >= j + -(([\ j/k /])*k) by AXIOMS:24;
  then j - (((j/k) - 1)*k) >= j + -(([\ j/k /])*k) by XCMPLX_0:def 8;
  then j - (((j/k) - 1)*k) >= j - (([\ j/k /])*k) by XCMPLX_0:def 8;
  then j - ((j/k)*k - 1*k) >= j - (([\ j/k /])*k) by XCMPLX_1:40;
  then j -(j - k) >= j - (([\ j/k /])*k) by A1,XCMPLX_1:88;
  then j - j + k >= j - (([\ j/k /])*k) by XCMPLX_1:37;
  then j + -j + k >= j - (([\ j/k /])*k) by XCMPLX_0:def 8;
  then 0 + k >= j - (([\ j/k /])*k) by XCMPLX_0:def 6;
  hence k >= j - (([\ j/k /])*k);
end;

theorem Th1:
  for k, n being natural number holds k in n iff k < n
proof
  let k, n be natural number;
A1:k in NAT & n in NAT by ORDINAL2:def 21;
  thus k in n implies k < n
  proof
    assume k in n;
    then k in {l : l < n} by AXIOMS:30;
    then ex j being Nat st k = j & j < n;
    hence k < n;
  end;
  assume k < n;
  then k in {l: l < n} by A1;
  hence thesis by AXIOMS:30;
end;

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

theorem Th2:
  n,n are_relative_prime iff n = 1
proof
    n hcf n = n;
  hence thesis by INT_2:def 6;
end;

theorem Th3:
  k <> 0 & k < n & n is prime implies k,n are_relative_prime
proof
  assume A1:k <> 0 & k < n & n is prime;
  A2:(k hcf n) divides n by NAT_1:def 5;
  per cases by A1,A2,INT_2:def 5;
    suppose k hcf n = 1;
      hence k,n are_relative_prime by INT_2:def 6;
    suppose k hcf n = n;
      then A3:n divides k by NAT_1:def 5;
        0 < k by A1,NAT_1:19;
  hence thesis by A1,A3,NAT_1:54;
end;

theorem Th4:
  n is prime &
    k in {kk where kk is Nat:n,kk are_relative_prime & kk >= 1 & kk <= n}
                                 iff n is prime & k in n & not k in {0}
proof
  set X = {kk where kk is Nat : n,kk are_relative_prime & kk >= 1 & kk <= n};
  thus n is prime & k in X implies n is prime & k in n & not k in {0}
  proof
    assume A1:n is prime & k in X;
    then A2:ex kk being Nat st
             kk = k & n,kk are_relative_prime & kk >= 1 & kk <= n;
    then k <> n by A1,Lm6,Th2;
    then A3:k < n by A2,REAL_1:def 5;
      not k = 0 by A2;
    hence thesis by A1,A3,Th1,TARSKI:def 1;
  end;
  assume A4:n is prime & k in n & not k in {0};
  then A5:k < n by Th1;
  A6:k <> 0 by A4,TARSKI:def 1;
  then A7:k >= 1 by RLVECT_1:99;
    k,n are_relative_prime by A4,A5,A6,Th3;
  then (k hcf n) = 1 by INT_2:def 6;
  then n,k are_relative_prime by INT_2:def 6;
  hence thesis by A4,A5,A7;
end;

theorem Th5:
  for A being finite set, x being set st x in A holds
                            Card(A \ {x}) = Card A - Card{x}
proof
  let A be finite set,x be set; assume x in A;
  then {x} c= A by ZFMISC_1:37;
  hence thesis by CARD_2:63;
end;

theorem Th6:
  a hcf b = 1 implies for c holds a*c hcf b*c = c
proof
  assume A1:a hcf b = 1;
    a >= 0 & b >= 0 by NAT_1:18;
  then A2:a = abs(a) & b = abs(b) by ABSVALUE:def 1;
  reconsider a' = a , b' = b as Integer;
    a' gcd b' = 1 by A1,A2,INT_2:def 3;
  then A3:a',b' are_relative_prime by INT_2:def 4;
  let m be Nat;
  A4:m >= 0 by NAT_1:18;
    a*m >= 0 & b*m >= 0 by NAT_1:18;
  then A5:a*m = abs(a*m) & b*m = abs(b*m) by ABSVALUE:def 1;
   abs(a*m) = abs(a')*abs(m) & abs(b*m) = abs(b')*abs(m) by ABSVALUE:10;
  then a*m hcf b*m = a'*abs(m) gcd b'*abs(m) by A2,A5,INT_2:def 3
             .= abs(abs(m)) by A3,INT_2:39
             .= m by A4,ABSVALUE:def 1;
  hence thesis;
end;

theorem Th7:
  a <> 0 & b <> 0 & c <> 0 & a*c hcf b*c = c
                            implies a,b are_relative_prime
proof
  assume A1:a <> 0 & b <> 0 & c <> 0 & a*c hcf b*c = c;
  then A2:a*c <> 0*c & b*c <> 0*c by XCMPLX_1:5;
  A3:a*c >= 0 & b*c >= 0 by NAT_1:18;
  consider a1,b1 being Integer such that
    A4:a*c = (a*c gcd b*c)*a1 and
    A5:b*c = (a*c gcd b*c)*b1 and
    A6:a1,b1 are_relative_prime by A2,INT_2:38;
    a*c = c*a1 & b*c = c*b1 by A1,A3,A4,A5,Lm1;
  then a = a1 & b = b1 by A1,XCMPLX_1:5;
  hence thesis by A6,Lm2;
end;

theorem Th8:
  a hcf b = 1 implies (a + b) hcf b = 1
proof
  assume A1:a hcf b = 1;
  set n = (a + b) hcf b;
  A2:n divides (a + b) & n divides b by NAT_1:def 5;
  then n divides a by NAT_1:57;
  then n divides a hcf b by A2,NAT_LAT:32;
  then A3: n <= 1 + 0 & n >= 0 by A1,NAT_1:18,54;
  per cases by A3,NAT_1:27;
    suppose n = 1;
    hence (a + b) hcf b = 1;
    suppose n = 0;
    then (a + b) = 0 & b = 0 by INT_2:5;
  hence thesis by A1;
end;

theorem Th9:
  for c holds (a + b*c) hcf b = a hcf b
proof
  defpred P[Nat] means (a + b*$1) hcf b = a hcf b;
  A1:P[0];
  A2:for k being Nat st P[k] holds P[k + 1]
  proof
    let kk be Nat;
    assume A3:(a + b*kk) hcf b = a hcf b;
      now per cases by NAT_1:19;
      suppose b = 0;
        hence (a + b*(kk + 1)) hcf b = a hcf b;
      suppose A4:b > 0;
        A5:a hcf b divides (a + b*kk) by A3,NAT_1:def 5;
        then A6:(a + b*kk)
               = (a hcf b)*((a + b*kk) div (a hcf b)) by NAT_1:49;
        set T = a hcf b;
        A7:a hcf b > 0 by A4,NAT_LAT:43;
          now per cases by NAT_1:19;
          suppose (a + b*kk) = 0;
            then A8:a = 0 & b*kk = 0 & a hcf b = 0 hcf b by NAT_1:23;
              (a + b*(kk + 1)) hcf b = (a + (b*kk + b*1)) hcf b by XCMPLX_1:8
                                  .= a hcf b by A8,NAT_LAT:36;
            hence (a + b*(kk + 1)) hcf b = a hcf b;
          suppose (a + b*kk) > 0;
            then A9:((a + b*kk) div (a hcf b)) <> 0 by A6;
            set T1 = ((a + b*kk) div (a hcf b));
              a hcf b divides b by NAT_1:def 5;
            then A10:b = (a hcf b)*(b div (a hcf b)) by NAT_1:49;
            then A11:(b div (a hcf b)) <> 0 by A4;
            set T2 = (b div (a hcf b));
              T1*T hcf T2*T = T by A3,A5,A10,NAT_1:49;
            then T1,T2 are_relative_prime by A7,A9,A11,Th7;
            then T1 hcf T2 = 1 by INT_2:def 6;
            then A12:(T1 + T2) hcf T2 = 1 by Th8;
              (a + b*(kk + 1)) hcf b = (a + (b*kk + b*1)) hcf b by XCMPLX_1:8
                                  .= ((a + b*kk) + b) hcf b by XCMPLX_1:1
                                  .= (T*T1 + T*T2) hcf T*T2 by A5,A10,NAT_1:49
                                  .= (T*(T1 + T2)) hcf T*T2 by XCMPLX_1:8
                                  .= a hcf b by A12,Th6;
          hence (a + b*(kk + 1)) hcf b = a hcf b;
        end;
        hence (a + b*(kk + 1)) hcf b = a hcf b;
    end;
    hence thesis;
  end;
  for c holds P[c] from Ind(A1,A2);
  hence thesis;
end;

theorem Th10:
  m,n are_relative_prime implies
    ex k st (ex i0,j0 being Integer st k = i0*m + j0*n & k > 0) &
      for l st (ex i,j being Integer st l = i*m + j*n & l > 0)
                                                       holds k <= l
proof
  defpred P[Integer] means
     ex i0,j0 being Integer st $1 = i0*m + j0*n & $1>0;
  assume A1:m,n are_relative_prime;
    m > 0 or n > 0
  proof
    assume not(m > 0 or n > 0);
    then m = 0 & n = 0 by NAT_1:19;
    then m hcf n <> 1;
    hence contradiction by A1,INT_2:def 6;
  end;
  then m + n <> 0 by NAT_1:23;
  then 1*m + 1*n > 0 by NAT_1:19;
  then A2:ex k st P[k];
  consider k such that
    A3: P[k] and
    A4: for l st P[l] holds k<=l from Min(A2);
  thus thesis by A3,A4;
end;

theorem Th11:
  m,n are_relative_prime implies for k holds ex i,j st i*m + j*n = k
proof
  assume A1:m,n are_relative_prime;
  let k;
      consider a such that
        A2: (ex i0,j0 being Integer st a = i0*m + j0*n & a>0) and
        A3: for c st (ex i,j st c = i*m + j*n & c>0)
                                          holds a <= c by A1,Th10;
      consider i0,j0  being Integer such that
        A4: a = i0*m + j0*n and
        A5: a > 0 by A2;
      A6: for c st (ex i,j st c = i*m + j*n & c > 0)
                                                 holds c mod a = 0
      proof
        let b;
        assume A7: ex i,j st b = i*m + j*n & b > 0;
        assume A8: b mod a <> 0;
        consider i,j such that
          A9: b=i*m + j*n & b>0 by A7;
        set t1 = (i - ((b div a)*i0));
        set t2 = (j - ((b div a)*j0));
          b mod a + a*(b div a) - a*(b div a)
                                   = b - a*(b div a) by A5,NAT_1:47;
        then b mod a + (a*(b div a) - a*(b div a)) =
                    b - a*(b div a) by XCMPLX_1:29;
        then b mod a + 0 = b - a*(b div a) by XCMPLX_1:14;
        then A10:b mod a
           = i*m + j*n - ((b div a)*(i0*m) + (b div a)*(j0*n))
             by A4,A9,XCMPLX_1:8
          .= i*m + j*n - (((b div a)*i0)*m + (b div a)*(j0*n)) by XCMPLX_1:4
          .= i*m + j*n - (((b div a)*i0)*m + ((b div a)*j0)*n) by XCMPLX_1:4
          .= i*m + j*n - ((b div a)*i0)*m - ((b div a)*j0)*n by XCMPLX_1:36
          .= (i*m - ((b div a)*i0)*m + j*n) - ((b div a)*j0)*n by XCMPLX_1:29

          .= m*(i - ((b div a)*i0)) + j*n - ((b div a)*j0)*n by XCMPLX_1:40
          .= m*(i - ((b div a)*i0)) + (j*n - ((b div a)*j0)*n) by XCMPLX_1:29
          .= m*(i - ((b div a)*i0)) + n*(j - ((b div a)*j0)) by XCMPLX_1:40;
         A11: b mod a >= 0 by NAT_1:18;
        reconsider c = t1*m + t2*n as Nat by A10;
          c < a by A2,A10,NAT_1:46;
        hence contradiction by A3,A8,A10,A11;
      end;
      reconsider 1'=1, 0'=0 as Integer;
      A12: a divides m
      proof
        per cases by NAT_1:19;
          suppose m = 0;
            hence thesis by NAT_1:53;
          suppose A13: m > 0;
            reconsider c = 1'*m + 0'*n as Nat;
              c > 0 by A13;
            then m mod a = 0 by A6;
            then m = a*(m div a) + 0 by A2,NAT_1:47;
            hence thesis by NAT_1:49;
        end;
        a divides n
      proof
        per cases by NAT_1:19;
          suppose n = 0;
            hence thesis by NAT_1:53;
          suppose A14: n > 0;
            reconsider c = 0'*m + 1'*n as Nat;
              c > 0 by A14;
            then n mod a = 0 by A6;
            then n = a*(n div a) + 0 by A2,NAT_1:47;
            hence thesis by NAT_1:49;
      end;
      then a divides (m hcf n) by A12,NAT_1:def 5;
      then a divides 1 by A1,INT_2:def 6;
      then ex b st 1 = a*b by NAT_1:def 3;
      then i0*m + j0*n = 1 by A4,NAT_1:40;
      then k = k*(i0*m + j0*n)
            .= k*(i0*m) + k*(j0*n) by XCMPLX_1:8
            .= (k*i0)*m + k*(j0*n) by XCMPLX_1:4;
      then k = (k*i0)*m + (k*j0)*n by XCMPLX_1:4;
    hence thesis;
end;

theorem Th12:
  for A,B being non empty finite set holds
    (ex f being Function of A, B st f is one-to-one onto)
                                        implies Card A = Card B
proof
    let A,B be non empty finite set;
    given f being Function of A, B such that
      A1: f is one-to-one and
      A2: f is onto;
    A3: A = dom f & rng f c= B by FUNCT_2:def 1,RELSET_1:12;
    then Card A <=` Card B by A1,CARD_1:26;
    then A4: card A <= card B by CARD_2:57;
      B c= rng f by A2,FUNCT_2:def 3;
    then Card B <=` Card A by A3,CARD_1:28;
    then card B <= card A by CARD_2:57;
    hence thesis by A4,AXIOMS:21;
end;

theorem Th13:
  for i,k,n being Integer holds (i + k*n) mod n = i mod n
proof
  let i,k,n be Integer;
  per cases;
  suppose A1: n <> 0;
  then (i + k*n) mod n = (i + k*n) - ((i + k*n) div n)*n by INT_1:def 8
                 .= (i + k*n) - ([\(i + k*n)/n/])*n by INT_1:def 7
                 .= (i + k*n) - ([\i/n + (k*n)/n/])*n by XCMPLX_1:63
                 .= (i + k*n) - ([\i/n + k/(n/n)/])*n by XCMPLX_1:78
                 .= (i + k*n) - ([\i/n + k/1/])*n by A1,XCMPLX_1:60
                 .= (i + k*n) - ([\i/n/] + k)*n by INT_1:51
                 .= (i + k*n) - ([\i/n/]*n + k*n) by XCMPLX_1:8
                 .= i + (k*n - (k*n + [\i/n/]*n)) by XCMPLX_1:29
                 .= i + (k*n - k*n - [\i/n/]*n) by XCMPLX_1:36
                 .= i + ((k*n) + -(k*n) - [\i/n/]*n) by XCMPLX_0:def 8
                 .= i + (0 - [\i/n/]*n) by XCMPLX_0:def 6
                 .= i + (- [\i/n/]*n) by XCMPLX_1:150
                 .= i - [\i/n/]*n by XCMPLX_0:def 8
                 .= i - (i div n)*n by INT_1:def 7
                 .= i mod n by A1,INT_1:def 8;
  hence thesis;
  suppose n = 0;
  hence (i + k*n) mod n = i mod n;
end;

theorem Th14:
  a <> 0 & b <> 0 & c <> 0 & c divides a*b & a,c are_relative_prime implies c
 divides b
proof
  assume A1:a <> 0 & b <> 0 & c <> 0 & c divides a*b & a,c are_relative_prime;
  then a hcf c = 1 by INT_2:def 6;
  then A2:(a*b hcf c*b) = b by Th6;
    c divides c*b by NAT_1:56;
  hence thesis by A1,A2,NAT_LAT:32;
end;

theorem Th15:
  a <> 0 & b <> 0 & c <> 0 &
    a,c are_relative_prime & b,c are_relative_prime
                             implies a*b,c are_relative_prime
proof
  assume A1:a <> 0 & b <> 0 & c <> 0 &
         a,c are_relative_prime & b,c are_relative_prime;
  then A2:(a hcf c) = 1 & (b hcf c) = 1 by INT_2:def 6;
  A3: a > 0 & b > 0 & c > 0 by A1,NAT_1:19;
  then A4:(a*b) hcf c > 0 & a*b hcf c <> 0 by NAT_LAT:43;
  A5:(a*b hcf c) divides a*b & (a*b hcf c) divides c by NAT_1:def 5;
  A6:((a*b hcf c) hcf a) divides (a*b hcf c) & ((a*b hcf c) hcf a) divides
a by NAT_1:def 5;
  then ((a*b hcf c) hcf a) divides c by A5,NAT_1:51;
  then A7:((a*b hcf c) hcf a) divides 1 by A2,A6,NAT_LAT:32;
  A8:((a*b hcf c) hcf a) <> 0 by A3,NAT_LAT:43;
    ((a*b hcf c) hcf a) >= 0 & ((a*b hcf c) hcf a) <= 0 + 1
                                              by A7,NAT_1:18,54;
  then ((a*b hcf c) hcf a) = 1 by A8,NAT_1:27;
  then a,(a*b hcf c) are_relative_prime by INT_2:def 6;
  then (a*b hcf c) divides b by A1,A4,A5,Th14;
  then (a*b hcf c) divides 1 by A2,A5,NAT_LAT:32;
  then a*b hcf c >= 0 & a*b hcf c <= 0 + 1 by NAT_1:18,54;
  then a*b hcf c = 1 by A4,NAT_1:27;
  hence thesis by INT_2:def 6;
end;

theorem Th16:
  x <> 0 & y <> 0 & i > 0 implies i*x gcd i*y = i*(x gcd y)
proof
  assume A1:x <> 0 & y <> 0 & i > 0;
  then consider a2,b2 being Integer such that
       A2:x = (x gcd y)*a2 and
       A3:y = (x gcd y)*b2 and
       A4:a2,b2 are_relative_prime by INT_2:38;
  A5:i*x = (i*(x gcd y))*a2 by A2,XCMPLX_1:4;
    i*y = (i*(x gcd y))*b2 by A3,XCMPLX_1:4;
  then A6:i*x gcd i*y = abs(i*(x gcd y)) by A4,A5,INT_2:39
                 .= abs(i)*abs((x gcd y)) by ABSVALUE:10;
  A7:i = abs(i) by A1,ABSVALUE:def 1;
    x gcd y is Nat by INT_2:29;
  then x gcd y >= 0 by NAT_1:18;
  hence thesis by A6,A7,ABSVALUE:def 1;
end;

theorem Th17:
  for x st a <> 0 & b <> 0 holds (a + x*b) gcd b = a gcd b
proof
  let xx be Integer;
  assume a <> 0 & b <> 0;
  then A1:a > 0 & b > 0 by NAT_1:19;
  set i = a hcf b;
    0 <= a & 0 <= b by NAT_1:18;
  then A2:a = abs(a) & b = abs(b) by ABSVALUE:def 1;
  then A3:i = a gcd b by INT_2:def 3;
  A4:i divides a & i divides b by NAT_1:def 5;
  then A5:a = i*(a div i) & b = i*(b div i) by NAT_1:49;
  A6: i > 0 by A1,NAT_LAT:43;
  A7:i divides abs(a + xx*b)
  proof
    per cases;
      suppose a + xx*b < 0;
        then A8:abs((a + xx*b)) = -(a + xx*b) by ABSVALUE:def 1;
          -(a + xx*b) = -(i*(a div i) + i*(xx*(b div i))) by A5,XCMPLX_1:4
                   .= -i*((a div i) + (xx*(b div i))) by XCMPLX_1:8
                   .= i * (-((a div i) + (xx*(b div i))))
                   by XCMPLX_1:175;
        then i divides -(a + xx*b) by INT_1:def 9;
      hence thesis by A6,A8,Lm4;
      suppose (a + xx*b) >= 0;
        then A9:abs((a + xx*b)) = a + xx*b by ABSVALUE:def 1;
          a + xx*b = i*(a div i) + i*(xx*(b div i)) by A5,XCMPLX_1:4
                .= i*((a div i) + (xx*(b div i))) by XCMPLX_1:8;
        then i divides (a + xx*b) by INT_1:def 9;
    hence thesis by A6,A9,Lm4;
  end;
    for m st m divides abs((a + xx*b)) & m divides abs(b) holds m divides i
  proof
    let mm be Nat;
    assume A10:mm divides abs((a + xx*b)) & mm divides abs(b);
    then consider n being Nat such that
           A11:b = mm*n by A2,NAT_1:def 3;
      now per cases;
      suppose (a + xx*b) >= 0;
        then A12:abs((a + xx*b)) = (a + xx*b) by ABSVALUE:def 1;
          now per cases by NAT_1:19;
          suppose A13:mm > 0;
            then mm divides (a + xx*b) by A10,A12,Lm4;
            then consider t being Integer such that
                 A14:(a + xx*b) = mm*t by INT_1:def 9;
            A15:a = mm*t - xx*(mm*n) by A11,A14,XCMPLX_1:26
                   .= mm*t - mm*(xx*n) by XCMPLX_1:4
                   .= mm*(t - (xx*n)) by XCMPLX_1:40;
            then (t - (xx*n)) >= 0 by A1,A13,SQUARE_1:26;
            then reconsider tt = (t - (xx*n)) as Nat by INT_1:16;
              a = mm*tt by A15;
          hence mm divides a by NAT_1:def 3;
          suppose A16:mm = 0;
            then abs((a + xx*b)) = 0 by A10,INT_2:3;
          hence mm divides a by A11,A16,ABSVALUE:7;
        end;
      hence mm divides a;
      suppose (a + xx*b) < 0;
        then A17:abs((a + xx*b)) = -(a + xx*b) by ABSVALUE:def 1;
          now per cases by NAT_1:19;
          suppose A18:mm > 0;
            then mm divides -(a + xx*b) by A10,A17,Lm4;
            then consider t being Integer such that
                   A19:-(a + xx*b) = mm*t by INT_1:def 9;
            A20:a = -mm*t - xx*(mm*n) by A11,A19,XCMPLX_1:26
                        .= -mm*t - mm*(xx*n) by XCMPLX_1:4
                        .= mm * (-t) - mm*(xx*n) by XCMPLX_1:175
                        .= mm*(-t - (xx*n)) by XCMPLX_1:40;
            then (-t - (xx*n)) >= 0 by A1,A18,SQUARE_1:26;
            then reconsider tt = (-t - (xx*n)) as Nat by INT_1:16;
              a = mm*tt by A20;
          hence mm divides a by NAT_1:def 3;
          suppose A21:mm = 0;
            then abs((a + xx*b)) = 0 by A10,INT_2:3;
          hence mm divides a by A11,A21,ABSVALUE:7;
        end;
      hence mm divides a;
    end;
    hence thesis by A2,A10,NAT_LAT:32;
  end;
  then abs((a + xx*b)) hcf abs(b) = i by A2,A4,A7,NAT_1:def 5;
  hence thesis by A3,INT_2:def 3;
end;

begin :: Euler's function

definition
  let n be Nat;
    func Euler n -> Nat
    equals
   :Def1: Card {k where k is Nat : n,k are_relative_prime & k >= 1 & k <= n};
coherence
  proof
    set X = {k where k is Nat : n,k are_relative_prime & k >= 1 & k <= n};
      X c= Seg n
    proof
      let x be set;
      assume x in X;
      then ex k be Nat st
           k = x & n,k are_relative_prime & k >= 1 & k <= n;
      hence x in Seg n by FINSEQ_1:3;
    end;
    then reconsider X as finite set by FINSET_1:13;
      Card X is Nat;
    hence thesis;
  end;
end;

set X = {k where k is Nat : 1,k are_relative_prime & k >= 1 & k <= 1};
  for x being set holds x in X iff x = 1
proof
  let x be set;
  thus x in X implies x = 1
  proof
    assume x in X;
    then ex k be Nat st k = x & 1,k are_relative_prime & k >= 1 & k <= 1;
    hence x = 1 by AXIOMS:21;
  end;
    1 hcf 1 = 1;
  then 1,1 are_relative_prime by INT_2:def 6;
  hence thesis;
end;
then Lm7:Card{1} = Card X by TARSKI:def 1
               .= Euler 1 by Def1;

theorem
    Euler 1 = 1 by Lm7,CARD_1:79;

set X = {k where k is Nat : 2,k are_relative_prime & k >= 1 & k <= 2};
  for x being set holds x in X iff x = 1
proof
  let x be set;
  thus x in X implies x = 1
  proof
    assume x in X;
    then consider k be Nat such that
         A1:k = x and
         A2:2,k are_relative_prime and
         A3:k >= 1 & k <= 2;
      k <> 0 by A3;
    then A4:k = 1 or k = 2 by A3,CQC_THE1:3;
      2 hcf 2 = 2;
    hence thesis by A1,A2,A4,INT_2:def 6;
  end;
    2 hcf 1 = 1 by NAT_LAT:35;
  then 2,1 are_relative_prime by INT_2:def 6;
  hence thesis;
end;
then Lm8:Card{1} = Card X by TARSKI:def 1
               .= Euler 2 by Def1;

theorem
    Euler 2 = 1 by Lm8,CARD_1:79;

theorem Th20:
  n > 1 implies Euler n <= n - 1
proof
  assume A1:n > 1;
  set X={kk where kk is Nat : n,kk are_relative_prime & kk >= 1 & kk <= n};
    X c= Seg n
  proof
    let x be set;
    assume x in X;
    then consider k be Nat such that
      A2:k = x & n,k are_relative_prime & k >= 1 & k <= n;
    thus thesis by A2,FINSEQ_1:3;
  end;
  then reconsider X as finite set by FINSET_1:13;
    X c= n \ {0}
  proof
    let x be set;
    assume x in X;
    then consider k be Nat such that
      A3:k = x & n,k are_relative_prime & k >= 1 & k <= n;
      k <> 0 by A3;
    then A4: not k in {0} by TARSKI:def 1;
      not n,n are_relative_prime by A1,Th2;
    then k < n by A3,REAL_1:def 5;
    then k in {l: l < n};
    then k in n by AXIOMS:30;
    hence thesis by A3,A4,XBOOLE_0:def 4;
  end;
  then A5:card X <= card (n \ {0}) by CARD_1:80;
    0 < n by A1,AXIOMS:22;
  then 0 in {l: l < n};
  then 0 in n by AXIOMS:30;
  then A6:Card(n \ {0}) = Card n - Card {0} by Th5;
    Card n = n & Card {0} = 1 by CARD_1:66,79;
  hence thesis by A5,A6,Def1;
end;

theorem
    n is prime implies Euler n = n - 1
proof
  assume A1:n is prime;
  set X={kk where kk is Nat : n,kk are_relative_prime & kk >= 1 & kk <= n};
    X c= Seg n
  proof
    let x be set;
    assume x in X;
    then consider k be Nat such that
           A2: k = x & n,k are_relative_prime & k >= 1 & k <= n;
    thus thesis by A2,FINSEQ_1:3;
  end;
  then reconsider X as finite set by FINSET_1:13;
  A3: n < 1 or n = 1 or n > 1 by AXIOMS:21;
  A4:n <> 0
  proof
    assume n = 0;
    then n in { k: k<2 & k is prime} by A1;
    hence contradiction by NAT_LAT:85;
  end;
  A5: Euler n <= n - 1 by A1,A3,Th20,INT_2:def 5;
    n - 1 <= Euler n
  proof
      n \ {0} c= X
    proof
      let x be set;
      assume x in n \ {0};
      then A6:x in n & not x in {0} by XBOOLE_0:def 4;
      then x in {k: k< n} by AXIOMS:30;
      then ex k st k = x & k < n;
      hence x in X by A1,A6,Th4;
    end;
    then card (n \ {0}) <= card X by CARD_1:80;
    then A7: Card (n \ {0}) <= Euler n by Def1;
      0 < n by A4,NAT_1:19;
    then 0 in {l: l < n};
    then A8:0 in n by AXIOMS:30;
      Card n = n & Card {0} = 1 by CARD_1:66,79;
    hence thesis by A7,A8,Th5;
  end;
  hence thesis by A5,AXIOMS:21;
end;

theorem
    m > 1 & n > 1 & m,n are_relative_prime
                      implies Euler (m*n) = Euler m * Euler n
proof
  assume A1:m > 1 & n > 1 & m,n are_relative_prime;
  then A2:m > 0 & n > 0 by AXIOMS:22;
  A3:m*n <> 1 by A1,NAT_1:40;
  A4:m*n <> 0 by A2,XCMPLX_1:6;
  then A5:m*n >= 1 by RLVECT_1:99;
  then A6:m*n > 0 by AXIOMS:22;
  set A={i where i is Nat:n,i are_relative_prime & i >= 1 & i <= n};
  set B={i where i is Nat:m,i are_relative_prime & i >= 1 & i <= m};
  set C={i where i is Nat:ex x,y being Integer st
             i = (m*y + n*x) mod m*n & m*n,i are_relative_prime &
                                                y <= n & x <= m & i >= 0};
  set X={i where i is Nat:m*n,i are_relative_prime & i >= 1 & i <= m*n};
  A7:A c= Seg n
  proof
    let x be set;
    assume x in A;
    then consider i being Nat such that
           A8:i = x and n,i are_relative_prime and
           A9:i >= 1 & i <= n;
    thus x in Seg n by A8,A9,FINSEQ_1:3;
  end;
  then reconsider A as finite set by FINSET_1:13;
  A10:B c= Seg m
  proof
    let x be set;
    assume x in B;
    then consider i being Nat such that
           A11:i = x and m,i are_relative_prime and
           A12:i >= 1 & i <= m;
    thus x in Seg m by A11,A12,FINSEQ_1:3;
  end;
  then reconsider B as finite set by FINSET_1:13;
  A13:C c= Seg (m*n) \/ {0}
  proof
    let z be set;
    assume z in C;
    then consider i being Nat such that
           A14:i = z and
           A15:ex x,y being Integer st i = (m*y + n*x) mod m*n &
                m*n,i are_relative_prime & y <= n & x <= m & i >= 0;
    consider x,y being Integer such that
      A16:i = (m*y + n*x) mod m*n and
        m*n,i are_relative_prime and
      A17:y <= n & x <= m & i >= 0 by A15;
    per cases by A17;
      suppose i > 0;
        then A18:i >= 1 by RLVECT_1:99;
          (m*y + n*x) mod m*n <= m*n
        proof
          set i1 = (m*y + n*x);
          set i2 = m*n;
          A19:(m*y + n*x) mod m*n = i1 - (i1 div i2)*i2 by A4,INT_1:def 8
                                 .= i1 - ([\ i1/i2 /])*i2 by INT_1:def 7;
            ([\ i1/i2 /]) + 1 >= i1/i2 by INT_1:52;
          hence (m*y + n*x) mod m*n <= m*n by A4,A19,Lm5;
        end;
        then z in Seg (m*n) by A14,A16,A18,FINSEQ_1:3;
      hence z in Seg (m*n) \/ {0} by XBOOLE_0:def 2;
      suppose A20:i = 0;
          0 in {0} by TARSKI:def 1;
    hence z in Seg (m*n) \/ {0} by A14,A20,XBOOLE_0:def 2;
  end;
  then reconsider C as finite set by FINSET_1:13;
  A21:Euler m = Card B by Def1;
  A22:Euler n = Card A by Def1;
    C = X
  proof
    thus C c= X
    proof
      let z be set;
      assume z in C;
      then consider i being Nat such that
             A23:i = z and
             A24:ex x,y being Integer st i = (m*y + n*x) mod m*n &
              m*n,i are_relative_prime & y <= n & x <= m & i >= 0;
      consider x,y being Integer such that
        A25:i = (m*y + n*x) mod m*n and
        A26:m*n,i are_relative_prime and
          y <= n & x <= m & i >= 0 by A24;
      A27:(m*y + n*x) mod m*n <= m*n
      proof
        set i1 = (m*y + n*x);
        set i2 = m*n;
        A28:(m*y + n*x) mod m*n = i1 - (i1 div i2)*i2 by A4,INT_1:def 8
                               .= i1 - ([\ i1/i2 /])*i2 by INT_1:def 7;
          ([\ i1/i2 /]) + 1 >= i1/i2 by INT_1:52;
        hence (m*y + n*x) mod m*n <= m*n by A4,A28,Lm5;
      end;
      per cases by NAT_1:19;
        suppose i > 0;
          then i >= 1 by RLVECT_1:99;
        hence z in X by A23,A25,A26,A27;
        suppose i = 0;
          then m*n hcf 0 = 1 by A26,INT_2:def 6;
      hence z in X by A3,NAT_LAT:36;
    end;
    let z be set;
    assume z in X;
    then consider i being Nat such that
           A29:i=z and
           A30:m*n,i are_relative_prime and
           A31:i >= 1 & i <= m*n;
      i <> m*n
    proof
      assume i = m*n;
      then (m*n) hcf (m*n) = 1 by A30,INT_2:def 6;
      hence contradiction by A1,NAT_1:40;
    end;
    then A32:i < m*n by A31,REAL_1:def 5;
    consider y0,x0 being Integer such that
      A33:y0*m + x0*n = i by A1,Th11;
    consider x1,y1 being Integer such that
      A34:x1 = x0 mod m and
      A35:y1 = y0 mod n;
    A36:x0 mod m = x0 - (x0 div m)*m by A2,INT_1:def 8;
    set j = x0 div m;
    A37:x1 = x0 - (x0 div m)*m by A2,A34,INT_1:def 8
           .= x0 - ([\ x0/m /])*m by INT_1:def 7;
      ([\ x0/m /]) + 1 >= x0/m by INT_1:52;
    then A38:x1 <= m by A2,A37,Lm5;
    A39:x0 = x1 + j*m by A34,A36,XCMPLX_1:27;
    A40:y0 mod n = y0- (y0 div n)*n by A2,INT_1:def 8;
    set k = y0 div n;
    A41:y1 = y0 - (y0 div n)*n by A2,A35,INT_1:def 8
           .= y0 - ([\ y0/n /])*n by INT_1:def 7;
      ([\ y0/n /]) + 1 >= y0/n by INT_1:52;
    then A42:y1 <= n by A2,A41,Lm5;
      y0 = y1 + k*n by A35,A40,XCMPLX_1:27;
    then A43: m*y0 + n*x0 = m*y1 + m*(k*n) + n*(x1 + j*m) by A39,XCMPLX_1:8
                 .= m*y1 + m*(k*n) + (n*x1 + n*(j*m)) by XCMPLX_1:8
                 .= m*y1 + m*(k*n) + n*x1 + n*(j*m) by XCMPLX_1:1
                 .= m*y1 + n*x1 + m*(k*n) + n*(j*m) by XCMPLX_1:1
                 .= m*y1 + n*x1 + (m*k)*n + n*(j*m) by XCMPLX_1:4
                 .= m*y1 + n*x1 + (m*k)*n + (n*j)*m by XCMPLX_1:4
                 .= m*y1 + n*x1 + k*(m*n) + (j*n)*m by XCMPLX_1:4
                 .= m*y1 + n*x1 + k*(m*n) + j*(m*n) by XCMPLX_1:4
                 .= m*y1 + n*x1 + ((m*n)*k + (m*n)*j) by XCMPLX_1:1
                 .= m*y1 + n*x1 + (m*n)*(k+j) by XCMPLX_1:8;
    A44:0 <= (m*y0 + n*x0) by A33,NAT_1:18;
    A45:i >= 0 by NAT_1:18;
      (m*y0 + n*x0) mod (m*n)
        = (m*y0 + n*x0) - ((m*y0 + n*x0) div (m*n))*(m*n) by A4,INT_1:def 8
       .= (m*y0 + n*x0) - 0*(m*n) by A32,A33,A44,PRE_FF:4
       .= m*y0 + n*x0;
    then m*y0 + n*x0 = (m*y1 + n*x1) mod (m*n) by A43,Th13;
    hence z in C by A29,A30,A33,A38,A42,A45;
  end;
  then A46:Euler (m*n) = Card C by Def1;
  A47:a = 1 implies a in A
  proof
    assume A48:a = 1;
    then n hcf a = 1 by NAT_LAT:35;
    then n,a are_relative_prime by INT_2:def 6;
    hence thesis by A1,A48;
  end;
  A49:b = 1 implies b in B
  proof
    assume A50:b = 1;
    then m hcf b = 1 by NAT_LAT:35;
    then m,b are_relative_prime by INT_2:def 6;
    hence thesis by A1,A50;
  end;
  A51:y = 1 & x = 1 implies (m*y + n*x) mod m*n in C
  proof
    assume A52:y = 1 & x = 1;
    then reconsider y'= y,x'= x as Nat;
      m*y' + n*x' <> 0 by A2,A52,NAT_1:23;
    then m*y' + n*x' > 0 by NAT_1:19;
    then A53:(m*y' + n*x') mod m*n = (m*y + n*x) mod m*n by A6,Lm3;
    then consider t being Nat such that
      A54:t = (m*y + n*x) mod m*n;
    A55:m hcf n = 1 by A1,INT_2:def 6;
    then (m + n) hcf n = 1 by Th8;
    then A56:n,(m + n) are_relative_prime by INT_2:def 6;
      (m + n) hcf m = 1 by A55,Th8;
    then A57:m,(m + n) are_relative_prime by INT_2:def 6;
      m + n <> 0 by A2,NAT_1:23;
    then m*n,(m + n) are_relative_prime by A2,A56,A57,Th15;
    then A58: m*n hcf (m + n) = 1 by INT_2:def 6;
    consider d being Nat such that
      A59:(m + n) = (m*n)*d + ((m + n) mod m*n) and
        ((m + n) mod m*n) < (m*n) by A4,NAT_1:def 2;
      (m + n) mod m*n hcf m*n = 1 by A58,A59,Th9;
    then A60:m*n,t are_relative_prime by A52,A53,A54,INT_2:def 6;
      t >= 0 by NAT_1:18;
    hence thesis by A1,A52,A54,A60;
  end;
  {0} c= NAT by ZFMISC_1:37;
  then Seg (m*n) \/ {0} c= NAT by XBOOLE_1:8;
  then reconsider A,B,C as non empty finite Subset of NAT
                                 by A7,A10,A13,A47,A49,A51,XBOOLE_1:1;
  deffunc F(Element of A,Element of B) = (m*$1+n*$2) mod (m*n);
  A61:for y being Element of A, x being Element of B holds F(y,x) in C
  proof
    let y be Element of A, x be Element of B;
      y in A;
    then consider i being Nat such that
           A62:i = y and
           A63:n,i are_relative_prime and
           A64:i >= 1 and
           A65:i <= n;
    x in B;
    then consider j being Nat such that
           A66:j = x and
           A67:m,j are_relative_prime and
           A68:j >= 1 and
           A69:j <= m;
    A70:i <> 0 & j <> 0 by A64,A68;
    reconsider ii = i,jj = j as Integer;
      m*i <> 0*i & n*j <> 0*j by A2,A70,XCMPLX_1:5;
    then m*i + n*j <> 0 by NAT_1:23;
    then m*i + n*j > 0 by NAT_1:19;
    then A71:m*ii + n*jj mod m*n = m*i + n*j mod m*n by A6,Lm3;
    then consider q being Nat such that
      A72:q = (m*ii + n*jj) mod m*n;
      n hcf i = 1 by A63,INT_2:def 6;
    then i,n are_relative_prime by INT_2:def 6;
    then i*m,n are_relative_prime by A1,A2,A70,Th15;
    then A73:i*m hcf n = 1 by INT_2:def 6;
      m hcf j = 1 by A67,INT_2:def 6;
    then A74:j,m are_relative_prime by INT_2:def 6;
      m hcf n = 1 by A1,INT_2:def 6;
    then n,m are_relative_prime by INT_2:def 6;
    then j*n,m are_relative_prime by A2,A70,A74,Th15;
    then A75:j*n hcf m = 1 by INT_2:def 6;
      (m*i + n*j) hcf n = 1 by A73,Th9;
    then A76:n,(m*i + n*j) are_relative_prime by INT_2:def 6;
      (m*i + n*j) hcf m = 1 by A75,Th9;
    then A77:m,(m*i + n*j) are_relative_prime by INT_2:def 6;
      i*m <> 0*m & j*n <> 0*n by A2,A70,XCMPLX_1:5;
    then (m*i + n*j) <> 0 by NAT_1:23;
    then n*m,(m*i + n*j) are_relative_prime by A2,A76,A77,Th15;
    then A78:n*m hcf (m*i + n*j) = 1 by INT_2:def 6;
    consider t being Nat such that
      A79:(m*i + n*j) = (n*m)*t + ((m*i + n*j) mod n*m) and
        ((m*i + n*j) mod n*m) < (n*m) by A4,NAT_1:def 2;
    set l = n*m;
      ((m*i + n*j) mod l) hcf l = 1 by A78,A79,Th9;
    then A80:l,q are_relative_prime by A71,A72,INT_2:def 6;
      q >= 0 by NAT_1:18;
    hence thesis by A62,A65,A66,A69,A71,A72,A80;
  end;
  consider f being Function of [:A,B:], C such that
    A81:for y being Element of A,
    x being Element of B holds f.[y,x] = F(y,x) from Kappa2D(A61);
  A82:f is one-to-one
  proof
    let x,y be set;
    A83:dom f = [:A,B:] by FUNCT_2:def 1;
    assume x in dom f;
    then consider xx1 being Element of A,
                  xx2 being Element of B such that
           A84:x = [xx1,xx2] by A83,DOMAIN_1:9;
      xx1 in A;
    then consider x1 being Nat such that
           A85:xx1 = x1 and
             n,x1 are_relative_prime and
           A86:x1 >= 1 and
           A87:x1 <= n;
      xx2 in B;
    then consider x2 being Nat such that
           A88:xx2 = x2 and
             m,x2 are_relative_prime and
           A89:x2 >= 1 and
           A90:x2 <= m;
    assume y in dom f;
    then consider yy1 being Element of A,
                  yy2 being Element of B such that
           A91:y = [yy1,yy2] by A83,DOMAIN_1:9;
      yy1 in A;
    then consider y1 being Nat such that
           A92:yy1 = y1 and
             n,y1 are_relative_prime and
           A93:y1 >= 1 and
           A94:y1 <= n;
      yy2 in B;
    then consider y2 being Nat such that
           A95:yy2 = y2 and
             m,y2 are_relative_prime and
           A96:y2 >= 1 and
           A97:y2 <= m;
    assume A98:f.x = f.y;
    A99:(x1*m+x2*n) mod (m*n) = f.x by A81,A84,A85,A88
                    .= (y1*m+y2*n) mod (m*n) by A81,A91,A92,A95,A98;
    reconsider y1,y2,x1,x2 as Element of NAT;
    set k = (x1*m+x2*n) mod (m*n);
    A100:y1*m + y2*n = k + ((y1*m + y2*n) div (m*n))*(m*n) by A6,A99,NAT_1:47;
    A101:(x1*m + x2*n)-(y1*m + y2*n) = x1*m + x2*n - y1*m - y2*n by XCMPLX_1:36
                                .= x1*m + x2*n + -y1*m - y2*n by XCMPLX_0:def 8
                                .= x1*m + -y1*m + x2*n - y2*n by XCMPLX_1:1
                                .= x1*m - y1*m + x2*n - y2*n by XCMPLX_0:def 8
                                .= m*(x1 - y1) + n*x2 - n*y2 by XCMPLX_1:40
                                .= m*(x1 - y1) + (n*x2 - n*y2) by XCMPLX_1:29
                                .= m*(x1 - y1) + n*(x2 - y2) by XCMPLX_1:40;
    A102:k + ((x1*m + x2*n) div (m*n))*(m*n) -
                  (k + ((y1*m + y2*n) div (m*n))*(m*n))
             = k + ((x1*m + x2*n) div (m*n))*(m*n) -
                  k - ((y1*m + y2*n) div (m*n))*(m*n) by XCMPLX_1:36
            .= k + ((x1*m + x2*n) div (m*n))*(m*n) + -
                  k - ((y1*m + y2*n) div (m*n))*(m*n) by XCMPLX_0:def 8
            .= k + -k + ((x1*m + x2*n) div (m*n))*(m*n) -
                  ((y1*m + y2*n) div (m*n))*(m*n) by XCMPLX_1:1
            .= 0 + ((x1*m + x2*n) div (m*n))*(m*n) -
                  ((y1*m + y2*n) div (m*n))*(m*n) by XCMPLX_0:def 6
            .= (m*n)*(((x1*m + x2*n) div (m*n)) -
                  ((y1*m + y2*n) div (m*n))) by XCMPLX_1:40;
    set w = (((x1*m + x2*n) div (m*n)) - ((y1*m + y2*n) div (m*n)));
      (m hcf n) = 1 by A1,INT_2:def 6;
    then A103:n,m are_relative_prime by INT_2:def 6;
    consider p being Integer such that
      A104:p = m;
    A105:n,p are_relative_prime by A103,A104,Lm2;
    A106:m*(x1 - y1) + n*(x2 - y2) = (m*n)*w by A6,A100,A101,A102,NAT_1:47;
    then n*(x2 - y2) = (m*n)*w - m*(x1 - y1) by XCMPLX_1:26
               .= m*(n*w) - m*(x1 - y1) by XCMPLX_1:4
               .= m*((n*w) - (x1 - y1)) by XCMPLX_1:40;
    then p divides n*(x2 - y2) by A104,INT_1:def 9;
    then A107:m divides (x2 - y2) by A104,A105,INT_2:40;
      x2 - y2 = 0
    proof
      per cases;
        suppose A108:0<=(x2 - y2);
          consider k being Integer such that
            A109:k = x2 - y2;
          reconsider k as Nat by A108,A109,INT_1:16;
          A110:m divides k by A2,A107,A109,Lm4;
            k = 0
          proof
            assume k <> 0;
            then A111:0 < k by NAT_1:19;
              -y2 <= -1 by A96,REAL_1:50;
            then A112:x2 + -y2 <= m + -1 by A90,REAL_1:55;
            set b = m + -1;
            A113:k <= b by A109,A112,XCMPLX_0:def 8;
            then b is Nat by A108,A109,INT_1:16;
            then k < b + 1 by A113,NAT_1:38;
            then k < m + 0 by XCMPLX_1:139;
            hence contradiction by A110,A111,NAT_1:54;
          end;
        hence thesis by A109;
        suppose A114:(x2 - y2)<=0;
          consider k being Integer such that
            A115:k = -(x2 - y2);
          A116:m divides k by A107,A115,INT_2:14;
          A117:0 <= k by A114,A115,REAL_1:26,50;
          then reconsider k as Nat by INT_1:16;
          A118:m divides k by A2,A116,Lm4;
            k = 0
          proof
            assume k <> 0;
            then A119:0 < k by NAT_1:19;
              -x2 <= -1 by A89,REAL_1:50;
            then - x2 + y2 <= m + -1 by A97,REAL_1:55;
            then 0 - x2 + y2 <= m + -1 by XCMPLX_1:150;
            then A120:0 - (x2 - y2) <= m + -1 by XCMPLX_1:37;
            set b = m + -1;
            A121:k <= b by A115,A120,XCMPLX_1:150;
            then b is Nat by A117,INT_1:16;
            then k < b + 1 by A121,NAT_1:38;
            then k < m + 0 by XCMPLX_1:139;
            hence contradiction by A118,A119,NAT_1:54;
          end;
        then 0 -(x2 - y2) = 0 by A115,XCMPLX_1:150;
      hence thesis by XCMPLX_1:16;
    end;
    then A122:x2 = y2 by XCMPLX_1:15;
    consider p being Integer such that
      A123:p = n;
    A124:m,p are_relative_prime by A1,A123,Lm2;
      m*(x1 - y1) = (m*n)*w - n*(x2 - y2) by A106,XCMPLX_1:26
               .= n*(m*w) - n*(x2 - y2) by XCMPLX_1:4
               .= n*((m*w) - (x2 - y2)) by XCMPLX_1:40;
    then p divides m*(x1 - y1) by A123,INT_1:def 9;
    then A125:n divides (x1 - y1) by A123,A124,INT_2:40;
      x1 - y1 = 0
    proof
      per cases;
        suppose A126:0<=(x1 - y1);
          consider k being Integer such that
            A127:k = x1 - y1;
          reconsider k as Nat by A126,A127,INT_1:16;
          A128:n divides k by A2,A125,A127,Lm4;
            k = 0
          proof
            assume k <> 0;
            then A129:0 < k by NAT_1:19;
              -y1 <= -1 by A93,REAL_1:50;
            then A130:x1 + -y1 <= n + -1 by A87,REAL_1:55;
            set b = n + -1;
            A131:k <= b by A127,A130,XCMPLX_0:def 8;
            then b is Nat by A126,A127,INT_1:16;
            then k < b + 1 by A131,NAT_1:38;
            then k < n + 0 by XCMPLX_1:139;
            hence contradiction by A128,A129,NAT_1:54;
          end;
        hence thesis by A127;
        suppose A132:(x1 - y1)<=0;
          consider k being Integer such that
            A133:k = -(x1 - y1);
          A134:n divides k by A125,A133,INT_2:14;
          A135:0 <= k by A132,A133,REAL_1:26,50;
          then reconsider k as Nat by INT_1:16;
          A136:n divides k by A2,A134,Lm4;
            k = 0
          proof
            assume k <> 0;
            then A137:0 < k by NAT_1:19;
              -x1 <= -1 by A86,REAL_1:50;
            then - x1 + y1 <= n + -1 by A94,REAL_1:55;
            then 0 - x1 + y1 <= n + -1 by XCMPLX_1:150;
            then A138:0 - (x1 - y1) <= n + -1 by XCMPLX_1:37;
            set b = n + -1;
            A139: k <= b by A133,A138,XCMPLX_1:150;
            then b is Nat by A135,INT_1:16;
            then k < b + 1 by A139,NAT_1:38;
            then k < n + 0 by XCMPLX_1:139;
          hence contradiction by A136,A137,NAT_1:54;
        end;
        then 0 -(x1 - y1) = 0 by A133,XCMPLX_1:150;
        hence thesis by XCMPLX_1:16;
    end;
    hence x = y by A84,A85,A88,A91,A92,A95,A122,XCMPLX_1:15;
  end;
    f is onto
  proof
    thus rng f c= C by RELSET_1:12;
    let z be set;
    assume z in C;
    then consider i being Nat such that
           A140:i = z and
           A141:ex x0,y0 being Integer st i = (m*y0 + n*x0) mod m*n &
                m*n,i are_relative_prime & y0 <= n & x0 <= m & i >= 0;
    consider x0,y0 being Integer such that
      A142:i = (m*y0 + n*x0) mod m*n and
      A143:m*n,i are_relative_prime and
      A144:y0 <= n & x0 <= m & i >= 0 by A141;
    consider x,y being Integer such that
      A145:x = x0 mod m and
      A146:y = y0 mod n;
    A147:x <= m & y <= n by A2,A145,A146,GR_CY_2:3;
    A148:x >= 0 & y >= 0 by A2,A145,A146,GR_CY_2:2;
    A149:y >= 0 by A2,A146,GR_CY_2:2;
    A150:(m*y + n*x) mod (m*n) = (m*y0 + n*x0) mod (m*n)
    proof
      A151: x0 mod m = x0 - (x0 div m)*m by A2,INT_1:def 8;
      set j = x0 div m;
      A152: y0 mod n = y0- (y0 div n)*n by A2,INT_1:def 8;
      set k = y0 div n;
         y0 = y + k*n by A146,A152,XCMPLX_1:27;
      then m*y0 + n*x0
                    = m*(y + k*n) + n*(x + j*m) by A145,A151,XCMPLX_1:27
                   .= m*y + m*(k*n) + n*(x + j*m) by XCMPLX_1:8
                   .= m*y + m*(k*n) + (n*x + n*(j*m)) by XCMPLX_1:8
                   .= m*y + m*(k*n) + n*x + n*(j*m) by XCMPLX_1:1
                   .= m*y + n*x + m*(k*n) + n*(j*m) by XCMPLX_1:1
                   .= m*y + n*x + (m*k)*n + n*(j*m) by XCMPLX_1:4
                   .= m*y + n*x + (m*k)*n + (n*j)*m by XCMPLX_1:4
                   .= m*y + n*x + k*(m*n) + (j*n)*m by XCMPLX_1:4
                   .= m*y + n*x + k*(m*n) + j*(m*n) by XCMPLX_1:4
                   .= m*y + n*x + ((m*n)*k + (m*n)*j) by XCMPLX_1:1
                   .= m*y + n*x + (m*n)*(k+j) by XCMPLX_1:8;
      hence thesis by Th13;
    end;
    A153:m,x0 are_relative_prime
    proof
      set p = m gcd x0;
      A154:p is Nat by INT_2:29;
        p divides m by INT_2:31;
      then consider i1 being Integer such that
             A155:m = p*i1 by INT_1:def 9;
        p <> 0 & i1 <> 0 by A1,A155;
      then A156:p > 0 by A154,NAT_1:19;
        p divides x0 by INT_2:32;
      then consider i2 being Integer such that
        A157:x0 = p*i2 by INT_1:def 9;
      A158:m*n hcf i = 1 by A143,INT_2:def 6;
        m*n = abs(m*n) by A6,ABSVALUE:def 1;
      then A159:abs(m*n) hcf abs(i) = 1 by A144,A158,ABSVALUE:def 1;
      A160:(m*y0 + n*x0) mod m*n
               = ((p*i1)*y0 + n*(p*i2)) - (((p*i1)*y0 + n*(p*i2))
                   div((p*i1)*n))*((p*i1)*n) by A4,A155,A157,INT_1:def 8;
      set k = ((p*i1)*y0 + n*(p*i2))div((p*i1)*n);
      A161:((p*i1)*y0 + n*(p*i2)) - k*((p*i1)*n)
                         = p*(i1*y0) + n*(p*i2) - k*((p*i1)*n) by XCMPLX_1:4
                        .= p*(i1*y0) + p*(n*i2) - k*((p*i1)*n) by XCMPLX_1:4
                        .= p*(i1*y0 + n*i2) - k*((p*i1)*n) by XCMPLX_1:8
                        .= p*(i1*y0 + n*i2) - (k*(p*i1)*n) by XCMPLX_1:4
                        .= p*(i1*y0 + n*i2) - (p*(i1*k)*n) by XCMPLX_1:4
                        .= p*(i1*y0 + n*i2) - p*((i1*k)*n) by XCMPLX_1:4
                        .= p*((i1*y0 + n*i2) - ((i1*k)*n)) by XCMPLX_1:40;
      set j = (i1*y0 + n*i2) - ((i1*k)*n);
        not j < 0
      proof
        assume j < 0;
        then p*j < 0*j by A156,REAL_1:71;
        hence contradiction by A4,A142,A144,A155,A157,A161,INT_1:def 8;
      end;
      then reconsider p,j as Nat by INT_1:16,INT_2:29;
      A162:m*n = p*(i1*n) by A155,XCMPLX_1:4;
      set jj = i1*n;
       not jj < 0
      proof
        assume jj < 0;
        then p*jj < 0*jj by A156,REAL_1:71;
        hence contradiction by A5,A162,AXIOMS:22;
      end;
      then reconsider jj as Nat by INT_1:16;
        now per cases by A2,A162,XCMPLX_1:6;
        suppose A163:p <> 0 & jj <> 0 & j <> 0;
          then A164:p > 0 by NAT_1:19;
            p*jj gcd p*j = 1 by A142,A159,A160,A161,A162,INT_2:def 3;
          then A165:p*(jj gcd j) = 1 by A163,A164,Th16;
            jj gcd j is Nat by INT_2:29;
        hence p = 1 by A165,NAT_1:40;
        suppose p <> 0 & jj <> 0 & j = 0;
          then p*jj hcf 0 = 1 by A142,A143,A160,A161,A162,INT_2:def 6;
          then p*jj = 1 by NAT_LAT:36;
        hence p = 1 by NAT_1:40;
      end;
      hence thesis by INT_2:def 4;
    end;
    A166:n,y0 are_relative_prime
    proof
      set p = n gcd y0;
      A167:p is Nat by INT_2:29;
        p divides n by INT_2:31;
      then consider i1 being Integer such that
             A168:n = p*i1 by INT_1:def 9;
        p <> 0 & i1 <> 0 by A1,A168;
      then A169:p > 0 by A167,NAT_1:19;
        p divides y0 by INT_2:32;
      then consider i2 being Integer such that
        A170:y0 = p*i2 by INT_1:def 9;
      A171:m*n hcf i = 1 by A143,INT_2:def 6;
        m*n = abs(m*n) by A6,ABSVALUE:def 1;
      then A172:abs(m*n) hcf abs(i) = 1 by A144,A171,ABSVALUE:def 1;
      A173:(m*y0 + n*x0) mod m*n
        = (m*(p*i2) + (p*i1)*x0) - ((m*(p*i2) + (p*i1)*x0)
                    div (m*(p*i1)))*(m*(p*i1)) by A4,A168,A170,INT_1:def 8;
      set k = (m*(p*i2) + (p*i1)*x0) div (m*(p*i1));
      A174:(m*(p*i2) + (p*i1)*x0) - k*(m*(p*i1))
                         = m*(p*i2) + p*(i1*x0) - k*(m*(p*i1)) by XCMPLX_1:4
                        .= p*(m*i2) + p*(i1*x0) - k*(m*(p*i1)) by XCMPLX_1:4
                        .= p*(m*i2 + i1*x0) - k*(m*(p*i1)) by XCMPLX_1:8
                        .= p*(m*i2 + i1*x0) - (k*(p*i1)*m) by XCMPLX_1:4
                        .= p*(m*i2 + i1*x0) - (p*(i1*k)*m) by XCMPLX_1:4
                        .= p*(m*i2 + i1*x0) - p*((i1*k)*m) by XCMPLX_1:4
                        .= p*((m*i2 + i1*x0) - ((i1*k)*m)) by XCMPLX_1:40;
      set j = (m*i2 + i1*x0) - ((i1*k)*m);
        j >= 0
      proof
        assume j < 0;
        then p*j < 0*j by A169,REAL_1:71;
        hence contradiction by A4,A142,A144,A168,A170,A174,INT_1:def 8;
      end;
      then reconsider p,j as Nat by INT_1:16,INT_2:29;
      A175:m*n = p*(i1*m) by A168,XCMPLX_1:4;
      set jj = i1*m;
       not jj < 0
      proof
        assume jj < 0;
        then p*jj < 0*jj by A169,REAL_1:71;
        hence contradiction by A5,A175,AXIOMS:22;
      end;
      then reconsider jj as Nat by INT_1:16;
        now per cases by A2,A175,XCMPLX_1:6;
        suppose A176:p <> 0 & jj <> 0 & j <> 0;
          then A177:p > 0 by NAT_1:19;
            p*jj gcd p*j = 1 by A142,A172,A173,A174,A175,INT_2:def 3;
          then A178:p*(jj gcd j) = 1 by A176,A177,Th16;
            jj gcd j is Nat by INT_2:29;
        hence p = 1 by A178,NAT_1:40;
        suppose p <> 0 & jj <> 0 & j = 0;
          then p*jj hcf 0 = 1 by A142,A143,A173,A174,A175,INT_2:def 6;
          then p*jj = 1 by NAT_LAT:36;
        hence p = 1 by NAT_1:40;
      end;
      hence thesis by INT_2:def 4;
    end;
    reconsider x,y as Nat by A148,INT_1:16;
    A179:x <> 0
    proof
      assume x = 0;
      then A180:x0 - (x0 div m)*m = 0 by A2,A145,INT_1:def 8;
      set j = x0 div m;
      A181:(m*y0 + n*x0) mod m*n = (m*y0 + n*(j*m)) mod m*n by A180,XCMPLX_1:15
           .= (m*y0 + m*(n*j)) mod m*n by XCMPLX_1:4
           .= m*(y0 + (n*j)) mod m*n by XCMPLX_1:8
           .= m*(y0 + (n*j)) - ((m*(y0 + (n*j))) div m*n)*(m*n)
             by A4,INT_1:def 8
           .= m*(y0 + (n*j)) - m*(n*((m*(y0 + (n*j))) div m*n)) by XCMPLX_1:4
           .= m*((y0 + (n*j)) - (n*((m*(y0 + (n*j))) div m*n))) by XCMPLX_1:40;
      set jj = (y0 + (n*j)) - (n*((m*(y0 + (n*j))) div m*n));
      reconsider g = m*jj as Nat by A142,A181;
      A182:g > 0 or g = 0 by NAT_1:19;
      A183:not jj < 0
      proof
        assume jj < 0;
        then m*jj < 0*jj by A2,REAL_1:71;
        hence contradiction by A182;
      end;
      A184:m*n hcf i = 1 by A143,INT_2:def 6;
        m*n = abs(m*n) by A6,ABSVALUE:def 1;
      then abs(m*n) hcf abs(i) = 1 by A144,A184,ABSVALUE:def 1;
      then A185:m*n gcd m*jj = 1 by A142,A181,INT_2:def 3;
      reconsider jj as Nat by A183,INT_1:16;
       jj = 0
      proof
        assume not(jj = 0);
        then A186:m*(n gcd jj) = 1 by A2,A185,Th16;
          n gcd jj is Nat by INT_2:29;
        hence contradiction by A1,A186,NAT_1:40;
      end;
      then m*n hcf 0 = 1 by A142,A143,A181,INT_2:def 6;
      hence contradiction by A3,NAT_LAT:36;
    end;
    then A187:x >= 0 + 1 by A148,INT_1:20;
    A188:y <> 0
    proof
      assume y = 0;
      then A189:y0 - (y0 div n)*n = 0 by A2,A146,INT_1:def 8;
      set j = y0 div n;
      A190:(m*y0 + n*x0) mod m*n = (m*(j*n) + n*x0) mod m*n by A189,XCMPLX_1:15
           .= (n*(m*j) + n*x0) mod m*n by XCMPLX_1:4
           .= n*((m*j) + x0) mod m*n by XCMPLX_1:8
           .= n*((m*j) + x0) - ((n*((m*j) + x0)) div m*n)*(m*n)
             by A4,INT_1:def 8
           .= n*((m*j) + x0) - n*(m*((n*((m*j) + x0)) div m*n)) by XCMPLX_1:4
           .= n*(((m*j) + x0) - (m*((n*((m*j) + x0)) div m*n))) by XCMPLX_1:40;
      set jj = ((m*j) + x0) - (m*((n*((m*j) + x0)) div m*n));
      reconsider g = n*jj as Nat by A142,A190;
      A191:g > 0 or g = 0 by NAT_1:19;
      A192:not jj < 0
      proof
        assume jj < 0;
        then n*jj < 0*jj by A2,REAL_1:71;
        hence contradiction by A191;
      end;
      A193:m*n hcf i = 1 by A143,INT_2:def 6;
        m*n = abs(m*n) by A6,ABSVALUE:def 1;
      then abs(m*n) hcf abs(i) = 1 by A144,A193,ABSVALUE:def 1;
      then A194:m*n gcd n*jj = 1 by A142,A190,INT_2:def 3;
      reconsider jj as Nat by A192,INT_1:16;
       jj = 0
      proof
        assume not(jj = 0);
        then A195:n*(m gcd jj) = 1 by A2,A194,Th16;
          m gcd jj is Nat by INT_2:29;
        hence contradiction by A1,A195,NAT_1:40;
      end;
      then m*n hcf 0 = 1 by A142,A143,A190,INT_2:def 6;
      hence contradiction by A3,NAT_LAT:36;
   end;
   then A196:y >= 0 + 1 by A149,INT_1:20;
   A197:m,x are_relative_prime
   proof
     A198:x = x0 - (x0 div m)*m by A2,A145,INT_1:def 8;
     A199:m >= 0 & x >= 0 by NAT_1:18;
       x0 gcd m = x + (x0 div m)*m gcd m by A198,XCMPLX_1:27;
     then A200:x0 gcd m = x gcd m by A2,A179,Th17;
       x0 gcd m = 1 by A153,INT_2:def 4;
     then m hcf x = 1 by A199,A200,Lm1;
     hence thesis by INT_2:def 6;
   end;
   A201:n,y are_relative_prime
   proof
     A202:y = y0 - (y0 div n)*n by A2,A146,INT_1:def 8;
     A203:n >= 0 & y >= 0 by NAT_1:18;
       y0 gcd n = y + (y0 div n)*n gcd n by A202,XCMPLX_1:27;
     then A204:y0 gcd n = y gcd n by A2,A188,Th17;
       y0 gcd n = 1 by A166,INT_2:def 4;
     then n hcf y = 1 by A203,A204,Lm1;
     hence thesis by INT_2:def 6;
   end;
     x in B by A147,A187,A197;
   then reconsider x as Element of B;
     y in A by A147,A196,A201;
   then reconsider y as Element of A;
   A205:n*x > n*0 by A2,A148,A179,REAL_1:70;
     m*y > m*0 by A2,A149,A188,REAL_1:70;
   then (m*y + n*x) > 0+0 by A205,REAL_1:67;
   then A206:i = (m*y + n*x) mod (m*n) by A6,A142,A150,Lm3;
   A207:dom f = [:A,B:] by FUNCT_2:def 1;
   consider w being set such that
     A208:w = [y,x];
   A209:w in dom f by A207,A208,ZFMISC_1:106;
     i = f.w by A81,A206,A208;
   hence z in rng f by A140,A209,FUNCT_1:def 5;
 end;
 then Card[:A,B:] = Card C by A82,Th12;
hence thesis by A21,A22,A46,CARD_2:65;
end;

Back to top