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

theorem Th8:
  for a, b, c be Nat holds (a + b*c) gcd b = a gcd b
proof
  let a, b, c be Nat;
  defpred P[Nat] means (a + b*$1) gcd b = a gcd b;
A1: for k being Nat st P[k] holds P[k + 1]
  proof
    let kk be Nat;
    assume
A2: (a + b*kk) gcd b = a gcd b;
    now
      per cases;
      suppose
        b = 0;
        hence (a + b*(kk + 1)) gcd b = a gcd b;
      end;
      suppose
A3:     b > 0;
        set T = a gcd b;
A4:     a gcd b > 0 by A3,NEWTON:58;
A5:     a gcd b divides (a + b*kk) by A2,NAT_D:def 5;
        then
A6:     (a + b*kk) = (a gcd b)*((a + b*kk) div (a gcd b)) by NAT_D:3;
        now
          per cases;
          suppose
A7:         a + b*kk = 0;
            then a gcd b = 0 gcd b by NAT_1:7
              .= b by NEWTON:52;
            hence (a + b*(kk + 1)) gcd b = a gcd b by A7,NAT_D:32;
          end;
          suppose
A8:         (a + b*kk) > 0;
            set T2 = (b div (a gcd b));
            set T1 = ((a + b*kk) div (a gcd b));
A9:         ((a + b*kk) div (a gcd b)) <> 0 by A6,A8;
            a gcd b divides b by NAT_D:def 5;
            then
A10:        b = (a gcd b)*(b div (a gcd b)) by NAT_D:3;
            then T1*T gcd T2*T = T by A2,A5,NAT_D:3;
            then T1,T2 are_coprime by A4,A9,Th6;
            then T1 gcd T2 = 1 by INT_2:def 3;
            then
A11:        (T1 + T2) gcd T2 = 1 by Th7;
            (a + b*(kk + 1)) gcd b = ((a + b*kk) + b) gcd b
              .= (T*T1 + T*T2) gcd T*T2 by A5,A10,NAT_D:3
              .= (T*(T1 + T2)) gcd T*T2
              .= a gcd b by A11,Th5;
            hence (a + b*(kk + 1)) gcd b = a gcd b;
          end;
        end;
        hence (a + b*(kk + 1)) gcd b = a gcd b;
      end;
    end;
    hence thesis;
  end;
A12: P[0];
  for c be Nat holds P[c] from NAT_1:sch 2(A12,A1);
  hence thesis;
end;
