@@ -2430,6 +2430,9 @@ def automorphisms(self, field=None):
2430
2430
"""
2431
2431
Return the set of isomorphisms from self to itself (as a list).
2432
2432
2433
+ The identity and negation morphisms are guaranteed to appear
2434
+ as the first and second entry of the returned list.
2435
+
2433
2436
INPUT:
2434
2437
2435
2438
- ``field`` (default ``None``) -- a field into which the
@@ -2447,23 +2450,52 @@ def automorphisms(self, field=None):
2447
2450
sage: E = EllipticCurve_from_j(QQ(0)) # a curve with j=0 over QQ
2448
2451
sage: E.automorphisms()
2449
2452
[Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Rational Field
2450
- Via: (u,r,s,t) = (-1, 0, 0, -1), Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Rational Field
2451
- Via: (u,r,s,t) = (1, 0, 0, 0)]
2453
+ Via: (u,r,s,t) = (1, 0, 0, 0),
2454
+ Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Rational Field
2455
+ Via: (u,r,s,t) = (-1, 0, 0, -1)]
2452
2456
2453
2457
We can also find automorphisms defined over extension fields::
2454
2458
2455
2459
sage: K.<a> = NumberField(x^2+3) # adjoin roots of unity
2456
2460
sage: E.automorphisms(K)
2457
2461
[Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^2 + 3
2458
- Via: (u,r,s,t) = (-1, 0, 0, -1),
2459
- ...
2460
- Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^2 + 3
2461
- Via: (u,r,s,t) = (1, 0, 0, 0)]
2462
+ Via: (u,r,s,t) = (1, 0, 0, 0),
2463
+ Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^2 + 3
2464
+ Via: (u,r,s,t) = (-1, 0, 0, -1),
2465
+ Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^2 + 3
2466
+ Via: (u,r,s,t) = (-1/2*a - 1/2, 0, 0, 0),
2467
+ Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^2 + 3
2468
+ Via: (u,r,s,t) = (1/2*a + 1/2, 0, 0, -1),
2469
+ Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^2 + 3
2470
+ Via: (u,r,s,t) = (1/2*a - 1/2, 0, 0, 0),
2471
+ Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^2 + 3
2472
+ Via: (u,r,s,t) = (-1/2*a + 1/2, 0, 0, -1)]
2462
2473
2463
2474
::
2464
2475
2465
2476
sage: [len(EllipticCurve_from_j(GF(q,'a')(0)).automorphisms()) for q in [2,4,3,9,5,25,7,49]]
2466
2477
[2, 24, 2, 12, 2, 6, 6, 6]
2478
+
2479
+ TESTS:
2480
+
2481
+ Random testing::
2482
+
2483
+ sage: p = random_prime(100)
2484
+ sage: k = randrange(1,30)
2485
+ sage: F.<t> = GF((p,k))
2486
+ sage: while True:
2487
+ ....: try:
2488
+ ....: E = EllipticCurve(list((F^5).random_element()))
2489
+ ....: except ArithmeticError:
2490
+ ....: continue
2491
+ ....: break
2492
+ sage: Aut = E.automorphisms()
2493
+ sage: Aut[0] == E.multiplication_by_m_isogeny(1)
2494
+ True
2495
+ sage: Aut[1] == E.multiplication_by_m_isogeny(-1)
2496
+ True
2497
+ sage: sorted(Aut) == Aut
2498
+ True
2467
2499
"""
2468
2500
if field is not None :
2469
2501
self = self .change_ring (field )
@@ -2493,9 +2525,9 @@ def isomorphisms(self, other, field=None):
2493
2525
sage: F = EllipticCurve('27a3') # should be the same one
2494
2526
sage: E.isomorphisms(F)
2495
2527
[Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Rational Field
2496
- Via: (u,r,s,t) = (- 1, 0, 0, -1 ),
2528
+ Via: (u,r,s,t) = (1, 0, 0, 0 ),
2497
2529
Elliptic-curve endomorphism of Elliptic Curve defined by y^2 + y = x^3 over Rational Field
2498
- Via: (u,r,s,t) = (1, 0, 0, 0 )]
2530
+ Via: (u,r,s,t) = (- 1, 0, 0, -1 )]
2499
2531
2500
2532
We can also find isomorphisms defined over extension fields::
2501
2533
0 commit comments