
theorem Th9:
  for X,Y be AbGroup holds
  ex I be Homomorphism of [:X,Y:],[:X,product <*Y*>:] st I is bijective &
  (for x be Element of X, y be Element of Y holds I.(x,y) = [x,<*y*>])
proof
  let X,Y be AbGroup;
  consider J be Homomorphism of Y, product <*Y*> such that
A1: J is bijective & (for y be Element of Y holds J.y = <*y*>) by Th1;
  defpred P[object,object,object] means $3 = [$1,<* $2 *>];
A2: for x,y be object st x in the carrier of X & y in the carrier of Y
   ex z be object st z in the carrier of [:X,product <*Y*>:] & P[x,y,z]
  proof
    let x,y be object;
    assume
A3: x in the carrier of X & y in the carrier of Y;
    then reconsider y0=y as Element of Y;
    reconsider z=[x,<*y0*>] as set by TARSKI:1;
    take z;
    J.y0 = <*y0*> by A1;
    hence thesis by A3,ZFMISC_1:87;
  end;
  consider I be Function of [:the carrier of X,the carrier of Y:],
  the carrier of [:X,product <*Y*>:] such that
A4: for x,y be object st x in the carrier of X & y in the carrier of Y holds
  P[x,y,I.(x,y)] from BINOP_1:sch 1(A2);
  reconsider I as Function of [:X,Y:],[:X,product <*Y*>:];
  for v,w be Element of [:X,Y:] holds I.(v+w) = I.v + I.w
  proof
    let v,w be Element of [:X,Y:];
    consider x1 be Element of X, x2 be Element of Y such that
A5: v=[x1,x2] by SUBSET_1:43;
    consider y1 be Element of X, y2 be Element of Y such that
A6: w=[y1,y2] by SUBSET_1:43;
A7: I.(v+w) = I.(x1+y1,x2+y2) by A5,A6,PRVECT_3:def 1
      .= [x1+y1,<*x2+y2*>] by A4;
    I.v = I.(x1,x2) & I.w = I.(y1,y2) by A5,A6;
    then
A8: I.v = [x1,<*x2*>] & I.w = [y1,<*y2*>] by A4;
A9: J.x2 = <*x2*> & J.y2 = <*y2*> by A1;
    then reconsider xx2=<*x2*> as Element of product <*Y*>;
    reconsider yy2=<*y2*> as Element of product <*Y*> by A9;
    <*x2+y2*> = J.(x2+y2) by A1
      .= xx2+yy2 by A9,VECTSP_1:def 20;
    hence I.v + I.w = I.(v+w) by A7,A8,PRVECT_3:def 1;
  end;
  then reconsider I as Homomorphism of [:X,Y:],[:X,product <*Y*>:]
  by VECTSP_1:def 20;
  take I;
  now let z1,z2 be object;
    assume
A10: z1 in the carrier of [:X,Y:] & z2 in the carrier of [:X,Y:] & I.z1 = I.z2;
    consider x1,y1 be object such that
A11: x1 in the carrier of X & y1 in the carrier of Y & z1 = [x1,y1]
    by A10,ZFMISC_1:def 2;
    consider x2,y2 be object such that
A12: x2 in the carrier of X & y2 in the carrier of Y & z2 = [x2,y2]
    by A10,ZFMISC_1:def 2;
    [x1,<*y1*>] = I.(x1,y1) by A4,A11
      .= I.(x2,y2) by A10,A11,A12
      .= [x2,<*y2*>] by A4,A12;
    then x1 = x2 & <*y1*> = <*y2*> by XTUPLE_0:1;
    hence z1 = z2 by A11,A12,FINSEQ_1:76;
  end;
  then
A13: I is one-to-one by FUNCT_2:19;
  now let w be object;
    assume w in the carrier of [:X,product <*Y*>:];
    then consider x,y1 be object such that
A14: x in the carrier of X & y1 in the carrier of product <*Y*> &
    w = [x,y1] by ZFMISC_1:def 2;
    y1 in rng J by A1,A14,FUNCT_2:def 3;
    then consider y be object such that
A15: y in the carrier of Y & y1 = J.y by FUNCT_2:11;
    reconsider z = [x,y] as Element of [:the carrier of X,the carrier of Y:]
    by A14,A15,ZFMISC_1:87;
    J.y = <*y*> by A15,A1;
    then w = I.(x,y) by A4,A14,A15;
    then w = I.z;
    hence w in rng I by FUNCT_2:4;
  end;
  then the carrier of [:X,product <*Y*>:] c= rng I by TARSKI:def 3;
  then I is onto by FUNCT_2:def 3,XBOOLE_0:def 10;
  hence I is bijective by A13;
  thus for x be Element of X, y be Element of Y holds I.(x,y) = [x,<*y*>]
  by A4;
end;
