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 Th45:
  for p be 5_or_greater Prime, z be Element of EC_WParam p,
  P, Q be Element of EC_SetProjCo(z`1,z`2,p) st P`3_3 <> 0 holds
  (P`1_3 = Q`1_3 & P`3_3 = Q`3_3) iff P = Q or P = compell_ProjCo(z,p).Q
  proof
    let p be 5_or_greater Prime, z be Element of EC_WParam p,
    P, Q be Element of EC_SetProjCo(z`1,z`2,p) such that
    A1: P`3_3 <> 0;
    set a = z`1;
    set b = z`2;
    A2: P`3_3 <> 0.GF(p) by A1,EC_PF_1:11;
    hereby
      assume A3: P`1_3 = Q`1_3 & P`3_3 = Q`3_3;
      A4: ((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;
      ((Q`2_3) |^2)*(Q`3_3)-((Q`1_3) |^3 + a*(Q`1_3)*(Q`3_3) |^2
      + b*(Q`3_3) |^3) = 0.GF(p) by Th35;
      then
A5: ((Q`2_3) |^2)*(Q`3_3)
    = (P`1_3) |^3 + a*(P`1_3)*(Q`3_3) |^2 + b*(P`3_3) |^3
      by A3,VECTSP_1:19
      .= ((P`2_3) |^2)*(P`3_3) by A3,A4,VECTSP_1:19;
      (P`2_3)*(P`2_3) = (P`2_3) |^2 by EC_PF_1:22
      .= (Q`2_3) |^2 by A2,A3,A5,VECTSP_1:5
      .= (Q`2_3)*(Q`2_3) by EC_PF_1:22;
      then P`2_3 = Q`2_3 or P`2_3 = -Q`2_3 by EC_PF_1:26;
      then P = [Q`1_3, Q`2_3, Q`3_3] or P = [Q`1_3, -Q`2_3, Q`3_3]
      by A3,Th31;
      hence P = Q or P = compell_ProjCo(z,p).Q by Th31,Def8;
    end;
    assume A6: P = Q or P = compell_ProjCo(z,p).Q;
    P = [Q`1_3, Q`2_3, Q`3_3] or P = [Q`1_3, -Q`2_3, Q`3_3]
           by A6,Th31,Def8;
    hence P`1_3 = Q`1_3 & P`3_3 = Q`3_3 by Def3,Def5;
  end;
