reserve x for set;
reserve i,j for Integer;
reserve n,n1,n2,n3 for Nat;
reserve p for Prime;
reserve a,b,c,d for Element of GF(p);
reserve K for Ring;
reserve a1,a2,a3,a4,a5,a6 for Element of K;
reserve px,py,pz for object;
reserve Px,Py,Pz for Element of GF(p);
reserve P for Element of ProjCo(GF(p));
reserve O for Element of EC_SetProjCo(a,b,p);

theorem Th61:
  for p be 5_or_greater Prime, z be Element of EC_WParam p,
  g2, g3, g4, g8, gf1, gf2, gf3, gf4 be Element of GF(p),
  P be Element of EC_SetProjCo(z`1,z`2,p),
  R be Element of
  [:the carrier of GF(p), the carrier of GF(p), the carrier of GF(p):]
  st g2 = 2 mod p & g3 = 3 mod p & g4 = 4 mod p & g8 = 8 mod p &
  gf1 = z`1*(P`3_3 |^2) + g3*(P`1_3 |^2) & gf2 = P`2_3*(P`3_3) &
  gf3 = P`1_3*(P`2_3)*gf2 & gf4 = (gf1 |^2) - g8*gf3 &
  R = [g2*gf4*gf2, gf1*(g4*gf3-gf4) - g8*(P`2_3 |^2)*(gf2 |^2), g8*(gf2 |^3)]
  holds g4*(gf2 |^2)*(P`3_3 |^2)*(z`2*(R`3_3))
         = R`3_3*((g2*gf2*(P`2_3)-gf1*(P`1_3)) |^2)
  - g4*(gf2 |^2)*(P`1_3 |^2)*(R`1_3)
  proof
    let p be 5_or_greater Prime, z be Element of EC_WParam p,
    g2, g3, g4, g8, gf1, gf2, gf3, gf4 be Element of GF(p),
    P be Element of EC_SetProjCo(z`1,z`2,p),
    R be Element of
    [:the carrier of GF(p), the carrier of GF(p), the carrier of GF(p):]
    such that
    A1: g2 = 2 mod p & g3 = 3 mod p & g4 = 4 mod p & g8 = 8 mod p and
    A2:  gf1 = z`1*(P`3_3 |^2) + g3*(P`1_3 |^2) & gf2 = P`2_3*(P`3_3) &
    gf3 = P`1_3*(P`2_3)*gf2 & gf4 = (gf1 |^2) - g8*gf3 and
    A3: R = [g2*gf4*gf2, gf1*(g4*gf3-gf4) - g8*(P`2_3 |^2)*(gf2 |^2),
    g8*(gf2 |^3)];
    set a = z`1;
    set b = z`2;
    A4: g4 = (2*2) mod p by A1
    .= g2*g2 by A1,EC_PF_1:18;
    A5: g8 = (2*4) mod p by A1
    .= g2*g4 by A1,EC_PF_1:18;
    A6: -g4*(gf2 |^2)*(P`1_3 |^2)*(R`1_3)
     = -g4*(gf2 |^2)*((P`1_3 |^2)*(g2*gf4*gf2)) by GROUP_1:def 3,A3
    .= -g4*((gf2 |^2)*((P`1_3 |^2)*(g2*gf4*gf2))) by GROUP_1:def 3
    .= -g4*(((gf2 |^2)*(P`1_3 |^2))*(g2*gf4*gf2)) by GROUP_1:def 3
    .= -g4*(((gf2 |^2)*(P`1_3 |^2))*(g2*(gf4*gf2))) by GROUP_1:def 3
    .= -g4*((((gf2 |^2)*(P`1_3 |^2))*(gf2*gf4))*g2) by GROUP_1:def 3
    .= -(g4*g2)*(((gf2 |^2)*(P`1_3 |^2))*(gf2*gf4)) by GROUP_1:def 3
    .= -g8*((P`1_3 |^2)*((gf2 |^2)*(gf2*gf4))) by A5,GROUP_1:def 3
    .= -g8*((P`1_3 |^2)*(((gf2 |^2)*gf2)*gf4)) by GROUP_1:def 3
    .= -g8*((P`1_3 |^2)*((gf2 |^(2+1))*gf4)) by EC_PF_1:24
    .= -g8*(((P`1_3 |^2)*(gf2 |^3))*gf4) by GROUP_1:def 3
    .= -(g8*((P`1_3 |^2)*(gf2 |^3)))*gf4 by GROUP_1:def 3
    .= -((g8*(gf2 |^3))*(P`1_3 |^2))*gf4 by GROUP_1:def 3
    .= -((R`3_3*(P`1_3 |^2))*(gf1 |^2)-(R`3_3*(P`1_3 |^2))*(g8*gf3))
         by A2,A3,VECTSP_1:11
    .= (R`3_3*(P`1_3 |^2))*(g8*gf3)-(R`3_3*(P`1_3 |^2))*(gf1 |^2)
           by VECTSP_1:17
    .= ((R`3_3*(P`1_3 |^2))*g8)*gf3-(R`3_3*(P`1_3 |^2))*(gf1 |^2)
           by GROUP_1:def 3
    .= (g8*(R`3_3*(P`1_3 |^2)))*gf3-R`3_3*((P`1_3 |^2)*(gf1 |^2))
            by GROUP_1:def 3
    .= g8*((R`3_3*(P`1_3 |^2))*gf3)-R`3_3*((P`1_3 |^2)*(gf1 |^2))
     by GROUP_1:def 3
    .= g8*(R`3_3*((P`1_3 |^2)*(P`1_3*(P`2_3)*gf2)))
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by A2,GROUP_1:def 3
    .= g8*(R`3_3*((P`1_3 |^2)*(P`1_3*(P`2_3*gf2))))
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by GROUP_1:def 3
    .= g8*(R`3_3*(((P`1_3 |^2)*(P`1_3))*(P`2_3*gf2)))
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by GROUP_1:def 3
    .= g8*(R`3_3*((P`1_3 |^(2+1))*(P`2_3*gf2)))
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by EC_PF_1:24
    .= g8*((R`3_3*(P`2_3*gf2))*(P`1_3 |^3))
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by GROUP_1:def 3
    .= ((g2*g4)*(R`3_3*(P`2_3*gf2)))*(P`1_3 |^3)
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by A5,GROUP_1:def 3
    .= (g2*(g4*(R`3_3*(P`2_3*gf2))))*(P`1_3 |^3)
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by GROUP_1:def 3
    .= (g4*(R`3_3*(P`2_3*gf2)))*(g2*(P`1_3 |^3))
    -R`3_3*((P`1_3 |^2)*(gf1 |^2)) by GROUP_1:def 3
    .= -R`3_3*((gf1 |^2)*(P`1_3 |^2))
            +((g4*(R`3_3))*(P`2_3*gf2))*(g2*(P`1_3 |^3))
    by GROUP_1:def 3;
    A7: R`3_3*((g2*gf2*(P`2_3)-gf1*(P`1_3)) |^2)-R`3_3*((gf1 |^2)*(P`1_3 |^2))
    = R`3_3*(((g2*gf2*(P`2_3)-gf1*(P`1_3)) |^2)-(gf1 |^2)*(P`1_3 |^2))
            by VECTSP_1:11
    .= R`3_3*(((g2*gf2*(P`2_3)-gf1*(P`1_3)) |^2)-((gf1*(P`1_3)) |^2))
             by BINOM:9
    .= R`3_3*(((g2*gf2*(P`2_3)-gf1*(P`1_3))+gf1*(P`1_3))*
    ((g2*gf2*(P`2_3)-gf1*(P`1_3))-gf1*(P`1_3))) by Th15
    .= R`3_3*((g2*gf2*(P`2_3)-(gf1*(P`1_3)-gf1*(P`1_3)))*
    ((g2*gf2*(P`2_3)-gf1*(P`1_3))-gf1*(P`1_3))) by RLVECT_1:29
    .= R`3_3*((g2*gf2*(P`2_3)-(gf1*(P`1_3)-gf1*(P`1_3)))*
    (g2*gf2*(P`2_3)-(gf1*(P`1_3)+gf1*(P`1_3)))) by RLVECT_1:27
    .= R`3_3*((g2*gf2*(P`2_3)-(gf1*(P`1_3)-gf1*(P`1_3)))*
          (g2*gf2*(P`2_3)-g2*(gf1*(P`1_3))))
    by A1,Th20
    .= R`3_3*((g2*gf2*(P`2_3)-0.GF(p))*(g2*gf2*(P`2_3)-g2*(gf1*(P`1_3))))
          by VECTSP_1:19
    .= R`3_3*((g2*gf2*(P`2_3))*(g2*gf2*(P`2_3)-g2*(gf1*(P`1_3))))
         by RLVECT_1:13
    .= R`3_3*((g2*gf2*(P`2_3))*(g2*(gf2*(P`2_3))-g2*(gf1*(P`1_3))))
            by GROUP_1:def 3
    .= R`3_3*((g2*gf2*(P`2_3))*(g2*(gf2*(P`2_3)-gf1*(P`1_3)))) by VECTSP_1:11
    .= R`3_3*(((g2*gf2*(P`2_3))*g2)*(gf2*(P`2_3)-gf1*(P`1_3))) by GROUP_1:def 3
    .= R`3_3*((g2*(g2*(gf2*(P`2_3))))*(gf2*(P`2_3)-gf1*(P`1_3)))
              by GROUP_1:def 3
    .= R`3_3*((g4*(gf2*(P`2_3)))*(gf2*(P`2_3)-gf1*(P`1_3))) by A4,GROUP_1:def 3
    .= (R`3_3*(g4*(gf2*(P`2_3))))*(gf2*(P`2_3)-gf1*(P`1_3)) by GROUP_1:def 3
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-gf1*(P`1_3)) by GROUP_1:def 3;
    A8: 3 = 2+1;
    (P`2_3 |^2)*(P`3_3) - ((P`1_3 |^3)+a*(P`1_3)*(P`3_3 |^2)+b*(P`3_3 |^3))
    = 0.GF(p) by Th35; then
    A9: (P`1_3 |^3)+a*(P`1_3)*(P`3_3 |^2)+b*(P`3_3 |^3) = (P`2_3 |^2)*(P`3_3)
           by VECTSP_1:19
    .= (P`2_3*(P`2_3))*(P`3_3) by EC_PF_1:22
    .= gf2*(P`2_3) by A2,GROUP_1:def 3;
    thus R`3_3*((g2*gf2*(P`2_3)
         -gf1*(P`1_3)) |^2)-g4*(gf2 |^2)*(P`1_3 |^2)*(R`1_3)
    = (R`3_3*((g2*gf2*(P`2_3)-gf1*(P`1_3)) |^2)-R`3_3*((gf1 |^2)*(P`1_3 |^2)))
    +((g4*(R`3_3))*(P`2_3*gf2))*(g2*(P`1_3 |^3)) by A6,ALGSTR_1:7
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-gf1*(P`1_3)+g2*(P`1_3 |^3))
by A7,VECTSP_1:def 7
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-((a*(P`3_3 |^2))*(P`1_3)+
    (g3*(P`1_3 |^2))*(P`1_3))+g2*(P`1_3 |^3)) by A2,VECTSP_1:def 7
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-(((a*(P`3_3 |^2))*(P`1_3)+
    (g3*(P`1_3 |^2))*(P`1_3))-g2*(P`1_3 |^3))) by RLVECT_1:29
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-(((a*(P`3_3 |^2))*(P`1_3)+
    g3*((P`1_3 |^2)*(P`1_3)))-g2*(P`1_3 |^3))) by GROUP_1:def 3
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-(((a*(P`3_3 |^2))*(P`1_3)+
    g3*(P`1_3 |^(2+1)))-g2*(P`1_3 |^3))) by EC_PF_1:24
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-((a*(P`3_3 |^2))*(P`1_3)+
    (g3*(P`1_3 |^3)-g2*(P`1_3 |^3)))) by ALGSTR_1:7
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(gf2*(P`2_3)-((a*(P`3_3 |^2))*(P`1_3)+
    (P`1_3 |^3))) by A1,A8,Th22
    .= ((g4*(R`3_3))*(P`2_3*gf2))*(((P`1_3 |^3)+
                a*(P`1_3)*(P`3_3 |^2))+b*(P`3_3 |^3)
    -((P`1_3 |^3)+a*(P`1_3)*(P`3_3 |^2))) by A9,GROUP_1:def 3
    .= ((g4*(R`3_3))*(gf2*(P`2_3)))*(b*(P`3_3 |^3)+
            (((P`1_3 |^3)+a*(P`1_3)*(P`3_3 |^2))
    -((P`1_3 |^3)+a*(P`1_3)*(P`3_3 |^2)))) by ALGSTR_1:7
    .= ((g4*(R`3_3))*(gf2*(P`2_3)))*(b*(P`3_3 |^3)+0.GF(p)) by RLVECT_1:5
    .= ((g4*(R`3_3))*(gf2*(P`2_3)))*(b*(P`3_3 |^3)) by ALGSTR_1:7
    .= (((g4*(R`3_3))*gf2)*(P`2_3))*(b*(P`3_3 |^3)) by GROUP_1:def 3
    .= ((g4*(R`3_3))*gf2)*(P`2_3*(b*(P`3_3 |^3))) by GROUP_1:def 3
    .= ((g4*(R`3_3))*gf2)*(b*(P`2_3*(P`3_3 |^(2+1)))) by GROUP_1:def 3
    .= ((g4*(R`3_3))*gf2)*(b*(P`2_3*((P`3_3 |^2)*(P`3_3)))) by EC_PF_1:24
    .= (((g4*(R`3_3))*gf2)*b)*(P`2_3*(P`3_3*(P`3_3 |^2))) by GROUP_1:def 3
    .= (((g4*(R`3_3))*gf2)*b)*(gf2*(P`3_3 |^2)) by A2,GROUP_1:def 3
    .= ((g4*(R`3_3*gf2))*b)*(gf2*(P`3_3 |^2)) by GROUP_1:def 3
    .= (g4*((R`3_3*gf2)*b))*(gf2*(P`3_3 |^2)) by GROUP_1:def 3
    .= g4*(((R`3_3*gf2)*b)*(gf2*(P`3_3 |^2))) by GROUP_1:def 3
    .= g4*((((R`3_3*gf2)*b)*gf2)*(P`3_3 |^2)) by GROUP_1:def 3
    .= g4*((gf2*(gf2*(R`3_3*b)))*(P`3_3 |^2)) by GROUP_1:def 3
    .= g4*(((gf2*gf2)*(R`3_3*b))*(P`3_3 |^2)) by GROUP_1:def 3
    .= g4*(((gf2 |^2)*(b*(R`3_3)))*(P`3_3 |^2)) by EC_PF_1:22
    .= g4*((gf2 |^2)*((b*(R`3_3))*(P`3_3 |^2))) by GROUP_1:def 3
    .= (g4*(gf2 |^2))*((P`3_3 |^2)*(b*(R`3_3))) by GROUP_1:def 3
    .= g4*(gf2 |^2)*(P`3_3 |^2)*(b*(R`3_3)) by GROUP_1:def 3;
  end;
