reserve a,b,m,x,y,i1,i2,i3,i for Integer,
  k,p,q,n for Nat,
  c,c1,c2 for Element of NAT,
  z for set;
reserve fp,fp1 for FinSequence of NAT,

  b,c,d, n for Element of NAT,
  a for Nat;
reserve i,m,m1,m2,m3,r,s,a,b,c,c1,c2,x,y for Integer;

theorem Th40:
  m1<>0 & m2<>0 & m1,m2 are_coprime implies ex r being
Integer st (for x st (x - c1) mod m1 = 0 & (x - c2) mod m2 = 0 holds x,(c1+m1*r
  ) are_congruent_mod (m1*m2)) & (m1*r - (c2-c1)) mod m2 = 0
proof
  assume that
A1: m1<>0 and
A2: m2<>0 and
A3: m1,m2 are_coprime;
  consider r being Integer such that
A4: (m1*r-(c2-c1)) mod m2 = 0 by A3,Th15;
  take r;
  for x st (x - c1) mod m1 = 0 & (x - c2) mod m2 = 0 holds x,(c1+m1*r)
  are_congruent_mod (m1*m2)
  proof
    let x;
    assume that
A5: (x - c1) mod m1 = 0 and
A6: (x - c2) mod m2 = 0;
    set y = (x - c1) div m1;
A7: x - c1 = ((x - c1) div m1) * m1 + ((x - c1) mod m1) by A1,INT_1:59
      .= ((x - c1) div m1) * m1 by A5;
    then (x - c2) mod m2 = (m1 * y - (c2 -c1)) mod m2;
    then y in Class(Cong(m2),r) by A2,A3,A4,A6,Th26;
    then [r,y] in Cong(m2) by EQREL_1:18;
    then r,y are_congruent_mod m2 by Def1;
    then y,r are_congruent_mod m2 by INT_1:14;
    then m2 divides (y - r);
    then consider t being Integer such that
A8: y - r = m2 * t;
    x = c1 + y * m1 by A7
      .= c1 + (r + m2 * t)* m1 by A8
      .= (c1 + r * m1) + (m1 * m2) * t;
    then (m1 * m2) divides (x - (c1 + r * m1));
    hence thesis;
  end;
  hence thesis by A4;
end;
