Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

It is hard to understand the question. As far as i understood, we start with an elliptic curve $E$ defined over a finite field of characteristic $q$, a prime power, and consider its quadratic twist $E^d$ relatively to a fixed $d$.

The curve $E$ is given in sage in the "long form" EllipticCurve( GF(q), [ a1, a2, a3, a4, a6 ] ) but also in the "short form" EllipticCurve( GF(q), [ 0, 0, 0, a4, a6 ] ) , i.e. EllipticCurve( GF(q), [ a4, a6 ] ) (for some other values). The characteristic should not be among $2,3$ for this.

We try to see if $|E|+|E^d|$ is indeed $2q+2$ and if the order of $E$ over $\mathbb F_{q^2}$, the curve obtained after a base change to GF(q^2) is also $2q+2$ as expected.

We are working with the curve $E$ labelled 11a1.

The posted code, slightly rearranged

E   = EllipticCurve('11a1')
Et  = E.quadratic_twist(2) 
Es  = E .short_weierstrass_model()
Ets = Et.short_weierstrass_model()

print "E   is %s" % E
print "Et  is %s" % Et
print "Es  is %s" % Es
print "Ets is %s" % Ets

delivers

E   is Elliptic Curve defined by y^2 + y = x^3 - x^2 - 10*x - 20 over Rational Field
Et  is Elliptic Curve defined by y^2 = x^3 + x^2 - 41*x - 199 over Rational Field
Es  is Elliptic Curve defined by y^2 = x^3 - 13392*x - 1080432 over Rational Field
Ets is Elliptic Curve defined by y^2 = x^3 - 53568*x - 8643456 over Rational Field

Let us see, as in the post, that over $\mathbb Q(\sqrt 2)$ the twists are as computed:

We have for instance:

sage: K.<a> = QuadraticField( 2 )
sage: E.base_extend( K ).is_isomorphic( Et.base_extend(K) ) 
True
sage: Es.base_extend( K ).is_isomorphic( Ets.base_extend(K) ) 
True
sage: E.is_isomorphic( Es )
True
sage: E.is_isomorphic( Et )
False
sage: Et.is_isomorphic( Ets )
True

(Here, i prefered to change base, instead of using the curve parameters explicitly, after specifying the new field, K, for instance as in E = EllipticCurve( QQ, [ 0, -1, 1, -10, -20 ] ) with the base change E.base_extend(K) which is EllipticCurve( K, [ 0, -1, 1, -10, -20 ] ) .

Now we are in position to count points over prime fields for the first relevant $q$ values, up to - say - $49$.

For each such $q$ let us denote by F the field GF(q), and by K the field GF(q^2). We compute the orders of the curves $$ E(F),\ E_s(F),\ E^d(F), \ E_s^d(F);\qquad E(K),\ E_s(K),\ E^d(K), \ E_s^d(K);\ .$$ We are starting the computations, of course, iff $2$ is not a square in $F$. The following code computes the relevant orders:

E   = EllipticCurve('11a1')
Et  = E.quadratic_twist(2) 
Es  = E .short_weierstrass_model()
Ets = Et.short_weierstrass_model()

print "E   is %s" % E
print "Et  is %s" % Et
print "Es  is %s" % Es
print "Ets is %s" % Ets


print "  q : E(F) Es(F) Et(F) Ets(F) :   E(K)  Es(K)  Et(K) Ets(K) : 2q+2..."
for q in prime_powers( 344 ):
    if gcd( q, 2*3*11 ) > 1:
        continue

    if not q.is_prime():
        F.<a> = GF(q)
    else               :
        F     = GF(q)

    if F(2).is_square():
        continue

    K.<b> = GF( q^2 )

    ord_F_E   = E  .base_extend( F ).order()
    ord_F_Es  = Es .base_extend( F ).order()
    ord_F_Et  = Et .base_extend( F ).order()
    ord_F_Ets = Ets.base_extend( F ).order()
    ord_K_E   = E  .base_extend( K ).order()
    ord_K_Es  = Es .base_extend( K ).order()
    ord_K_Et  = Et .base_extend( K ).order()
    ord_K_Ets = Ets.base_extend( K ).order()

    print ( "%3s :%4s %5s %5s %6s  :%6s %6s %6s %6s : %3s = %3s+%3s %s"
            % ( q
                , ord_F_E  
                , ord_F_Es 
                , ord_F_Et 
                , ord_F_Ets
                , ord_K_E  
                , ord_K_Es 
                , ord_K_Et 
                , ord_K_Ets
                , 2*q+2
                , ord_F_E, ord_F_Et
                , bool( 2*q+2 == ord_F_E + ord_F_Et ) ) )

This gives (hope it comes in one row each print):

  q : E(F) Es(F) Et(F) Ets(F) :   E(K)  Es(K)  Et(K) Ets(K) : 2q+2...
  5 :   5     5     7      7  :    35     35     35     35 :  12 =   5+  7 True
 13 :  10    10    18     18  :   180    180    180    180 :  28 =  10+ 18 True
 19 :  20    20    20     20  :   400    400    400    400 :  40 =  20+ 20 True
 29 :  30    30    30     30  :   900    900    900    900 :  60 =  30+ 30 True
 37 :  35    35    41     41  :  1435   1435   1435   1435 :  76 =  35+ 41 True
 43 :  50    50    38     38  :  1900   1900   1900   1900 :  88 =  50+ 38 True
 53 :  60    60    48     48  :  2880   2880   2880   2880 : 108 =  60+ 48 True
 59 :  55    55    65     65  :  3575   3575   3575   3575 : 120 =  55+ 65 True
 61 :  50    50    74     74  :  3700   3700   3700   3700 : 124 =  50+ 74 True
 67 :  75    75    61     61  :  4575   4575   4575   4575 : 136 =  75+ 61 True
 83 :  90    90    78     78  :  7020   7020   7020   7020 : 168 =  90+ 78 True
101 : 100   100   104    104  : 10400  10400  10400  10400 : 204 = 100+104 True
107 :  90    90   126    126  : 11340  11340  11340  11340 : 216 =  90+126 True
109 : 100   100   120    120  : 12000  12000  12000  12000 : 220 = 100+120 True
125 : 140   140   112    112  : 15680  15680  15680  15680 : 252 = 140+112 True
131 : 150   150   114    114  : 17100  17100  17100  17100 : 264 = 150+114 True
139 : 130   130   150    150  : 19500  19500  19500  19500 : 280 = 130+150 True
149 : 160   160   140    140  : 22400  22400  22400  22400 : 300 = 160+140 True
157 : 165   165   151    151  : 24915  24915  24915  24915 : 316 = 165+151 True
163 : 160   160   168    168  : 26880  26880  26880  26880 : 328 = 160+168 True
173 : 180   180   168    168  : 30240  30240  30240  30240 : 348 = 180+168 True
179 : 195   195   165    165  : 32175  32175  32175  32175 : 360 = 195+165 True
181 : 175   175   189    189  : 33075  33075  33075  33075 : 364 = 175+189 True
197 : 200   200   196    196  : 39200  39200  39200  39200 : 396 = 200+196 True
211 : 200   200   224    224  : 44800  44800  44800  44800 : 424 = 200+224 True
227 : 210   210   246    246  : 51660  51660  51660  51660 : 456 = 210+246 True
229 : 215   215   245    245  : 52675  52675  52675  52675 : 460 = 215+245 True
251 : 275   275   229    229  : 62975  62975  62975  62975 : 504 = 275+229 True
269 : 260   260   280    280  : 72800  72800  72800  72800 : 540 = 260+280 True
277 : 280   280   276    276  : 77280  77280  77280  77280 : 556 = 280+276 True
283 : 280   280   288    288  : 80640  80640  80640  80640 : 568 = 280+288 True
293 : 270   270   318    318  : 85860  85860  85860  85860 : 588 = 270+318 True
307 : 300   300   316    316  : 94800  94800  94800  94800 : 616 = 300+316 True
317 : 305   305   331    331  :100955 100955 100955 100955 : 636 = 305+331 True
331 : 325   325   339    339  :110175 110175 110175 110175 : 664 = 325+339 True