1 | initial version |
Nowadays, you can use .division_field()
to find the minimal extension where the full $\ell$-torsion is defined, and .torsion_basis()
to find two points generating the $\ell$-torsion subgroup:
sage: F = E.division_field(13)
sage: EE = E.change_ring(F); EE
Elliptic Curve defined by y^2 = x^3 + 6 over Finite Field in t of size 43^6
sage: P,Q = EE.torsion_basis(13); P,Q
((41*t^5 + 23*t^4 + 27*t^3 + 11*t^2 + 9*t + 2 : 36*t^5 + 23*t^4 + 17*t^3 + 16*t^2 + 14*t + 11 : 1),
(6*t^5 + 29*t^4 + 16*t^3 + 22*t^2 + 21*t + 30 : 32*t^5 + 28*t^4 + 3*t^3 + 24*t^2 + 11*t + 16 : 1))
The rest of the $\ell$-torsion can then be enumerated by taking linear combinations of the generating points:
sage: pts = {i*P+j*Q for i in range(13) for j in range(13)}
sage: len(pts)
169
sage: {13 * T for T in pts}
{(0 : 1 : 0)}