reserve a, b, k, n, m for Nat,
  i for Integer,
  r for Real,
  p for Rational,
  c for Complex,
  x for object,
  f for Function;

theorem Th17:
  a <> 0 & a <= b & divSeq(m,n).a = 0 implies divSeq(m,n).b = 0
proof
  set fd = divSeq(m,n);
  set fm = modSeq(m,n);
  assume that
A1: a <> 0 and
A2: a <= b and
A3: fd.a = 0;
A4: a < b or a = b by A2,XXREAL_0:1;
  defpred P[Nat] means a < $1 implies fd.$1 = 0 & fm.$1 = 0;
A5: for k being Nat st P[k] holds P[k+1]
  proof
    let k be Nat such that
A6: P[k];
    assume
A7: a < k+1;
    then
A8: a <= k by NAT_1:13;
    per cases by NAT_1:25;
    suppose
      k = 0;
      hence thesis by A1,A7,NAT_1:13;
    end;
    suppose
A9:   k = 1;
      then fd.(0+1) = 0 by A1,A3,A8,NAT_1:25;
      then
A10:  fm.0 = 0 by Th16;
A11:  2 = 2+0;
      hence fd.(k+1) = fm.0 div fm.(0+1) by A9,Def2
        .= 0 by A10;
      thus fm.(k+1) = fm.0 mod fm.(0+1) by A9,A11,Def1
        .= 0 by A10;
    end;
    suppose
      k > 1;
      then reconsider k1 = k-1 as Nat;
A12:  k = k1+1;
      per cases by A8,XXREAL_0:1;
      suppose
        a = k;
        then
A13:    fm.k1 = 0 by A3,A12,Th16;
        thus fd.(k+1) = fd.(k1+2) .= fm.k1 div fm.(k1+1) by Def2
          .= 0 by A13;
        thus fm.(k+1) = fm.(k1+2) .= fm.k1 mod fm.(k1+1) by Def1
          .= 0 by A13;
      end;
      suppose
A14:    a < k;
        thus fd.(k+1) = fd.(k1+2) .= fm.k1 div fm.(k1+1) by Def2
          .= 0 by A6,A14;
        thus fm.(k+1) = fm.(k1+2) .= fm.k1 mod fm.(k1+1) by Def1
          .= 0 by A6,A14;
      end;
    end;
  end;
A15: P[0];
  for k being Nat holds P[k] from NAT_1:sch 2(A15,A5);
  hence thesis by A3,A4;
end;
