reserve X for set, x,y,z for object,
  k,l,n for Nat,
  r for Real;
reserve i,i0,i1,i2,i3,i4,i5,i8,i9,j for Integer;
reserve r1,p,p1,g,g1,g2 for Real,
  Y for Subset of REAL;

theorem
  for n being Integer holds
  n > 0 implies for a being Integer holds a mod n = 0 iff n divides a
proof
  let n be Integer;
  assume
A1: n > 0;
  let a be Integer;
A2: now
A3: a mod n = a - (a div n) * n by A1,Def10
      .= a - ([\ a/n /]) * n;
    assume n divides a;
    then consider k being Integer such that
A4: n * k = a;
    -n <> 0 by A1;
    then -n + a < 0 + a by A1,XREAL_1:6;
    then (-n + a) * n" < (n * k) * n" by A1,A4,XREAL_1:68;
    then (-n) * n" + a * n" < (n * k) * n";
    then (-n) * n" + a/n < (n * n") * k by XCMPLX_0:def 9;
    then (-n) * n" + a/n < 1 * k by A1,XCMPLX_0:def 7;
    then -n * n" + a/n < k;
    then -1 + a/n < k by A1,XCMPLX_0:def 7;
    then
A5: a/n - 1 < k;
    k <= a/n
    proof
      assume k > a/n;
      then k * n > a/n * n by A1,XREAL_1:68;
      then k * n > (a * n") * n by XCMPLX_0:def 9;
      then k * n > a * (n" * n);
      then n * k > a * 1 by A1,XCMPLX_0:def 7;
      hence thesis by A4;
    end;
    then ([\ a/n /]) = k by A5,Def6;
    hence a mod n = 0 by A4,A3;
  end;
  now
    assume a mod n = 0;
    then 0 = a - (a div n) * n by A1,Def10;
    hence n divides a;
  end;
  hence thesis by A2;
end;
