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;

theorem
  for a,m being Element of NAT st a<>0 & m>1 & a,m are_coprime
for b,x being Integer holds (a*x-b) mod m = 0 implies [x, b*(a|^(Euler m -'1))]
  in Cong m
proof
  let a,m be Element of NAT;
  assume that
A1: a <> 0 and
A2: m > 1 and
A3: a,m are_coprime;
  let b,x be Integer;
  (a|^Euler m) mod m = 1 by A1,A2,A3,EULER_2:18;
  then (a|^Euler m) = m * ((a|^Euler m) div m) + 1 by A2,NAT_D:2;
  then m divides ((a|^Euler m)-1);
  then (a|^Euler m),1 are_congruent_mod m;
  then
A4: (a|^Euler m)*x,1*x are_congruent_mod m by Th11;
  Euler m <> 0
  proof
    set X = {k where k is Element of NAT:m,k are_coprime & k >= 1 & k
    <= m};
    1 gcd m = 1 by NEWTON:51;
    then m,1 are_coprime by INT_2:def 3;
    then
A5: 1 in X by A2;
    assume Euler m = 0;
    hence contradiction by A5;
  end;
  then
A6: Euler m -'1+1 = Euler m-1+1 by NAT_1:14,XREAL_1:233
    .= Euler m;
  assume (a*x-b) mod m = 0;
  then m divides ((a*x-b)-0) by A2,INT_1:62;
  then a*x-b,0 are_congruent_mod m;
  then 0,a*x-b are_congruent_mod m by INT_1:14;
  then (a|^(Euler m -'1))*(0 qua Nat), (a|^(Euler m -'1))*(a*x-b)
  are_congruent_mod m by Th11;
  then 0,(a|^(Euler m -'1))*a*x-(a|^(Euler m -'1))*b are_congruent_mod m;
  then 0,(a|^(Euler m -'1+1))*x-(a|^(Euler m -'1))*b are_congruent_mod m by
NEWTON:6;
  then 0+(a|^(Euler m -'1))*b,(a|^Euler m)*x are_congruent_mod m by A6;
  then (a|^(Euler m -'1))*b,x are_congruent_mod m by A4,INT_1:15;
  then x, b*(a|^(Euler m -'1)) are_congruent_mod m by INT_1:14;
  hence thesis by Def1;
end;
