reserve m,n for Nat;
reserve i,j for Integer;
reserve S for non empty addMagma;
reserve r,r1,r2,s,s1,s2,t,t1,t2 for Element of S;
reserve G for addGroup-like non empty addMagma;
reserve e,h for Element of G;
reserve G for addGroup;
reserve f,g,h for Element of G;
reserve u for UnOp of G;

theorem Th32:
  (i + j) * h = (i * h) + (j * h)
proof
  defpred P[Integer] means for i holds (i + $1) * h = i * h + ( $1 * h);
A1: for j holds P[j] implies P[j - 1] & P[j + 1]
  proof
    let j;
    assume
A2: for i holds (i + j) * h = i * h + ( j * h);
    thus for i holds (i + (j - 1)) * h = i * h + ( (j - 1) * h)
    proof
      let i;
      thus (i + (j - 1)) * h = ((i - 1) + j) * h
        .= (i - 1) * h + ( j * h) by A2
        .= i * h + ( (-1)) * h + ( j * h) by Lm14
        .= i * h + (( (-1) * h) + ( j * h)) by RLVECT_1:def 3
        .= i * h + ( (j + (-1)) * h) by A2
        .= i * h + ( (j - 1) * h);
    end;
    let i;
    thus (i + (j + 1)) * h = ((i + 1) + j) * h
      .= (i + 1) * h + (j * h) by A2
      .= i * h + (1 * h) + (j * h) by Lm16
      .= i * h + (( 1 * h) + (j * h)) by RLVECT_1:def 3
      .= i * h + ((j + 1) * h) by A2;
  end;
A3: P[0]
  proof
    let i;
    thus (i + 0) * h = i * h + 0_G by Def4
      .= i * h + ( 0 * h) by Def7;
  end;
  for j holds P[j] from INT_1:sch 4(A3,A1);
  hence thesis;
end;
