reserve A,B,O for Ordinal,
        o for object,
        x,y,z for Surreal,
        n,m for Nat;

theorem Th15:
  for i,j be Integer holds (uInt.i) * (uInt.j) == uInt.(i*j)
proof
A1: uInt.0=0_No by Def1;
  defpred P[Nat] means for n,m st n+m=$1
    holds (uInt.n) * (uInt.m) == uInt.(n*m);
A2: for k be Nat st for n st n < k holds P[n] holds P[k]
  proof
    let k be Nat such that
A3: for n st n < k holds P[n];
    let n,m such that
A4: n+m=k;
    per cases;
    suppose n=0 or m=0;
      hence thesis by A1;
    end;
    suppose n<>0 & m<>0;
      then reconsider n1=n-1,m1=m-1,nm1=n*m-1 as Nat by NAT_1:20;
A5:   uInt.(n1+1) = [{uInt.n1},{}] & uInt.(m1+1) = [{uInt.m1},{}]
      by Def1;
A6:   uInt.(nm1+1) = [{uInt.nm1},{}] by Def1;
      set x=uInt.n,y = uInt.m;
      reconsider nm1=n*m-1 as Nat by A6;
      comp(R_x,x,y,L_y) = comp(L_y,y,x,R_x) by SURREALR:53;
      then
A7:   comp(R_x,x,y,L_y) = {} by A5,SURREALR:49;
A8:   comp(L_x,x,y,R_y) = {} = comp(R_x,x,y,R_y) by A5,SURREALR:49;
A9:   n1 < n1+1 & m1< m1+1 by NAT_1:13;
      then
A10:  n1+m < n+m & n1+m1 < n+m1 & n+m1 < n+m by XREAL_1:8;
      n1+m1 < n+m by A9,XREAL_1:8;
      then (uInt.n1)*y == uInt.(n1*m) & (uInt.n1)*(uInt.m1) == uInt.(n1*m1) &
      x*(uInt.m1) == uInt.(n*m1) by A4,A3,A10;
      then (uInt.n1)*y + x*(uInt.m1) == (uInt.(n1*m)) + uInt.(n*m1) =
      uInt.(n1*m + n*m1) &
      - (uInt.n1)*(uInt.m1) == - uInt.(n1*m1) = uInt.-(n1*m1)
      by Th13,SURREALR:10,43,Th12;
      then (uInt.n1)*y + x*(uInt.m1) + - (uInt.n1)*(uInt.m1)
      == uInt.(n1*m + n*m1) + uInt.-(n1*m1) == uInt.((n1*m + n*m1)+ -(n1*m1))
      by Th14,SURREALR:43;
      then (uInt.n1)*y + x*(uInt.m1) + - (uInt.n1)*(uInt.m1) == uInt.(nm1)
      by SURREALO:4;
      then { (uInt.n1)*y + x*(uInt.m1) - (uInt.n1)*(uInt.m1)}
      <==> {uInt.(nm1)} by SURREALO:32;
      then
A11:  comp(L_x,x,y,L_y) <==> {uInt.(nm1)} by A5,SURREALR:52;
      x * y = [comp(L_x,x,y,L_y)\/ {},{}\/{}] by A7,A8,SURREALR:50
      .= [comp(L_x,x,y,L_y),{}];
      hence thesis by A6,A11,SURREALO:29;
    end;
  end;
A12: for k be Nat holds P[k] from NAT_1:sch 4(A2);
  let i,j be Integer;
  i in INT by INT_1:def 2;
  then consider k be Nat such that
A13:i=k or i=-k by INT_1:def 1;
  j in INT by INT_1:def 2;
  then consider n be Nat such that
A14:j=n or j=-n by INT_1:def 1;
A15: P[n+k] by A12;
  then
A16:(uInt.n) * (uInt.k) == uInt.(n*k);
  per cases by A13,A14;
  suppose i=k & j=n;
    hence thesis by A15;
  end;
  suppose
A17:i=-k & j=n;
    (uInt.n) * (uInt.-k) = (uInt.n) *( -uInt.k) by Th12
    .= - (uInt.n) * (uInt.k) by SURREALR:58;
    then (uInt.n) * (uInt.-k) == - uInt.(n*k) by A16,SURREALR:10;
    then (uInt.n) * (uInt.-k) == uInt.-(n*k) by Th12;
    hence thesis by A17;
  end;
  suppose
A18: i=k & j=-n;
    (uInt.-n) * (uInt.k) = (-uInt.n) *( uInt.k) by Th12
    .= - (uInt.n) * (uInt.k) by SURREALR:58;
    then (uInt.-n) * (uInt.k) == - uInt.(n*k) by A16,SURREALR:10;
    then (uInt.-n) * (uInt.k) == uInt.-(n*k) by Th12;
    hence thesis by A18;
  end;
  suppose
A19: i=-k & j=-n;
    (uInt.-n) * (uInt.-k) = (-uInt.n) *( uInt.-k) by Th12
    .= (-uInt.n) *(-uInt.k) by Th12
    .= - - (uInt.n) * (uInt.k) by SURREALR:58
    .= (uInt.n) * (uInt.k);
    hence thesis by A19,A16;
  end;
end;
