reserve x for set;
reserve i,j for Integer;
reserve n,n1,n2,n3 for Nat;
reserve K,K1,K2,K3 for Field;
reserve SK1,SK2 for Subfield of K;
reserve ek,ek1,ek2 for Element of K;
reserve p for Prime;
reserve a,b,c for Element of GF(p);
reserve F for FinSequence of GF(p);
reserve Px,Py,Pz for Element of GF(p);

theorem Th51:
  for p be Prime, a, b be Element of GF(p) st
  p > 3 & Disc(a,b,p) <> 0.GF(p) holds
  Class (R_EllCur(a,b,p)) = {Class(R_EllCur(a,b,p),[0,1,0])}
  \/ {Class(R_EllCur(a,b,p),P)
  where P is Element of ProjCo(GF(p)):
  P in EC_SetProjCo(a,b,p) & ex X,Y be Element of GF(p) st P=[X,Y,1]}
  proof
    let p be Prime, a, b be Element of GF(p);
    assume
A1: p > 3 & Disc(a,b,p) <> 0.GF(p);
    set A = Class (R_EllCur(a,b,p));
    set B = {Class(R_EllCur(a,b,p),[0,1,0])} \/
    {Class(R_EllCur(a,b,p),P) where P is Element of ProjCo(GF(p)):
    P in EC_SetProjCo(a,b,p) & ex X,Y be Element of GF(p) st P=[X,Y,1]};
    reconsider d0=[0,1,0] as Element of EC_SetProjCo(a,b,p) by Th42;
    for x be object holds x in A iff x in B
    proof
      let x be object;
      hereby assume x in A; then
        ( ex y be Element of ProjCo(GF(p))
        st y in EC_SetProjCo(a,b,p) & y=[0,1,0]
        & x = Class(R_EllCur(a,b,p),y) ) or
        ex y be Element of ProjCo(GF(p)), e,f be Element of GF(p)
        st y in EC_SetProjCo(a,b,p) & y=[e,f,1]
        & x = Class(R_EllCur(a,b,p),y) by A1,Th50; then
        x in {Class(R_EllCur(a,b,p),[0,1,0])} or
        x in {Class(R_EllCur(a,b,p),y)
        where y is Element of ProjCo(GF(p)): y in EC_SetProjCo(a,b,p) &
        ex e,f be Element of GF(p) st y=[e,f,1]} by TARSKI:def 1;
        hence x in B by XBOOLE_0:def 3;
      end;
      assume x in B; then
      A2: x in {Class(R_EllCur(a,b,p),[0,1,0])} or
      x in {Class(R_EllCur(a,b,p),y) where y is Element of ProjCo(GF(p)):
      y in EC_SetProjCo(a,b,p) & ex e,f be Element of GF(p)
      st y=[e,f,1]} by XBOOLE_0:def 3;
      now per cases by A2,TARSKI:def 1;
        suppose A3: x = Class(R_EllCur(a,b,p),[0,1,0]);
          EqClass(R_EllCur(a,b,p),d0) is Element of A;
          hence x in A by A3;
        end;
        suppose
          ex y be Element of ProjCo(GF(p))
          st x = Class(R_EllCur(a,b,p),y) & y in EC_SetProjCo(a,b,p)
          & ex e,f be Element of GF(p) st y=[e,f,1];
          then consider y be Element of ProjCo(GF(p)) such that
          A4: x = Class(R_EllCur(a,b,p),y)
          & y in EC_SetProjCo(a,b,p)
          & ex e,f be Element of GF(p) st y=[e,f,1];
          reconsider y as Element of EC_SetProjCo(a,b,p) by A4;
          EqClass(R_EllCur(a,b,p),y) is Element of A;
          hence x in A by A4;
        end;
      end;
      hence x in A;
    end;
    hence thesis by TARSKI:2;
  end;
