reserve p for 5_or_greater Prime;
reserve z for Element of EC_WParam p;

theorem LmCommutative1:
  for p be 5_or_greater Prime, z be Element of EC_WParam p,
  P, Q, O, PQ, QP being Element of EC_SetProjCo(z`1,z`2,p)
  st O = [0, 1, 0] &
  not P _EQ_ O & not Q _EQ_ O & not P _EQ_ Q
  holds
  (PQ = addell_ProjCo(z,p).(P,Q) & QP = addell_ProjCo(z,p).(Q,P))
  implies
  QP`1_3 = -PQ`1_3 & QP`2_3 = -PQ`2_3 & QP`3_3 = -PQ`3_3
  proof
    let p be 5_or_greater Prime, z be Element of EC_WParam p,
    P, Q, O, PQ, QP be Element of EC_SetProjCo(z`1,z`2,p) such that
    A2: O = [0, 1, 0] and
    A3: not P _EQ_ O & not Q _EQ_ O & not P _EQ_ Q;
    set a = z`1;
    set b = z`2;
    assume AS: PQ = addell_ProjCo(z,p).(P,Q) &
    QP = addell_ProjCo(z,p).(Q,P);
    reconsider g2 = 2 mod p as Element of GF(p) by EC_PF_1:14;
    set gf1PQ = (Q`2_3)*(P`3_3) - (P`2_3)*(Q`3_3);
    set gf2PQ = (Q`1_3)*(P`3_3) - (P`1_3)*(Q`3_3);
    set gf3PQ = (gf1PQ|^2)*(P`3_3)*(Q`3_3)-(gf2PQ|^3)
    -g2*(gf2PQ|^2)*(P`1_3)*(Q`3_3);
    set gf1QP = (P`2_3)*(Q`3_3) - (Q`2_3)*(P`3_3);
    set gf2QP = (P`1_3)*(Q`3_3) - (Q`1_3)*(P`3_3);
    set gf3QP = (gf1QP|^2)*(Q`3_3)*(P`3_3)-(gf2QP|^3)
    -g2*(gf2QP|^2)*(Q`1_3)*(P`3_3);
    reconsider gf1PQ, gf2PQ, gf3PQ, gf1QP, gf2QP, gf3QP as Element of GF(p);
    A5: PQ = [gf2PQ*gf3PQ,
    gf1PQ*((gf2PQ |^2)*(P`1_3)*(Q`3_3)-gf3PQ)-(gf2PQ|^3)*(P`2_3)*(Q`3_3),
    (gf2PQ|^3)*(P`3_3)*(Q`3_3)]
    by A2,A3,AS,EC_PF_2:def 9;
    A6: QP = [gf2QP*gf3QP,
    gf1QP*((gf2QP |^2)*(Q`1_3)*(P`3_3)-gf3QP)-(gf2QP|^3)*(Q`2_3)*(P`3_3),
    (gf2QP|^3)*(Q`3_3)*(P`3_3)]
    by A2,A3,AS,EC_PF_2:def 9;
    A7: gf1QP = -gf1PQ by VECTSP_1:17;
    A8: gf2QP = -gf2PQ by VECTSP_1:17;
    A10: gf2PQ |^2 = gf2QP |^2 by A8,EC_PF_2:1;
    A11: gf3QP = gf3PQ
    proof
      B1: g2*(Q`1_3)*(P`3_3) - (Q`1_3)*(P`3_3)
      = g2*((Q`1_3)*(P`3_3)) - ((Q`1_3)*(P`3_3)) by GROUP_1:def 3
      .= (Q`1_3)*(P`3_3) by EC_PF_2:24;
      B2: g2*(P`1_3)*(Q`3_3) - (P`1_3)*(Q`3_3)
      = g2*((P`1_3)*(Q`3_3)) - ((P`1_3)*(Q`3_3)) by GROUP_1:def 3
      .= (P`1_3)*(Q`3_3) by EC_PF_2:24;
      gf2QP + g2*(Q`1_3)*(P`3_3)
      = (P`1_3)*(Q`3_3) + (g2*(Q`1_3)*(P`3_3) + (-(Q`1_3)*(P`3_3)))
      by ALGSTR_1:7
      .= g2*(P`1_3)*(Q`3_3) + ((Q`1_3)*(P`3_3) +(-(P`1_3)*(Q`3_3)))
      by B1,B2,ALGSTR_1:7
      .= gf2PQ + g2*(P`1_3)*(Q`3_3);
      then (gf2QP + g2*(Q`1_3)*(P`3_3))*(gf2QP |^2)
      = (gf2PQ + g2*(P`1_3)*(Q`3_3))*(gf2PQ |^2) by A8,EC_PF_2:1
      .= gf2PQ * (gf2PQ |^2) + (g2*(P`1_3)*(Q`3_3))*(gf2PQ |^2)
      by VECTSP_1:def 3
      .= gf2PQ * (gf2PQ |^2) + (g2*((P`1_3)*(Q`3_3)))*(gf2PQ |^2)
      by GROUP_1:def 3
      .= (gf2PQ * (gf2PQ |^2)) + g2*((P`1_3)*(Q`3_3)*(gf2PQ |^2))
      by GROUP_1:def 3
      .= (gf2PQ |^(2+1)) + g2*((P`1_3)*(Q`3_3)*(gf2PQ |^2)) by EC_PF_1:24
      .= (gf2PQ |^3) + g2*(gf2PQ |^2)*((P`1_3)*(Q`3_3)) by GROUP_1:def 3
      .= (gf2PQ |^3) + g2*(gf2PQ |^2)*(P`1_3)*(Q`3_3) by GROUP_1:def 3;
      then B3: (gf2PQ |^3) + g2*(gf2PQ |^2)*(P`1_3)*(Q`3_3)
      = gf2QP*(gf2QP |^2) + (g2*(Q`1_3)*(P`3_3))*(gf2QP |^2) by VECTSP_1:def 3
      .= (gf2QP*(gf2QP |^2)) + (g2*((Q`1_3)*(P`3_3)))*(gf2QP |^2)
      by GROUP_1:def 3
      .= (gf2QP*(gf2QP |^2)) + g2*((Q`1_3)*(P`3_3)*(gf2QP |^2))
      by GROUP_1:def 3
      .= (gf2QP |^(2+1)) + g2*((Q`1_3)*(P`3_3)*(gf2QP |^2)) by EC_PF_1:24
      .= (gf2QP |^3) + g2*(gf2QP |^2)*((Q`1_3)*(P`3_3)) by GROUP_1:def 3
      .= (gf2QP |^3) + g2*(gf2QP |^2)*(Q`1_3)*(P`3_3) by GROUP_1:def 3;
      (gf1QP |^2)*(Q`3_3)*(P`3_3) = (gf1QP |^2)*((Q`3_3)*(P`3_3))
      by GROUP_1:def 3
      .= (gf1PQ |^2)*((Q`3_3)*(P`3_3)) by A7,EC_PF_2:1
      .= (gf1PQ |^2)*(P`3_3)*(Q`3_3) by GROUP_1:def 3;
      then (gf1QP |^2)*(Q`3_3)*(P`3_3)
      - ((gf2QP |^3) + g2*(gf2QP |^2)*(Q`1_3)*(P`3_3))
      = gf3PQ by B3,VECTSP_1:17;
      hence gf3PQ = gf3QP by VECTSP_1:17;
    end;
    thus QP`1_3 = -PQ`1_3
    proof
      (PQ`1_3) + (QP`1_3) = (gf2PQ*gf3PQ) + (QP`1_3) by A5,EC_PF_2:def 3
      .= gf2PQ*gf3PQ + (-gf2PQ)*gf3PQ by A6,A8,A11,EC_PF_2:def 3
      .= gf2PQ*gf3PQ - gf2PQ*gf3PQ by VECTSP_1:9
      .= 0.GF(p) by VECTSP_1:19;
      hence thesis by VECTSP_1:16;
    end;
    thus QP`2_3 = -PQ`2_3
    proof
      B1: gf1PQ * gf3PQ = (-gf1QP) * gf3PQ by VECTSP_1:17
      .= - (gf1QP * gf3QP) by A11,VECTSP_1:9;
      gf1PQ * ((gf2PQ |^2)*(P`1_3)*(Q`3_3))
      = (-gf1QP) * ((gf2PQ |^2)*(P`1_3)*(Q`3_3)) by VECTSP_1:17
      .= -(gf1QP) * ((gf2PQ |^2)*(P`1_3)*(Q`3_3)) by VECTSP_1:9
      .= -(gf1QP) * ((gf2QP |^2)*((P`1_3)*(Q`3_3))) by A10,GROUP_1:def 3
      .= -(gf1QP) * ((gf2QP |^2)*((P`1_3)*(Q`3_3) + 0.GF(p))) by ALGSTR_1:7
      .= -(gf1QP) * ((gf2QP |^2)*((P`1_3)*(Q`3_3)
      + (((Q`1_3)*(P`3_3)) - ((Q`1_3)*(P`3_3))))) by VECTSP_1:19
      .= -(gf1QP) * ((gf2QP |^2)*((Q`1_3)*(P`3_3)
      + ((P`1_3)*(Q`3_3) + (-(Q`1_3)*(P`3_3))))) by ALGSTR_1:7
      .= -(gf1QP) * ((gf2QP |^2)*((Q`1_3)*(P`3_3)) + (gf2QP |^2)*gf2QP)
      by VECTSP_1:def 3
      .= -(gf1QP) * ((gf2QP |^2)*((Q`1_3)*(P`3_3)) + (gf2QP |^(2+1)))
      by EC_PF_1:24
      .= -(gf1QP) * ((gf2QP |^2)*((Q`1_3)*(P`3_3)) + (gf2QP |^3));
      then gf1PQ * ((gf2PQ |^2)*(P`1_3)*(Q`3_3))
      + ((gf1QP) * ((gf2QP |^2)*((Q`1_3)*(P`3_3))
      +(gf2QP |^3))) = 0.GF(p) by VECTSP_1:19;
      then gf1PQ * ((gf2PQ |^2)*(P`1_3)*(Q`3_3))
      + ((gf1QP) * ((gf2QP |^2)*((Q`1_3)*(P`3_3)))
      + gf1QP*(gf2QP |^3)) = 0.GF(p) by VECTSP_1:def 3;
      then (gf1PQ * ((gf2PQ |^2)*(P`1_3)*(Q`3_3))
      + gf1QP * ((gf2QP |^2)*((Q`1_3)*(P`3_3))))
      + gf1QP*(gf2QP |^3) = 0.GF(p) by ALGSTR_1:7;
      then gf1PQ * ((gf2PQ |^2)*(P`1_3)*(Q`3_3))
      + gf1QP * ((gf2QP |^2)*((Q`1_3)*(P`3_3)))
      = - (gf1QP*(gf2QP |^3)) by VECTSP_1:16;
      then B2: gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3))
      = -(gf1QP*(gf2QP |^3)) by GROUP_1:def 3;
      B3: (gf2PQ|^3)*(P`2_3)*(Q`3_3) + (gf2QP |^3)*(Q`2_3)*(P`3_3)
      = (gf2PQ |^(2+1))*((P`2_3)*(Q`3_3)) + (gf2QP |^(2+1))*(Q`2_3)*(P`3_3)
      by GROUP_1:def 3
      .= (gf2PQ |^3)*((P`2_3)*(Q`3_3)) + (gf2QP |^2 * gf2QP)*(Q`2_3)*(P`3_3)
      by EC_PF_1:24
      .= (gf2PQ |^3)*((P`2_3)*(Q`3_3)) + (gf2PQ |^2 * (-gf2PQ))*(Q`2_3)*(P`3_3)
      by A8,EC_PF_2:1
      .= (gf2PQ |^3)*((P`2_3)*(Q`3_3)) + (-(gf2PQ |^2 * gf2PQ))*(Q`2_3)*(P`3_3)
      by VECTSP_1:8
      .= (gf2PQ |^3)*((P`2_3)*(Q`3_3)) + (-(gf2PQ |^(2+1)))*(Q`2_3)*(P`3_3)
      by EC_PF_1:24
      .= (gf2PQ |^3)*((P`2_3)*(Q`3_3)) + (-(gf2PQ |^3))*((Q`2_3)*(P`3_3))
      by GROUP_1:def 3
      .= (gf2PQ |^3)*((P`2_3)*(Q`3_3)) + (-(gf2PQ |^3)*((Q`2_3)*(P`3_3)))
      by VECTSP_1:9
      .= (gf2PQ |^3)*((P`2_3)*(Q`3_3)) + (gf2PQ |^3) * (-((Q`2_3)*(P`3_3)))
      by VECTSP_1:8
      .= gf1QP*(gf2PQ |^(2+1)) by VECTSP_1:def 3
      .= gf1QP*(gf2PQ |^2 * gf2PQ) by EC_PF_1:24
      .= gf1QP*(gf2QP |^2 * gf2PQ) by A8,EC_PF_2:1
      .= gf1QP*(gf2QP |^2 * (-gf2QP)) by VECTSP_1:17
      .= gf1QP*(-(gf2QP |^2 * gf2QP)) by VECTSP_1:8
      .= -gf1QP * (gf2QP |^2 * gf2QP) by VECTSP_1:9
      .= -gf1QP * (gf2QP |^(2+1)) by EC_PF_1:24
      .= -gf1QP * (gf2QP |^3);
      gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3))
      - ((gf2PQ|^3)*(P`2_3)*(Q`3_3) + (gf2QP |^3)*(Q`2_3)*(P`3_3))
      - (gf1PQ * gf3PQ + gf1QP * gf3QP)
      = -(gf1QP*(gf2QP |^3)) - (-gf1QP*(gf2QP |^3)) - (0.GF(p))
      by B1,B2,B3,VECTSP_1:19
      .= -(gf1QP*(gf2QP |^3)) + (-(-gf1QP*(gf2QP |^3))) by VECTSP_1:18
      .= 0.GF(p) by VECTSP_1:19;
      then 0.GF(p) =
      gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3))
      - ((gf2PQ|^3)*(P`2_3)*(Q`3_3) + (gf2QP |^3)*(Q`2_3)*(P`3_3))
      - (gf1QP * gf3QP) - (gf1PQ * gf3PQ) by VECTSP_1:17
      .= gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3))
      + (-((gf2QP |^3)*(Q`2_3)*(P`3_3)) - ((gf2PQ|^3)*(P`2_3)*(Q`3_3)))
      + (-(gf1QP * gf3QP)) + (-(gf1PQ * gf3PQ)) by VECTSP_1:17
      .= gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3))
      + (-((gf2QP |^3)*(Q`2_3)*(P`3_3))) + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3)))
      + (-(gf1QP * gf3QP)) + (-(gf1PQ * gf3PQ)) by ALGSTR_1:7
      .= gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + (gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3))
      + (-((gf2QP |^3)*(Q`2_3)*(P`3_3))) + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3)))
      + (-(gf1QP * gf3QP))) + (-(gf1PQ * gf3PQ)) by EC_PF_2:8
      .= gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + ((gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3)) -(gf1QP * gf3QP))
      + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3)))
      + (-((gf2QP |^3)*(Q`2_3)*(P`3_3)))) + (-(gf1PQ * gf3PQ)) by EC_PF_2:7
      .= gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + ((gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3) - gf3QP))
      + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3)))
      + (-((gf2QP |^3)*(Q`2_3)*(P`3_3)))) + (-(gf1PQ * gf3PQ)) by VECTSP_1:11
      .= gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + ((gf1QP * ((gf2QP |^2)*(Q`1_3)*(P`3_3) - gf3QP))
      + (-((gf2QP |^3)*(Q`2_3)*(P`3_3)))
      + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3)))) + (-(gf1PQ * gf3PQ)) by ALGSTR_1:8
      .= gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))
      + ((QP`2_3)
      + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3)))) + (-(gf1PQ * gf3PQ))
      by A6,EC_PF_2:def 4
      .= (gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))) + (QP`2_3)
      + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3))) + (-(gf1PQ * gf3PQ)) by ALGSTR_1:7
      .= ((gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3))) -(gf1PQ * gf3PQ))
      + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3))) + (QP`2_3) by EC_PF_2:7
      .= (gf1PQ * ((gf2PQ |^2) *(P`1_3)*(Q`3_3) - gf3PQ))
      + (-((gf2PQ|^3)*(P`2_3)*(Q`3_3))) + (QP`2_3) by VECTSP_1:11
      .= (PQ`2_3) + (QP`2_3) by A5,EC_PF_2:def 4;
      hence thesis by VECTSP_1:16;
    end;
    thus QP`3_3 = -PQ`3_3
    proof
      gf2PQ |^2 * gf2PQ = gf2QP |^2 * gf2PQ by A8,EC_PF_2:1
      .= gf2QP |^2 * (-gf2QP) by VECTSP_1:17
      .= -(gf2QP |^2 * gf2QP) by VECTSP_1:8
      .= -(gf2QP |^(2+1)) by EC_PF_1:24
      .= -(gf2QP |^3);
      then -(gf2QP |^3) = gf2PQ |^(2+1) by EC_PF_1:24
      .= gf2PQ |^3;
      then ((gf2PQ |^3) + (gf2QP |^3))*((P`3_3)*(Q`3_3))
      = 0.GF(p)*((P`3_3)*(Q`3_3)) by VECTSP_1:19
      .= 0.GF(p);
      then (gf2PQ |^3)*((P`3_3)*(Q`3_3)) + (gf2QP |^3)*((Q`3_3)*(P`3_3))
      = 0.GF(p) by VECTSP_1:def 3;
      then (gf2PQ |^3)*(P`3_3)*(Q`3_3) + (gf2QP |^3)*((Q`3_3)*(P`3_3))
      = 0.GF(p) by GROUP_1:def 3;
      then (PQ`3_3) + (gf2QP |^3)*((Q`3_3)*(P`3_3)) = 0.GF(p)
      by A5,EC_PF_2:def 5;
      then (PQ`3_3) + (gf2QP |^3)*(Q`3_3)*(P`3_3) = 0.GF(p) by GROUP_1:def 3;
      then (PQ`3_3) + (QP`3_3) = 0.GF(p) by A6,EC_PF_2:def 5;
      hence thesis by VECTSP_1:16;
    end;
  end;
