p=43 p_half=(p-1)/2 p_third=(p-1)/3 F3=FiniteField(3) F=FiniteField(p^2) C=EllipticCurve([F(0),F(7)]) G=C.lift_x(2) o=G.order() zo3=Integers(o).zeta(3) G=G*int(zo3) def dpo(i,P): return P.curve().division_polynomial(i,P,two_torsion_multiplicity=1) #Gttf=G*int(zo3^2) #Gttf=G #Gttt=G print(Gttf,Gttt) for a in [1..o-1]: Pttf=a*Gttf Pttt=a*Gttt h1=(Pttt*8)[0]^p_third/6 h2=(Pttt*8*2)[0]^p_third/6 #print(dpo(a,Gttf)^p_third==h1,dpo(2*a,Gttf)^p_third==h2) #print(dpo(a,Gttf)^p_third,(Pttf*17)[0]^p_third) #FFFF #print(dpo(2*a,Gttf)^p_third/dpo(a,Gttf)^p_third/(2*Pttf[1])^p_third,h2/dpo(a,Gttf)^p_third/(2*Pttf[1])^p_third,dpo(2*a,Gttf)^p_third/h1/(2*Pttf[1])^p_third) #print(h2/dpo(a,Gttf)^p_third/(2*Pttt[1])^p_third,dpo(2*a,Gttf)^p_third/h1/(2*Pttt[1])^p_third) #VERY VERY NICE print(h2/h1/(2*Pttt[1])^p_third^2,dpo(a,Gttf)^p_third/dpo(2*a,Gttf)^p_third,(Pttf*17)[0]^p_third,(Pttf*17*2)[0]^p_third) #print((h2/dpo(a,Gttf)^p_third/(2*Pttt[1])^p_third)*(dpo(2*a,Gttf)^p_third/h1/(2*Pttt[1])^p_third)) #1111111111111111 ! #print(h2,h1,(Pttf*8)[0]^p_third,(Pttf*8*2)[0]