
theorem
  ex I be Function of Gauss_INT_Field,Gauss_RAT_Ring
  st (for z be object st z in the carrier of Gauss_INT_Field
  ex x, y be G_INTEG, u being Element of Q.(Gauss_INT_Ring)
  st y <> 0 & u = [x,y] & z = QClass.u & I.z = x/y) &
  I is one-to-one onto &
  (for x, y be Element of Gauss_INT_Field
  holds I.(x+y) = I.x + I.y & I.(x*y) = I.x * I.y) &
  I.(0.Gauss_INT_Field) = 0.Gauss_RAT_Ring &
  I.(1.Gauss_INT_Field) = 1.Gauss_RAT_Ring
  proof
    defpred P[object,object] means
    ex x, y be G_INTEG, u being Element of Q.(Gauss_INT_Ring)
    st y <> 0 & u = [x,y] & $1 = QClass.u & $2 = x/y;
    A1: for z be object st z in the carrier of Gauss_INT_Field
    ex w be object st w in the carrier of Gauss_RAT_Ring & P[z,w]
    proof
      let z be object;
      assume z in the carrier of Gauss_INT_Field;
      then consider u being Element of Q.(Gauss_INT_Ring) such that
      A2: z = QClass.u by QUOFIELD:def 5;
      consider x1, y1 be Element of Gauss_INT_Ring such that
      A3: u = [x1,y1] & y1 <> 0.(Gauss_INT_Ring) by QUOFIELD:def 1;
      reconsider x = x1, y = y1 as G_INTEG by Th2;
      take x/y;
      thus thesis by A2,A3;
    end;
    consider I be Function of Gauss_INT_Field,Gauss_RAT_Ring such that
    A4: for z be object
    st z in the carrier of Gauss_INT_Field holds P[z,I.z]
    from FUNCT_2:sch 1(A1);
    A5:
    now let z1, z2 be object;
      assume A6: z1 in dom I & z2 in dom I & I.z1 = I.z2;
      then A7: z1 in the carrier of Gauss_INT_Field
      & z2 in the carrier of Gauss_INT_Field by FUNCT_2:def 1;
      then consider x1, y1 be G_INTEG, u1 being Element of Q.(Gauss_INT_Ring)
      such that
      A8: y1 <> 0 & u1 = [x1,y1] & z1 = QClass.u1 & I.z1 = x1/y1 by A4;
      consider x2, y2 be G_INTEG, u2 being Element of Q.(Gauss_INT_Ring)
      such that
      A9: y2 <> 0 & u2 = [x2,y2] & z2 = QClass.u2 & I.z2 = x2/y2 by A4,A7;
      thus z1 = z2 by A6,A8,A9,Lm5;
    end;
    then A10: I is one-to-one by FUNCT_1:def 4;
    now let p1 be object;
      assume p1 in the carrier of Gauss_RAT_Ring;
      then reconsider p = p1 as G_RAT by Th10;
      consider x, y be G_INTEG such that
      A11: y <> 0 & p = x/y by Th12;
      reconsider x1 = x, y1 = y as Element of Gauss_INT_Ring by Th3;
      y1 <> 0.(Gauss_INT_Ring) by A11;
      then reconsider u1 = [x1,y1] as Element of Q. (Gauss_INT_Ring)
      by QUOFIELD:def 1;
      set z1 = QClass.u1;
      consider x2, y2 be G_INTEG, u2 being Element of Q.(Gauss_INT_Ring)
      such that
      A12: y2 <> 0 & u2 = [x2,y2] & z1 = QClass.u2 & I.z1 = x2/y2 by A4;
      x/y = x2/y2 by Lm5,A12,A11;
      hence ex z1 be object st z1 in the carrier of Gauss_INT_Field
      & I.z1 = p1 by A12,A11;
    end;
    then rng I = the carrier of Gauss_RAT_Ring by FUNCT_2:10;
    then A13: I is onto by FUNCT_2:def 3;
    A14: for z1, z2 be Element of Gauss_INT_Field holds
    I.(z1+z2) = I.z1 + I.z2 & I.(z1*z2) = I.z1 * I.z2
    proof
      let z1, z2 be Element of Gauss_INT_Field;
      consider x1, y1 be G_INTEG,
      u1 being Element of Q.(Gauss_INT_Ring) such that
      A15: y1 <> 0 & u1 = [x1,y1] & z1 = QClass.u1 & I.z1 = x1/y1 by A4;
      consider x2, y2 be G_INTEG,
      u2 being Element of Q.(Gauss_INT_Ring) such that
      A16: y2 <> 0 & u2 = [x2,y2] & z2 = QClass.u2 & I.z2 = x2/y2 by A4;
      set z12 = z1+z2;
      consider x12, y12 be G_INTEG,
      u12 being Element of Q.(Gauss_INT_Ring) such that
      A17: y12 <> 0 & u12 = [x12,y12] & z12 = QClass.u12 & I.z12 = x12/y12
      by A4;
      A18: x1/y1 + x2/y2 = (x1*y2 + x2*y1)/(y1*y2) by A15,A16,XCMPLX_1:116;
      A19: u1`1*u2`2 = x1*y2 & u2`1*u1`2 = x2*y1 & u1`2*u2`2 = y1*y2
      by Th6,A15,A16;
      A20: padd (u1,u2) = [(x1*y2)+(x2*y1),y1*y2] by A19,Th4;
      z12 = qadd ((QClass.u1),(QClass.u2)) by A15,A16,QUOFIELD:def 12
      .= QClass.(padd (u1,u2)) by QUOFIELD:9;
      then A21: u12 in QClass.(padd (u1,u2)) by A17,QUOFIELD:5;
      A22:  u12`1 * (padd (u1,u2))`2 = x12*(y1*y2) by Th6,A17,A19;
      (padd (u1,u2))`1 * u12`2 = (x1*y2 + y1*x2) * y12 by Th6,A17,A20;
      then x12*(y1*y2 ) = (x1*y2 + y1*x2)*y12 by A22,A21,QUOFIELD:def 4;
      then A23: x12/y12 = (x1*y2 + x2*y1)/(y1*y2)
        by A15,A16,A17,XCMPLX_1:94;
      set z12 = z1*z2;
      consider x12, y12 be G_INTEG,
      u12 being Element of Q.(Gauss_INT_Ring) such that
      A24: y12 <> 0 & u12 = [x12,y12] & z12 = QClass.u12 & I.z12 = x12/y12
      by A4;
      A25: (x1/y1) * (x2/y2) = (x1*x2)/(y1*y2) by XCMPLX_1:76;
      A26: u1`1*u2`1 = x1*x2 & u2`2*u1`2 = y1*y2 by Th6,A15,A16;
      z12 = qmult ((QClass.u1),(QClass.u2)) by A15,A16,QUOFIELD:def 13
      .= QClass.(pmult (u1,u2)) by QUOFIELD:10;
      then A27: u12 in QClass.(pmult (u1,u2)) by A24,QUOFIELD:5;
      A28:  u12`1 * (pmult (u1,u2))`2 = x12*(y1*y2) by Th6,A24,A26;
      (pmult (u1,u2))`1 * u12`2 = (x1*x2) * y12 by Th6,A24,A26;
      then x12*(y1*y2 ) = (x1*x2)*y12 by A28,A27,QUOFIELD:def 4;
      then x12/y12 = (x1*x2)/(y1*y2) by A15,A16,A24,XCMPLX_1:94;
      hence thesis by A23,A25,A18,A24,A17,A15,A16,Th27,Th29;
    end;
    A29: I.(0.Gauss_INT_Field) = I.(0.Gauss_INT_Field + 0.Gauss_INT_Field)
    by RLVECT_1:4
    .= I.(0.Gauss_INT_Field) + I.(0.Gauss_INT_Field) by A14;
    A30: 0.Gauss_RAT_Ring = I.(0.Gauss_INT_Field) - I.(0.Gauss_INT_Field)
    by RLVECT_1:15
    .= I.(0.Gauss_INT_Field) + (I.(0.Gauss_INT_Field) - I.(0.Gauss_INT_Field))
    by A29,RLVECT_1:28
    .= I.(0.Gauss_INT_Field) + 0. Gauss_RAT_Ring by RLVECT_1:15
    .= I.(0.Gauss_INT_Field) by RLVECT_1:4;
    dom I = the carrier of (Gauss_INT_Field) by FUNCT_2:def 1;
    then A31: I.(1.Gauss_INT_Field) <> 0.Gauss_RAT_Ring by A5,A30;
    A32: I.(1.Gauss_INT_Field) = I.((1.Gauss_INT_Field)*(1.Gauss_INT_Field))
    .= I.(1.Gauss_INT_Field) * I.(1.Gauss_INT_Field) by A14;
    1.Gauss_RAT_Ring = (I.(1.Gauss_INT_Field))" * (I.(1.Gauss_INT_Field))
    by VECTSP_1:def 10,A31
    .= (I.(1.Gauss_INT_Field))" * (I.(1.Gauss_INT_Field))
    * (I.(1.Gauss_INT_Field)) by A32,GROUP_1:def 3
    .= (1. Gauss_RAT_Ring) * (I.(1.Gauss_INT_Field)) by VECTSP_1:def 10,A31
    .= I.(1.Gauss_INT_Field);
    hence thesis by A4,A10,A13,A14,A30;
  end;
