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 Th16:
  divSeq(m,n).(a+1) = 0 implies modSeq(m,n).a = 0
proof
  set fd = divSeq(m,n);
  set fm = modSeq(m,n);
  defpred P[Nat] means fd.($1+1) = 0 implies fm.$1 = 0;
A1: P[b] implies P[b+1]
  proof
    assume P[b];
    set x = fm.(b+1);
    assume fd.(b+1+1) = 0;
    then fd.(b+(1+1)) = 0;
    then
A2: fm.b div fm.(b+1) = 0 by Def2;
    assume
A3: fm.(b+1) <> 0;
    then fm.b = x * (fm.b div x) + (fm.b mod x) by NAT_D:2;
    then
A4: fm.b < x by A2,A3,NAT_D:1;
A5: b+0 < b+1 by XREAL_1:6;
    then fm.b <> 0 by A3,Th14;
    hence thesis by A4,A5,Th15;
  end;
A6: P[0]
  proof
    set x = m mod n;
    assume fd.(0+1) = 0;
    then
A7: n div fm.0 = 0 by Th12;
    assume
A8: fm.0 <> 0;
    then m mod n <> 0 by Def1;
    then
A9: n <> 0;
A10: fm.0 = x by Def1;
    then n = x * (n div x) + (n mod x) by A8,NAT_D:2;
    then n < x by A7,A10,A8,NAT_D:1;
    hence thesis by A9,NAT_D:1;
  end;
  P[b] from NAT_1:sch 2(A6,A1);
  hence thesis;
end;
