Isogenies of small prime degree¶
Functions for the computation of isogenies of small primes degree. First: \(l\) = 2, 3, 5, 7, or 13, where the modular curve \(X_0(l)\) has genus 0. Second: \(l\) = 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71, where \(X_0^+(l)\) has genus 0 and \(X_0(l)\) is elliptic or hyperelliptic. Also: \(l\) = 11, 17, 19, 37, 43, 67 or 163 over \(\QQ\) (the sporadic cases with only finitely many \(j\)-invariants each). All the above only require factorization of a polynomial of degree \(l+1\). Finally, a generic function which works for arbitrary odd primes \(l\) (including the characteristic), but requires factorization of the \(l\)-division polynomial, of degree \((l^2-1)/2\).
AUTHORS:
- John Cremona and Jenny Cooley: 2009-07..11: the genus 0 cases the sporadic cases over \(\QQ\). 
- Kimi Tsukazaki and John Cremona: 2013-07: The 10 (hyper)-elliptic cases and the generic algorithm. See [KT2013]. 
- sage.schemes.elliptic_curves.isogeny_small_degree.Fricke_module()[source]¶
- Fricke module for - l=2,3,5,7,13.- For these primes (and these only) the modular curve \(X_0(l)\) has genus zero, and its field is generated by a single modular function called the Fricke module (or Hauptmodul), \(t\). There is a classical choice of such a generator \(t\) in each case, and the \(j\)-function is a rational function of \(t\) of degree \(l+1\) of the form \(P(t)/t\) where \(P\) is a polynomial of degree \(l+1\). Up to scaling, \(t\) is determined by the condition that the ramification points above \(j=\infty\) are \(t=0\) (with ramification degree \(1\)) and \(t=\infty\) (with degree \(l\)). The ramification above \(j=0\) and \(j=1728\) may be seen in the factorizations of \(j(t)\) and \(k(t)\) where \(k=j-1728\). - OUTPUT: - The rational function \(P(t)/t\). 
- sage.schemes.elliptic_curves.isogeny_small_degree.Fricke_polynomial()[source]¶
- Fricke polynomial for - l=2,3,5,7,13.- For these primes (and these only) the modular curve \(X_0(l)\) has genus zero, and its field is generated by a single modular function called the Fricke module (or Hauptmodul), \(t\). There is a classical choice of such a generator \(t\) in each case, and the \(j\)-function is a rational function of \(t\) of degree \(l+1\) of the form \(P(t)/t\) where \(P\) is a polynomial of degree \(l+1\). Up to scaling, \(t\) is determined by the condition that the ramification points above \(j=\infty\) are \(t=0\) (with ramification degree \(1\)) and \(t=\infty\) (with degree \(l\)). The ramification above \(j=0\) and \(j=1728\) may be seen in the factorizations of \(j(t)\) and \(k(t)\) where \(k=j-1728\). - OUTPUT: - The polynomial \(P(t)\) as an element of \(\ZZ[t]\). 
- sage.schemes.elliptic_curves.isogeny_small_degree.Psi(use_stored=True)[source]¶
- Generic kernel polynomial for genus zero primes. - For each of the primes \(l\) for which \(X_0(l)\) has genus zero (namely \(l=2,3,5,7,13\)), we may define an elliptic curve \(E_t\) over \(\QQ(t)\), with coefficients in \(\ZZ[t]\), which has good reduction except at \(t=0\) and \(t=\infty\) (which lie above \(j=\infty\)) and at certain other values of \(t\) above \(j=0\) when \(l=3\) (one value) or \(l\equiv1\pmod{3}\) (two values) and above \(j=1728\) when \(l=2\) (one value) or \(l\equiv1 \pmod{4}\) (two values). (These exceptional values correspond to endomorphisms of \(E_t\) of degree \(l\).) The \(l\)-division polynomial of \(E_t\) has a unique factor of degree \((l-1)/2\) (or 1 when \(l=2\)), with coefficients in \(\ZZ[t]\), which we call the Generic Kernel Polynomial for \(l\). These are used, by specialising \(t\), in the function - isogenies_prime_degree_genus_0(), which also has to take into account the twisting factor between \(E_t\) for a specific value of \(t\) and the short Weierstrass form of an elliptic curve with \(j\)-invariant \(j(t)\). This enables the computation of the kernel polynomials of isogenies without having to compute and factor division polynomials.- All of this data is quickly computed from the Fricke modules, except that for \(l=13\) the factorization of the Generic Division Polynomial takes a long time, so the value have been precomputed and cached; by default the cached values are used, but the code here will recompute them when - use_storedis- False, as in the doctests.- INPUT: - l– either 2, 3, 5, 7, or 13
- use_stored– boolean (default:- True); if- True, use precomputed values, otherwise compute them on the fly
 - Note - This computation takes a negligible time for \(l=2,3,5,7\) but more than 100s for \(l=13\). The reason for allowing dynamic computation here instead of just using precomputed values is for testing. 
- sage.schemes.elliptic_curves.isogeny_small_degree.Psi2()[source]¶
- Return the generic kernel polynomial for hyperelliptic \(l\)-isogenies. - INPUT: - l– either 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71
 - OUTPUT: the generic \(l\)-kernel polynomial - EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import Psi2 sage: Psi2(11) x^5 - 55*x^4*u + 994*x^3*u^2 - 8774*x^2*u^3 + 41453*x*u^4 - 928945/11*u^5 + 33*x^4 + 276*x^3*u - 7794*x^2*u^2 + 4452*x*u^3 + 1319331/11*u^4 + 216*x^3*v - 4536*x^2*u*v + 31752*x*u^2*v - 842616/11*u^3*v + 162*x^3 + 38718*x^2*u - 610578*x*u^2 + 33434694/11*u^3 - 4536*x^2*v + 73872*x*u*v - 2745576/11*u^2*v - 16470*x^2 + 580068*x*u - 67821354/11*u^2 - 185976*x*v + 14143896/11*u*v + 7533*x - 20437029/11*u - 12389112/11*v + 19964151/11 sage: p = Psi2(71) # long time sage: (x,u,v) = p.variables() # long time sage: p.coefficient({x: 0, u: 210, v: 0}) # long time -2209380711722505179506258739515288584116147237393815266468076436521/71 sage: p.coefficient({x: 0, u: 0, v: 0}) # long time -14790739586438315394567393301990769678157425619440464678252277649/71 - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import Psi2 >>> Psi2(Integer(11)) x^5 - 55*x^4*u + 994*x^3*u^2 - 8774*x^2*u^3 + 41453*x*u^4 - 928945/11*u^5 + 33*x^4 + 276*x^3*u - 7794*x^2*u^2 + 4452*x*u^3 + 1319331/11*u^4 + 216*x^3*v - 4536*x^2*u*v + 31752*x*u^2*v - 842616/11*u^3*v + 162*x^3 + 38718*x^2*u - 610578*x*u^2 + 33434694/11*u^3 - 4536*x^2*v + 73872*x*u*v - 2745576/11*u^2*v - 16470*x^2 + 580068*x*u - 67821354/11*u^2 - 185976*x*v + 14143896/11*u*v + 7533*x - 20437029/11*u - 12389112/11*v + 19964151/11 >>> p = Psi2(Integer(71)) # long time >>> (x,u,v) = p.variables() # long time >>> p.coefficient({x: Integer(0), u: Integer(210), v: Integer(0)}) # long time -2209380711722505179506258739515288584116147237393815266468076436521/71 >>> p.coefficient({x: Integer(0), u: Integer(0), v: Integer(0)}) # long time -14790739586438315394567393301990769678157425619440464678252277649/71 
- sage.schemes.elliptic_curves.isogeny_small_degree.is_kernel_polynomial(E, m, f)[source]¶
- Test whether - Ehas a cyclic isogeny of degree- mwith kernel polynomial- f.- INPUT: - E– an elliptic curve
- m– positive integer
- f– a polynomial over the base field of- E
 - OUTPUT: - boolean; - Trueif- Ehas a cyclic isogeny of degree- mwith kernel polynomial- f, else- False.- ALGORITHM: - \(f\) must have degree \((m-1)/2\) (if \(m\) is odd) or degree \(m/2\) (if \(m\) is even), and have the property that for each root \(x\) of \(f\), \(\mu(x)\) is also a root where \(\mu\) is the multiplication-by-\(m\) map on \(E\) and \(m\) runs over a set of generators of \((\ZZ/m\ZZ)^*/\{1,-1\}\). - EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import is_kernel_polynomial sage: E = EllipticCurve([0, -1, 1, -10, -20]) sage: x = polygen(QQ) sage: is_kernel_polynomial(E, 5, x^2 + x - 29/5) True sage: is_kernel_polynomial(E, 5, (x - 16) * (x - 5)) True - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import is_kernel_polynomial >>> E = EllipticCurve([Integer(0), -Integer(1), Integer(1), -Integer(10), -Integer(20)]) >>> x = polygen(QQ) >>> is_kernel_polynomial(E, Integer(5), x**Integer(2) + x - Integer(29)/Integer(5)) True >>> is_kernel_polynomial(E, Integer(5), (x - Integer(16)) * (x - Integer(5))) True - An example from [KT2013], where the 13-division polynomial splits into 14 factors each of degree 6, but only two of these is a kernel polynomial for a 13-isogeny: - sage: F = GF(3) sage: E = EllipticCurve(F, [0,0,0,-1,0]) sage: f13 = E.division_polynomial(13) sage: factors = [f for f, e in f13.factor()] sage: all(f.degree() == 6 for f in factors) True sage: [is_kernel_polynomial(E, 13, f) for f in factors] [True, True, False, False, False, False, False, False, False, False, False, False, False, False] - >>> from sage.all import * >>> F = GF(Integer(3)) >>> E = EllipticCurve(F, [Integer(0),Integer(0),Integer(0),-Integer(1),Integer(0)]) >>> f13 = E.division_polynomial(Integer(13)) >>> factors = [f for f, e in f13.factor()] >>> all(f.degree() == Integer(6) for f in factors) True >>> [is_kernel_polynomial(E, Integer(13), f) for f in factors] [True, True, False, False, False, False, False, False, False, False, False, False, False, False] - See Issue #22232: - sage: # needs sage.rings.finite_rings sage: K = GF(47^2) sage: E = EllipticCurve([0, K.gen()]) sage: psi7 = E.division_polynomial(7) sage: f = psi7.factor()[4][0] sage: f x^3 + (7*z2 + 11)*x^2 + (25*z2 + 33)*x + 25*z2 sage: f.divides(psi7) True sage: is_kernel_polynomial(E, 7, f) False - >>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = GF(Integer(47)**Integer(2)) >>> E = EllipticCurve([Integer(0), K.gen()]) >>> psi7 = E.division_polynomial(Integer(7)) >>> f = psi7.factor()[Integer(4)][Integer(0)] >>> f x^3 + (7*z2 + 11)*x^2 + (25*z2 + 33)*x + 25*z2 >>> f.divides(psi7) True >>> is_kernel_polynomial(E, Integer(7), f) False 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_13_0(E, minimal_models=True)[source]¶
- Return list of all 13-isogenies from E when the j-invariant is 0. - INPUT: - E– an elliptic curve with j-invariant 0
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 13-isogenies with codomain E. In general these are normalised; but if \(-3\) is a square then there are two endomorphisms of degree \(13\), for which the codomain is the same as the domain. - Note - This implementation requires that the characteristic is not 2, 3 or 13. - Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(13).- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_13_0 - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_13_0 - Endomorphisms of degree 13 will exist when -3 is a square: - sage: # needs sage.rings.number_field sage: K.<r> = QuadraticField(-3) sage: E = EllipticCurve(K, [0, r]); E Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I sage: isogenies_13_0(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I] sage: isogenies_13_0(E)[0].rational_maps() (((7/338*r + 23/338)*x^13 + (-164/13*r - 420/13)*x^10 + (720/13*r + 3168/13)*x^7 + (3840/13*r - 576/13)*x^4 + (4608/13*r + 2304/13)*x)/(x^12 + (4*r + 36)*x^9 + (1080/13*r + 3816/13)*x^6 + (2112/13*r - 5184/13)*x^3 + (-17280/169*r - 1152/169)), ((18/2197*r + 35/2197)*x^18*y + (23142/2197*r + 35478/2197)*x^15*y + (-1127520/2197*r - 1559664/2197)*x^12*y + (-87744/2197*r + 5992704/2197)*x^9*y + (-6625152/2197*r - 9085824/2197)*x^6*y + (-28919808/2197*r - 2239488/2197)*x^3*y + (-1990656/2197*r - 3870720/2197)*y)/(x^18 + (6*r + 54)*x^15 + (3024/13*r + 11808/13)*x^12 + (31296/13*r + 51840/13)*x^9 + (487296/169*r - 2070144/169)*x^6 + (-940032/169*r + 248832/169)*x^3 + (1990656/2197*r + 3870720/2197))) - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = QuadraticField(-Integer(3), names=('r',)); (r,) = K._first_ngens(1) >>> E = EllipticCurve(K, [Integer(0), r]); E Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I >>> isogenies_13_0(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + r over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I] >>> isogenies_13_0(E)[Integer(0)].rational_maps() (((7/338*r + 23/338)*x^13 + (-164/13*r - 420/13)*x^10 + (720/13*r + 3168/13)*x^7 + (3840/13*r - 576/13)*x^4 + (4608/13*r + 2304/13)*x)/(x^12 + (4*r + 36)*x^9 + (1080/13*r + 3816/13)*x^6 + (2112/13*r - 5184/13)*x^3 + (-17280/169*r - 1152/169)), ((18/2197*r + 35/2197)*x^18*y + (23142/2197*r + 35478/2197)*x^15*y + (-1127520/2197*r - 1559664/2197)*x^12*y + (-87744/2197*r + 5992704/2197)*x^9*y + (-6625152/2197*r - 9085824/2197)*x^6*y + (-28919808/2197*r - 2239488/2197)*x^3*y + (-1990656/2197*r - 3870720/2197)*y)/(x^18 + (6*r + 54)*x^15 + (3024/13*r + 11808/13)*x^12 + (31296/13*r + 51840/13)*x^9 + (487296/169*r - 2070144/169)*x^6 + (-940032/169*r + 248832/169)*x^3 + (1990656/2197*r + 3870720/2197))) - An example of endomorphisms over a finite field: - sage: # needs sage.rings.finite_rings sage: K = GF(19^2,'a') sage: E = EllipticCurve(j=K(0)); E Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2 sage: isogenies_13_0(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2 to Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2 to Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2] sage: isogenies_13_0(E)[0].rational_maps() ((6*x^13 - 6*x^10 - 3*x^7 + 6*x^4 + x)/(x^12 - 5*x^9 - 9*x^6 - 7*x^3 + 5), (-8*x^18*y - 9*x^15*y + 9*x^12*y - 5*x^9*y + 5*x^6*y - 7*x^3*y + 7*y)/(x^18 + 2*x^15 + 3*x^12 - x^9 + 8*x^6 - 9*x^3 + 7)) - >>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = GF(Integer(19)**Integer(2),'a') >>> E = EllipticCurve(j=K(Integer(0))); E Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2 >>> isogenies_13_0(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2 to Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2 to Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 19^2] >>> isogenies_13_0(E)[Integer(0)].rational_maps() ((6*x^13 - 6*x^10 - 3*x^7 + 6*x^4 + x)/(x^12 - 5*x^9 - 9*x^6 - 7*x^3 + 5), (-8*x^18*y - 9*x^15*y + 9*x^12*y - 5*x^9*y + 5*x^6*y - 7*x^3*y + 7*y)/(x^18 + 2*x^15 + 3*x^12 - x^9 + 8*x^6 - 9*x^3 + 7)) - A previous implementation did not work in some characteristics: - sage: K = GF(29) sage: E = EllipticCurve(j=K(0)) sage: isogenies_13_0(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 29 to Elliptic Curve defined by y^2 = x^3 + 26*x + 12 over Finite Field of size 29, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 29 to Elliptic Curve defined by y^2 = x^3 + 16*x + 28 over Finite Field of size 29] - >>> from sage.all import * >>> K = GF(Integer(29)) >>> E = EllipticCurve(j=K(Integer(0))) >>> isogenies_13_0(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 29 to Elliptic Curve defined by y^2 = x^3 + 26*x + 12 over Finite Field of size 29, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 29 to Elliptic Curve defined by y^2 = x^3 + 16*x + 28 over Finite Field of size 29] - sage: K = GF(101) sage: E = EllipticCurve(j=K(0)); E.ainvs() (0, 0, 0, 0, 1) sage: [phi.codomain().ainvs() for phi in isogenies_13_0(E)] [(0, 0, 0, 64, 36), (0, 0, 0, 42, 66)] - >>> from sage.all import * >>> K = GF(Integer(101)) >>> E = EllipticCurve(j=K(Integer(0))); E.ainvs() (0, 0, 0, 0, 1) >>> [phi.codomain().ainvs() for phi in isogenies_13_0(E)] [(0, 0, 0, 64, 36), (0, 0, 0, 42, 66)] - sage: x = polygen(QQ) sage: f = x^12 + 78624*x^9 - 130308048*x^6 + 2270840832*x^3 - 54500179968 sage: K.<a> = NumberField(f) # needs sage.rings.number_field sage: E = EllipticCurve(j=K(0)); E.ainvs() # needs sage.rings.number_field (0, 0, 0, 0, 1) sage: len([phi.codomain().ainvs() # long time # needs sage.rings.number_field ....: for phi in isogenies_13_0(E)]) 2 - >>> from sage.all import * >>> x = polygen(QQ) >>> f = x**Integer(12) + Integer(78624)*x**Integer(9) - Integer(130308048)*x**Integer(6) + Integer(2270840832)*x**Integer(3) - Integer(54500179968) >>> K = NumberField(f, names=('a',)); (a,) = K._first_ngens(1)# needs sage.rings.number_field >>> E = EllipticCurve(j=K(Integer(0))); E.ainvs() # needs sage.rings.number_field (0, 0, 0, 0, 1) >>> len([phi.codomain().ainvs() # long time # needs sage.rings.number_field ... for phi in isogenies_13_0(E)]) 2 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_13_1728(E, minimal_models=True)[source]¶
- Return list of all 13-isogenies from E when the j-invariant is 1728. - INPUT: - E– an elliptic curve with j-invariant 1728
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 13-isogenies with codomain E. In general these are normalised; but if \(-1\) is a square then there are two endomorphisms of degree \(13\), for which the codomain is the same as the domain; and over \(\QQ\) or a number field, the codomain is a global minimal model where possible. - Note - This implementation requires that the characteristic is not 2, 3 or 13. - Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(13).- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_13_1728 sage: K.<i> = QuadraticField(-1) # needs sage.rings.number_field sage: E = EllipticCurve([0,0,0,i,0]); E.ainvs() # needs sage.rings.number_field (0, 0, 0, i, 0) sage: isogenies_13_1728(E) # needs sage.rings.number_field [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_13_1728 >>> K = QuadraticField(-Integer(1), names=('i',)); (i,) = K._first_ngens(1)# needs sage.rings.number_field >>> E = EllipticCurve([Integer(0),Integer(0),Integer(0),i,Integer(0)]); E.ainvs() # needs sage.rings.number_field (0, 0, 0, i, 0) >>> isogenies_13_1728(E) # needs sage.rings.number_field [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + i*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I] - sage: K = GF(83) sage: E = EllipticCurve(K, [0,0,0,5,0]); E.ainvs() (0, 0, 0, 5, 0) sage: isogenies_13_1728(E) [] sage: K = GF(89) sage: E = EllipticCurve(K, [0,0,0,5,0]); E.ainvs() (0, 0, 0, 5, 0) sage: isogenies_13_1728(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89 to Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89 to Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89] - >>> from sage.all import * >>> K = GF(Integer(83)) >>> E = EllipticCurve(K, [Integer(0),Integer(0),Integer(0),Integer(5),Integer(0)]); E.ainvs() (0, 0, 0, 5, 0) >>> isogenies_13_1728(E) [] >>> K = GF(Integer(89)) >>> E = EllipticCurve(K, [Integer(0),Integer(0),Integer(0),Integer(5),Integer(0)]); E.ainvs() (0, 0, 0, 5, 0) >>> isogenies_13_1728(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89 to Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89 to Elliptic Curve defined by y^2 = x^3 + 5*x over Finite Field of size 89] - sage: K = GF(23) sage: E = EllipticCurve(K, [1,0]) sage: isogenies_13_1728(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 23 to Elliptic Curve defined by y^2 = x^3 + 16 over Finite Field of size 23, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 23 to Elliptic Curve defined by y^2 = x^3 + 7 over Finite Field of size 23] - >>> from sage.all import * >>> K = GF(Integer(23)) >>> E = EllipticCurve(K, [Integer(1),Integer(0)]) >>> isogenies_13_1728(E) [Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 23 to Elliptic Curve defined by y^2 = x^3 + 16 over Finite Field of size 23, Isogeny of degree 13 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 23 to Elliptic Curve defined by y^2 = x^3 + 7 over Finite Field of size 23] - sage: x = polygen(QQ) sage: f = (x^12 + 1092*x^10 - 432432*x^8 + 6641024*x^6 ....: - 282896640*x^4 - 149879808*x^2 - 349360128) sage: K.<a> = NumberField(f) # needs sage.rings.number_field sage: E = EllipticCurve(K, [1,0]) # needs sage.rings.number_field sage: [phi.codomain().ainvs() # long time # needs sage.rings.number_field ....: for phi in isogenies_13_1728(E)] [(0, 0, 0, -4225010072113/3063768069807341568*a^10 - 24841071989413/15957125363579904*a^8 + 11179537789374271/21276167151439872*a^6 - 407474562289492049/47871376090739712*a^4 + 1608052769560747/4522994717568*a^2 + 7786720245212809/36937790193472, -363594277511/574456513088876544*a^11 - 7213386922793/2991961005671232*a^9 - 2810970361185589/1329760446964992*a^7 + 281503836888046601/8975883017013696*a^5 - 1287313166530075/848061509544*a^3 + 9768837984886039/6925835661276*a), (0, 0, 0, -4225010072113/3063768069807341568*a^10 - 24841071989413/15957125363579904*a^8 + 11179537789374271/21276167151439872*a^6 - 407474562289492049/47871376090739712*a^4 + 1608052769560747/4522994717568*a^2 + 7786720245212809/36937790193472, 363594277511/574456513088876544*a^11 + 7213386922793/2991961005671232*a^9 + 2810970361185589/1329760446964992*a^7 - 281503836888046601/8975883017013696*a^5 + 1287313166530075/848061509544*a^3 - 9768837984886039/6925835661276*a)] - >>> from sage.all import * >>> x = polygen(QQ) >>> f = (x**Integer(12) + Integer(1092)*x**Integer(10) - Integer(432432)*x**Integer(8) + Integer(6641024)*x**Integer(6) ... - Integer(282896640)*x**Integer(4) - Integer(149879808)*x**Integer(2) - Integer(349360128)) >>> K = NumberField(f, names=('a',)); (a,) = K._first_ngens(1)# needs sage.rings.number_field >>> E = EllipticCurve(K, [Integer(1),Integer(0)]) # needs sage.rings.number_field >>> [phi.codomain().ainvs() # long time # needs sage.rings.number_field ... for phi in isogenies_13_1728(E)] [(0, 0, 0, -4225010072113/3063768069807341568*a^10 - 24841071989413/15957125363579904*a^8 + 11179537789374271/21276167151439872*a^6 - 407474562289492049/47871376090739712*a^4 + 1608052769560747/4522994717568*a^2 + 7786720245212809/36937790193472, -363594277511/574456513088876544*a^11 - 7213386922793/2991961005671232*a^9 - 2810970361185589/1329760446964992*a^7 + 281503836888046601/8975883017013696*a^5 - 1287313166530075/848061509544*a^3 + 9768837984886039/6925835661276*a), (0, 0, 0, -4225010072113/3063768069807341568*a^10 - 24841071989413/15957125363579904*a^8 + 11179537789374271/21276167151439872*a^6 - 407474562289492049/47871376090739712*a^4 + 1608052769560747/4522994717568*a^2 + 7786720245212809/36937790193472, 363594277511/574456513088876544*a^11 + 7213386922793/2991961005671232*a^9 + 2810970361185589/1329760446964992*a^7 - 281503836888046601/8975883017013696*a^5 + 1287313166530075/848061509544*a^3 - 9768837984886039/6925835661276*a)] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_2(E, minimal_models=True)[source]¶
- Return a list of all 2-isogenies with domain - E.- INPUT: - E– an elliptic curve
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 2-isogenies with domain - E. In general these are normalised, but over \(\QQ\) and other number fields, the codomain is a minimal model where possible.- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_2 sage: E = EllipticCurve('14a1'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + 4*x - 6 over Rational Field sage: [phi.codomain().ainvs() for phi in isogenies_2(E)] [(1, 0, 1, -36, -70)] sage: E = EllipticCurve([1,2,3,4,5]); E Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over Rational Field sage: [phi.codomain().ainvs() for phi in isogenies_2(E)] [] sage: E = EllipticCurve(QQbar, [9,8]); E # needs sage.rings.number_field Elliptic Curve defined by y^2 = x^3 + 9*x + 8 over Algebraic Field sage: isogenies_2(E) # not implemented # needs sage.rings.number_field - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_2 >>> E = EllipticCurve('14a1'); E Elliptic Curve defined by y^2 + x*y + y = x^3 + 4*x - 6 over Rational Field >>> [phi.codomain().ainvs() for phi in isogenies_2(E)] [(1, 0, 1, -36, -70)] >>> E = EllipticCurve([Integer(1),Integer(2),Integer(3),Integer(4),Integer(5)]); E Elliptic Curve defined by y^2 + x*y + 3*y = x^3 + 2*x^2 + 4*x + 5 over Rational Field >>> [phi.codomain().ainvs() for phi in isogenies_2(E)] [] >>> E = EllipticCurve(QQbar, [Integer(9),Integer(8)]); E # needs sage.rings.number_field Elliptic Curve defined by y^2 = x^3 + 9*x + 8 over Algebraic Field >>> isogenies_2(E) # not implemented # needs sage.rings.number_field 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_3(E, minimal_models=True)[source]¶
- Return a list of all 3-isogenies with domain - E.- INPUT: - E– an elliptic curve
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 3-isogenies with domain - E. In general these are normalised, but over \(\QQ\) or a number field, the codomain is a global minimal model where possible.- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_3 sage: E = EllipticCurve(GF(17), [1,1]) sage: [phi.codomain().ainvs() for phi in isogenies_3(E)] [(0, 0, 0, 9, 7), (0, 0, 0, 0, 1)] sage: E = EllipticCurve(GF(17^2,'a'), [1,1]) # needs sage.rings.finite_rings sage: [phi.codomain().ainvs() for phi in isogenies_3(E)] # needs sage.rings.finite_rings [(0, 0, 0, 9, 7), (0, 0, 0, 0, 1), (0, 0, 0, 5*a + 1, a + 13), (0, 0, 0, 12*a + 6, 16*a + 14)] sage: E = EllipticCurve('19a1') sage: [phi.codomain().ainvs() for phi in isogenies_3(E)] [(0, 1, 1, 1, 0), (0, 1, 1, -769, -8470)] sage: E = EllipticCurve([1,1]) sage: [phi.codomain().ainvs() for phi in isogenies_3(E)] [] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_3 >>> E = EllipticCurve(GF(Integer(17)), [Integer(1),Integer(1)]) >>> [phi.codomain().ainvs() for phi in isogenies_3(E)] [(0, 0, 0, 9, 7), (0, 0, 0, 0, 1)] >>> E = EllipticCurve(GF(Integer(17)**Integer(2),'a'), [Integer(1),Integer(1)]) # needs sage.rings.finite_rings >>> [phi.codomain().ainvs() for phi in isogenies_3(E)] # needs sage.rings.finite_rings [(0, 0, 0, 9, 7), (0, 0, 0, 0, 1), (0, 0, 0, 5*a + 1, a + 13), (0, 0, 0, 12*a + 6, 16*a + 14)] >>> E = EllipticCurve('19a1') >>> [phi.codomain().ainvs() for phi in isogenies_3(E)] [(0, 1, 1, 1, 0), (0, 1, 1, -769, -8470)] >>> E = EllipticCurve([Integer(1),Integer(1)]) >>> [phi.codomain().ainvs() for phi in isogenies_3(E)] [] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_5_0(E, minimal_models=True)[source]¶
- Return a list of all the 5-isogenies with domain - Ewhen the j-invariant is 0.- INPUT: - E– an elliptic curve with j-invariant 0
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 5-isogenies with codomain E. In general these are normalised, but over \(\QQ\) or a number field, the codomain is a global minimal model where possible. - Note - This implementation requires that the characteristic is not 2, 3 or 5. - Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(5).- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_5_0 sage: E = EllipticCurve([0,12]) sage: isogenies_5_0(E) [] sage: E = EllipticCurve(GF(13^2,'a'), [0,-3]) # needs sage.rings.finite_rings sage: isogenies_5_0(E) # needs sage.rings.finite_rings [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (4*a+6)*x + (2*a+10) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (12*a+5)*x + (2*a+10) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (10*a+2)*x + (2*a+10) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (3*a+12)*x + (11*a+12) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (a+4)*x + (11*a+12) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (9*a+10)*x + (11*a+12) over Finite Field in a of size 13^2] sage: x = polygen(QQ, 'x') sage: K.<a> = NumberField(x**6 - 320*x**3 - 320) # needs sage.rings.number_field sage: E = EllipticCurve(K, [0,0,1,0,0]) # needs sage.rings.number_field sage: isogenies_5_0(E) # needs sage.rings.number_field [Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^6 - 320*x^3 - 320 to Elliptic Curve defined by y^2 + y = x^3 + (643/8*a^5-15779/48*a^4-32939/24*a^3-71989/2*a^2+214321/6*a-112115/3)*x + (2901961/96*a^5+4045805/48*a^4+12594215/18*a^3-30029635/6*a^2+15341626/3*a-38944312/9) over Number Field in a with defining polynomial x^6 - 320*x^3 - 320, Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^6 - 320*x^3 - 320 to Elliptic Curve defined by y^2 + y = x^3 + (-1109/8*a^5-53873/48*a^4-180281/24*a^3-14491/2*a^2+35899/6*a-43745/3)*x + (-17790679/96*a^5-60439571/48*a^4-77680504/9*a^3+1286245/6*a^2-4961854/3*a-73854632/9) over Number Field in a with defining polynomial x^6 - 320*x^3 - 320] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_5_0 >>> E = EllipticCurve([Integer(0),Integer(12)]) >>> isogenies_5_0(E) [] >>> E = EllipticCurve(GF(Integer(13)**Integer(2),'a'), [Integer(0),-Integer(3)]) # needs sage.rings.finite_rings >>> isogenies_5_0(E) # needs sage.rings.finite_rings [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (4*a+6)*x + (2*a+10) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (12*a+5)*x + (2*a+10) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (10*a+2)*x + (2*a+10) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (3*a+12)*x + (11*a+12) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (a+4)*x + (11*a+12) over Finite Field in a of size 13^2, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + (9*a+10)*x + (11*a+12) over Finite Field in a of size 13^2] >>> x = polygen(QQ, 'x') >>> K = NumberField(x**Integer(6) - Integer(320)*x**Integer(3) - Integer(320), names=('a',)); (a,) = K._first_ngens(1)# needs sage.rings.number_field >>> E = EllipticCurve(K, [Integer(0),Integer(0),Integer(1),Integer(0),Integer(0)]) # needs sage.rings.number_field >>> isogenies_5_0(E) # needs sage.rings.number_field [Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^6 - 320*x^3 - 320 to Elliptic Curve defined by y^2 + y = x^3 + (643/8*a^5-15779/48*a^4-32939/24*a^3-71989/2*a^2+214321/6*a-112115/3)*x + (2901961/96*a^5+4045805/48*a^4+12594215/18*a^3-30029635/6*a^2+15341626/3*a-38944312/9) over Number Field in a with defining polynomial x^6 - 320*x^3 - 320, Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 over Number Field in a with defining polynomial x^6 - 320*x^3 - 320 to Elliptic Curve defined by y^2 + y = x^3 + (-1109/8*a^5-53873/48*a^4-180281/24*a^3-14491/2*a^2+35899/6*a-43745/3)*x + (-17790679/96*a^5-60439571/48*a^4-77680504/9*a^3+1286245/6*a^2-4961854/3*a-73854632/9) over Number Field in a with defining polynomial x^6 - 320*x^3 - 320] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_5_1728(E, minimal_models=True)[source]¶
- Return a list of 5-isogenies with domain - Ewhen the j-invariant is 1728.- INPUT: - E– an elliptic curve with j-invariant 1728
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 5-isogenies with codomain E. In general these are normalised; but if \(-1\) is a square then there are two endomorphisms of degree \(5\), for which the codomain is the same as the domain curve; and over \(\QQ\) or a number field, the codomain is a global minimal model where possible. - Note - This implementation requires that the characteristic is not 2, 3 or 5. - Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(5).- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_5_1728 sage: E = EllipticCurve([7,0]) sage: isogenies_5_1728(E) [] sage: E = EllipticCurve(GF(13), [11,0]) sage: isogenies_5_1728(E) [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_5_1728 >>> E = EllipticCurve([Integer(7),Integer(0)]) >>> isogenies_5_1728(E) [] >>> E = EllipticCurve(GF(Integer(13)), [Integer(11),Integer(0)]) >>> isogenies_5_1728(E) [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 11*x over Finite Field of size 13] - An example of endomorphisms of degree 5: - sage: # needs sage.rings.number_field sage: K.<i> = QuadraticField(-1) sage: E = EllipticCurve(K, [0,0,0,1,0]) sage: isogenies_5_1728(E) [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I] sage: _[0].rational_maps() (((4/25*i + 3/25)*x^5 + (4/5*i - 2/5)*x^3 - x)/(x^4 + (-4/5*i + 2/5)*x^2 + (-4/25*i - 3/25)), ((11/125*i + 2/125)*x^6*y + (-23/125*i + 64/125)*x^4*y + (141/125*i + 162/125)*x^2*y + (3/25*i - 4/25)*y)/(x^6 + (-6/5*i + 3/5)*x^4 + (-12/25*i - 9/25)*x^2 + (2/125*i - 11/125))) - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = QuadraticField(-Integer(1), names=('i',)); (i,) = K._first_ngens(1) >>> E = EllipticCurve(K, [Integer(0),Integer(0),Integer(0),Integer(1),Integer(0)]) >>> isogenies_5_1728(E) [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I] >>> _[Integer(0)].rational_maps() (((4/25*i + 3/25)*x^5 + (4/5*i - 2/5)*x^3 - x)/(x^4 + (-4/5*i + 2/5)*x^2 + (-4/25*i - 3/25)), ((11/125*i + 2/125)*x^6*y + (-23/125*i + 64/125)*x^4*y + (141/125*i + 162/125)*x^2*y + (3/25*i - 4/25)*y)/(x^6 + (-6/5*i + 3/5)*x^4 + (-12/25*i - 9/25)*x^2 + (2/125*i - 11/125))) - An example of 5-isogenies over a number field: - sage: # needs sage.rings.number_field sage: x = polygen(QQ, 'x') sage: K.<a> = NumberField(x**4 + 20*x**2 - 80) sage: K(5).is_square() # necessary but not sufficient! True sage: E = EllipticCurve(K, [0,0,0,1,0]) sage: isogenies_5_1728(E) [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in a with defining polynomial x^4 + 20*x^2 - 80 to Elliptic Curve defined by y^2 = x^3 + (-753/4*a^2-4399)*x + (2779*a^3+65072*a) over Number Field in a with defining polynomial x^4 + 20*x^2 - 80, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in a with defining polynomial x^4 + 20*x^2 - 80 to Elliptic Curve defined by y^2 = x^3 + (-753/4*a^2-4399)*x + (-2779*a^3-65072*a) over Number Field in a with defining polynomial x^4 + 20*x^2 - 80] - >>> from sage.all import * >>> # needs sage.rings.number_field >>> x = polygen(QQ, 'x') >>> K = NumberField(x**Integer(4) + Integer(20)*x**Integer(2) - Integer(80), names=('a',)); (a,) = K._first_ngens(1) >>> K(Integer(5)).is_square() # necessary but not sufficient! True >>> E = EllipticCurve(K, [Integer(0),Integer(0),Integer(0),Integer(1),Integer(0)]) >>> isogenies_5_1728(E) [Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in a with defining polynomial x^4 + 20*x^2 - 80 to Elliptic Curve defined by y^2 = x^3 + (-753/4*a^2-4399)*x + (2779*a^3+65072*a) over Number Field in a with defining polynomial x^4 + 20*x^2 - 80, Isogeny of degree 5 from Elliptic Curve defined by y^2 = x^3 + x over Number Field in a with defining polynomial x^4 + 20*x^2 - 80 to Elliptic Curve defined by y^2 = x^3 + (-753/4*a^2-4399)*x + (-2779*a^3-65072*a) over Number Field in a with defining polynomial x^4 + 20*x^2 - 80] - See Issue #19840: - sage: # needs sage.rings.number_field sage: K.<a> = NumberField(x^4 - 5*x^2 + 5) sage: E = EllipticCurve([a^2 + a + 1, a^3 + a^2 + a + 1, a^2 + a, ....: 17*a^3 + 34*a^2 - 16*a - 37, ....: 54*a^3 + 105*a^2 - 66*a - 135]) sage: len(E.isogenies_prime_degree(5)) 2 sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_5_1728 sage: [phi.codomain().j_invariant() for phi in isogenies_5_1728(E)] [19691491018752*a^2 - 27212977933632, 19691491018752*a^2 - 27212977933632] - >>> from sage.all import * >>> # needs sage.rings.number_field >>> K = NumberField(x**Integer(4) - Integer(5)*x**Integer(2) + Integer(5), names=('a',)); (a,) = K._first_ngens(1) >>> E = EllipticCurve([a**Integer(2) + a + Integer(1), a**Integer(3) + a**Integer(2) + a + Integer(1), a**Integer(2) + a, ... Integer(17)*a**Integer(3) + Integer(34)*a**Integer(2) - Integer(16)*a - Integer(37), ... Integer(54)*a**Integer(3) + Integer(105)*a**Integer(2) - Integer(66)*a - Integer(135)]) >>> len(E.isogenies_prime_degree(Integer(5))) 2 >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_5_1728 >>> [phi.codomain().j_invariant() for phi in isogenies_5_1728(E)] [19691491018752*a^2 - 27212977933632, 19691491018752*a^2 - 27212977933632] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_7_0(E, minimal_models=True)[source]¶
- Return list of all 7-isogenies from E when the j-invariant is 0. - INPUT: - E– an elliptic curve with j-invariant 0
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 7-isogenies with codomain E. In general these are normalised; but if \(-3\) is a square then there are two endomorphisms of degree \(7\), for which the codomain is the same as the domain; and over \(\QQ\) or a number field, the codomain is a global minimal model where possible. - Note - This implementation requires that the characteristic is not 2, 3 or 7. - Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(7).- EXAMPLES: - First some examples of endomorphisms: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_0 sage: K.<r> = QuadraticField(-3) # needs sage.rings.number_field sage: E = EllipticCurve(K, [0,1]) # needs sage.rings.number_field sage: isogenies_7_0(E) # needs sage.rings.number_field [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I] sage: E = EllipticCurve(GF(13^2,'a'), [0,-3]) # needs sage.rings.finite_rings sage: isogenies_7_0(E) # needs sage.rings.finite_rings [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_0 >>> K = QuadraticField(-Integer(3), names=('r',)); (r,) = K._first_ngens(1)# needs sage.rings.number_field >>> E = EllipticCurve(K, [Integer(0),Integer(1)]) # needs sage.rings.number_field >>> isogenies_7_0(E) # needs sage.rings.number_field [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 = x^3 + 1 over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I] >>> E = EllipticCurve(GF(Integer(13)**Integer(2),'a'), [Integer(0),-Integer(3)]) # needs sage.rings.finite_rings >>> isogenies_7_0(E) # needs sage.rings.finite_rings [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2 to Elliptic Curve defined by y^2 = x^3 + 10 over Finite Field in a of size 13^2] - Now some examples of 7-isogenies which are not endomorphisms: - sage: K = GF(101) sage: E = EllipticCurve(K, [0,1]) sage: isogenies_7_0(E) [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 101 to Elliptic Curve defined by y^2 = x^3 + 55*x + 100 over Finite Field of size 101, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 101 to Elliptic Curve defined by y^2 = x^3 + 83*x + 26 over Finite Field of size 101] - >>> from sage.all import * >>> K = GF(Integer(101)) >>> E = EllipticCurve(K, [Integer(0),Integer(1)]) >>> isogenies_7_0(E) [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 101 to Elliptic Curve defined by y^2 = x^3 + 55*x + 100 over Finite Field of size 101, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field of size 101 to Elliptic Curve defined by y^2 = x^3 + 83*x + 26 over Finite Field of size 101] - Examples over a number field: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_0 sage: E = EllipticCurve('27a1').change_ring(QuadraticField(-3,'r')) # needs sage.rings.number_field sage: isogenies_7_0(E) # needs sage.rings.number_field [Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I, Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I] sage: # needs sage.rings.number_field sage: x = polygen(QQ, 'x') sage: K.<a> = NumberField(x^6 + 1512*x^3 - 21168) sage: E = EllipticCurve(K, [0,1]) sage: isogs = isogenies_7_0(E) sage: [phi.codomain().a_invariants() for phi in isogs] [(0, 0, 0, -415/98*a^5 - 675/14*a^4 + 2255/7*a^3 - 74700/7*a^2 - 25110*a - 66420, -141163/56*a^5 + 1443453/112*a^4 - 374275/2*a^3 - 3500211/2*a^2 - 17871975/4*a - 7710065), (0, 0, 0, -24485/392*a^5 - 1080/7*a^4 - 2255/7*a^3 - 1340865/14*a^2 - 230040*a - 553500, 1753037/56*a^5 + 8345733/112*a^4 + 374275/2*a^3 + 95377029/2*a^2 + 458385345/4*a + 275241835)] sage: [phi.codomain().j_invariant() for phi in isogs] [158428486656000/7*a^3 - 313976217600000, -158428486656000/7*a^3 - 34534529335296000] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_0 >>> E = EllipticCurve('27a1').change_ring(QuadraticField(-Integer(3),'r')) # needs sage.rings.number_field >>> isogenies_7_0(E) # needs sage.rings.number_field [Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I, Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I to Elliptic Curve defined by y^2 + y = x^3 + (-7) over Number Field in r with defining polynomial x^2 + 3 with r = 1.732050807568878?*I] >>> # needs sage.rings.number_field >>> x = polygen(QQ, 'x') >>> K = NumberField(x**Integer(6) + Integer(1512)*x**Integer(3) - Integer(21168), names=('a',)); (a,) = K._first_ngens(1) >>> E = EllipticCurve(K, [Integer(0),Integer(1)]) >>> isogs = isogenies_7_0(E) >>> [phi.codomain().a_invariants() for phi in isogs] [(0, 0, 0, -415/98*a^5 - 675/14*a^4 + 2255/7*a^3 - 74700/7*a^2 - 25110*a - 66420, -141163/56*a^5 + 1443453/112*a^4 - 374275/2*a^3 - 3500211/2*a^2 - 17871975/4*a - 7710065), (0, 0, 0, -24485/392*a^5 - 1080/7*a^4 - 2255/7*a^3 - 1340865/14*a^2 - 230040*a - 553500, 1753037/56*a^5 + 8345733/112*a^4 + 374275/2*a^3 + 95377029/2*a^2 + 458385345/4*a + 275241835)] >>> [phi.codomain().j_invariant() for phi in isogs] [158428486656000/7*a^3 - 313976217600000, -158428486656000/7*a^3 - 34534529335296000] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_7_1728(E, minimal_models=True)[source]¶
- Return list of all 7-isogenies from E when the j-invariant is 1728. - INPUT: - E– an elliptic curve with j-invariant 1728
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) 7-isogenies with codomain E. In general these are normalised; but over \(\QQ\) or a number field, the codomain is a global minimal model where possible. - Note - This implementation requires that the characteristic is not 2, 3, or 7. - Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(7).- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_1728 sage: E = EllipticCurve(GF(47), [1, 0]) sage: isogenies_7_1728(E) [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 47 to Elliptic Curve defined by y^2 = x^3 + 26 over Finite Field of size 47, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 47 to Elliptic Curve defined by y^2 = x^3 + 21 over Finite Field of size 47] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_1728 >>> E = EllipticCurve(GF(Integer(47)), [Integer(1), Integer(0)]) >>> isogenies_7_1728(E) [Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 47 to Elliptic Curve defined by y^2 = x^3 + 26 over Finite Field of size 47, Isogeny of degree 7 from Elliptic Curve defined by y^2 = x^3 + x over Finite Field of size 47 to Elliptic Curve defined by y^2 = x^3 + 21 over Finite Field of size 47] - An example in characteristic 53 (for which an earlier implementation did not work): - sage: # needs sage.rings.finite_rings sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_1728 sage: E = EllipticCurve(GF(53), [1, 0]) sage: isogenies_7_1728(E) [] sage: E = EllipticCurve(GF(53^2,'a'), [1, 0]) sage: [iso.codomain().ainvs() for iso in isogenies_7_1728(E)] [(0, 0, 0, 36, 19*a + 15), (0, 0, 0, 36, 34*a + 38), (0, 0, 0, 33, 39*a + 28), (0, 0, 0, 33, 14*a + 25), (0, 0, 0, 19, 45*a + 16), (0, 0, 0, 19, 8*a + 37), (0, 0, 0, 3, 45*a + 16), (0, 0, 0, 3, 8*a + 37)] - >>> from sage.all import * >>> # needs sage.rings.finite_rings >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_7_1728 >>> E = EllipticCurve(GF(Integer(53)), [Integer(1), Integer(0)]) >>> isogenies_7_1728(E) [] >>> E = EllipticCurve(GF(Integer(53)**Integer(2),'a'), [Integer(1), Integer(0)]) >>> [iso.codomain().ainvs() for iso in isogenies_7_1728(E)] [(0, 0, 0, 36, 19*a + 15), (0, 0, 0, 36, 34*a + 38), (0, 0, 0, 33, 39*a + 28), (0, 0, 0, 33, 14*a + 25), (0, 0, 0, 19, 45*a + 16), (0, 0, 0, 19, 8*a + 37), (0, 0, 0, 3, 45*a + 16), (0, 0, 0, 3, 8*a + 37)] - sage: # needs sage.rings.number_field sage: x = polygen(QQ, 'x') sage: K.<a> = NumberField(x^8 + 84*x^6 - 1890*x^4 + 644*x^2 - 567) sage: E = EllipticCurve(K, [1, 0]) sage: isogs = isogenies_7_1728(E) sage: [phi.codomain().j_invariant() for phi in isogs] [-526110256146528/53*a^6 + 183649373229024*a^4 - 3333881559996576/53*a^2 + 2910267397643616/53, -526110256146528/53*a^6 + 183649373229024*a^4 - 3333881559996576/53*a^2 + 2910267397643616/53] sage: E1 = isogs[0].codomain() sage: E2 = isogs[1].codomain() sage: E1.is_isomorphic(E2) False sage: E1.is_quadratic_twist(E2) -1 - >>> from sage.all import * >>> # needs sage.rings.number_field >>> x = polygen(QQ, 'x') >>> K = NumberField(x**Integer(8) + Integer(84)*x**Integer(6) - Integer(1890)*x**Integer(4) + Integer(644)*x**Integer(2) - Integer(567), names=('a',)); (a,) = K._first_ngens(1) >>> E = EllipticCurve(K, [Integer(1), Integer(0)]) >>> isogs = isogenies_7_1728(E) >>> [phi.codomain().j_invariant() for phi in isogs] [-526110256146528/53*a^6 + 183649373229024*a^4 - 3333881559996576/53*a^2 + 2910267397643616/53, -526110256146528/53*a^6 + 183649373229024*a^4 - 3333881559996576/53*a^2 + 2910267397643616/53] >>> E1 = isogs[Integer(0)].codomain() >>> E2 = isogs[Integer(1)].codomain() >>> E1.is_isomorphic(E2) False >>> E1.is_quadratic_twist(E2) -1 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_prime_degree(E, l, minimal_models=True)[source]¶
- Return all separable - l-isogenies with domain- E.- INPUT: - E– an elliptic curve
- l– a prime
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False. Ignored except over number fields other than \(QQ\).
 - OUTPUT: list of all separable isogenies of degree \(l\) with domain - E- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree sage: E = EllipticCurve_from_j(GF(2^6,'a')(1)) # needs sage.rings.finite_rings sage: isogenies_prime_degree(E, 7) # needs sage.rings.finite_rings [Isogeny of degree 7 from Elliptic Curve defined by y^2 + x*y = x^3 + 1 over Finite Field in a of size 2^6 to Elliptic Curve defined by y^2 + x*y = x^3 + x over Finite Field in a of size 2^6] sage: E = EllipticCurve_from_j(GF(3^12,'a')(2)) # needs sage.rings.finite_rings sage: isogenies_prime_degree(E, 17) # needs sage.rings.finite_rings [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + x + 2 over Finite Field in a of size 3^12, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2*x over Finite Field in a of size 3^12] sage: E = EllipticCurve('50a1') sage: isogenies_prime_degree(E, 3) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 126*x - 552 over Rational Field] sage: isogenies_prime_degree(E, 5) [Isogeny of degree 5 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 76*x + 298 over Rational Field] sage: E = EllipticCurve([0, 0, 1, -1862, -30956]) sage: isogenies_prime_degree(E, 19) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] sage: E = EllipticCurve([0, -1, 0, -6288, 211072]) sage: isogenies_prime_degree(E, 37) [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 - x^2 - 6288*x + 211072 over Rational Field to Elliptic Curve defined by y^2 = x^3 - x^2 - 163137088*x - 801950801728 over Rational Field] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree >>> E = EllipticCurve_from_j(GF(Integer(2)**Integer(6),'a')(Integer(1))) # needs sage.rings.finite_rings >>> isogenies_prime_degree(E, Integer(7)) # needs sage.rings.finite_rings [Isogeny of degree 7 from Elliptic Curve defined by y^2 + x*y = x^3 + 1 over Finite Field in a of size 2^6 to Elliptic Curve defined by y^2 + x*y = x^3 + x over Finite Field in a of size 2^6] >>> E = EllipticCurve_from_j(GF(Integer(3)**Integer(12),'a')(Integer(2))) # needs sage.rings.finite_rings >>> isogenies_prime_degree(E, Integer(17)) # needs sage.rings.finite_rings [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + x + 2 over Finite Field in a of size 3^12, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2*x over Finite Field in a of size 3^12] >>> E = EllipticCurve('50a1') >>> isogenies_prime_degree(E, Integer(3)) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 126*x - 552 over Rational Field] >>> isogenies_prime_degree(E, Integer(5)) [Isogeny of degree 5 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 76*x + 298 over Rational Field] >>> E = EllipticCurve([Integer(0), Integer(0), Integer(1), -Integer(1862), -Integer(30956)]) >>> isogenies_prime_degree(E, Integer(19)) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] >>> E = EllipticCurve([Integer(0), -Integer(1), Integer(0), -Integer(6288), Integer(211072)]) >>> isogenies_prime_degree(E, Integer(37)) [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 - x^2 - 6288*x + 211072 over Rational Field to Elliptic Curve defined by y^2 = x^3 - x^2 - 163137088*x - 801950801728 over Rational Field] - Isogenies of degree equal to the characteristic are computed (but only the separable isogeny). In the following example we consider an elliptic curve which is supersingular in characteristic 2 only: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree sage: ainvs = (0,1,1,-1,-1) sage: for l in prime_range(50): ....: E = EllipticCurve(GF(l), ainvs) ....: isogenies_prime_degree(E, l) [] [Isogeny of degree 3 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 2*x + 2 over Finite Field of size 3 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 3] [Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5] [Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 6*x + 6 over Finite Field of size 7 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4 over Finite Field of size 7] [Isogeny of degree 11 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 10*x + 10 over Finite Field of size 11 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x + 1 over Finite Field of size 11] [Isogeny of degree 13 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13] [Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 16 over Finite Field of size 17 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15 over Finite Field of size 17] [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 18*x + 18 over Finite Field of size 19 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 3*x + 12 over Finite Field of size 19] [Isogeny of degree 23 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23] [Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 28*x + 28 over Finite Field of size 29 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 7*x + 27 over Finite Field of size 29] [Isogeny of degree 31 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 30*x + 30 over Finite Field of size 31 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15*x + 16 over Finite Field of size 31] [Isogeny of degree 37 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36*x + 36 over Finite Field of size 37 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 17 over Finite Field of size 37] [Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 40*x + 40 over Finite Field of size 41 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 33*x + 16 over Finite Field of size 41] [Isogeny of degree 43 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 42 over Finite Field of size 43 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36 over Finite Field of size 43] [Isogeny of degree 47 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 46*x + 46 over Finite Field of size 47 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 34 over Finite Field of size 47] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree >>> ainvs = (Integer(0),Integer(1),Integer(1),-Integer(1),-Integer(1)) >>> for l in prime_range(Integer(50)): ... E = EllipticCurve(GF(l), ainvs) ... isogenies_prime_degree(E, l) [] [Isogeny of degree 3 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 2*x + 2 over Finite Field of size 3 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 3] [Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5] [Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 6*x + 6 over Finite Field of size 7 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4 over Finite Field of size 7] [Isogeny of degree 11 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 10*x + 10 over Finite Field of size 11 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x + 1 over Finite Field of size 11] [Isogeny of degree 13 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13] [Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 16 over Finite Field of size 17 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15 over Finite Field of size 17] [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 18*x + 18 over Finite Field of size 19 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 3*x + 12 over Finite Field of size 19] [Isogeny of degree 23 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23] [Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 28*x + 28 over Finite Field of size 29 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 7*x + 27 over Finite Field of size 29] [Isogeny of degree 31 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 30*x + 30 over Finite Field of size 31 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15*x + 16 over Finite Field of size 31] [Isogeny of degree 37 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36*x + 36 over Finite Field of size 37 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 17 over Finite Field of size 37] [Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 40*x + 40 over Finite Field of size 41 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 33*x + 16 over Finite Field of size 41] [Isogeny of degree 43 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 42 over Finite Field of size 43 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36 over Finite Field of size 43] [Isogeny of degree 47 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 46*x + 46 over Finite Field of size 47 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 34 over Finite Field of size 47] - Note that the computation is faster for degrees equal to one of the genus 0 primes (2, 3, 5, 7, 13) or one of the hyperelliptic primes (11, 17, 19, 23, 29, 31, 41, 47, 59, 71) than when the generic code must be used: - sage: E = EllipticCurve(GF(101), [-3440, 77658]) sage: E.isogenies_prime_degree(71) # fast [] sage: E.isogenies_prime_degree(73) # long time [] - >>> from sage.all import * >>> E = EllipticCurve(GF(Integer(101)), [-Integer(3440), Integer(77658)]) >>> E.isogenies_prime_degree(Integer(71)) # fast [] >>> E.isogenies_prime_degree(Integer(73)) # long time [] - Test that Issue #32269 is fixed: - sage: K = QuadraticField(-11) # needs sage.rings.number_field sage: E = EllipticCurve(K, [0,1,0,-117,-541]) # needs sage.rings.number_field sage: E.isogenies_prime_degree(37) # long time # needs sage.rings.number_field [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 + x^2 + (-117)*x + (-541) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I to Elliptic Curve defined by y^2 = x^3 + x^2 + (-30800*a+123963)*x + (-3931312*a-21805005) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I, Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 + x^2 + (-117)*x + (-541) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I to Elliptic Curve defined by y^2 = x^3 + x^2 + (30800*a+123963)*x + (3931312*a-21805005) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I] - >>> from sage.all import * >>> K = QuadraticField(-Integer(11)) # needs sage.rings.number_field >>> E = EllipticCurve(K, [Integer(0),Integer(1),Integer(0),-Integer(117),-Integer(541)]) # needs sage.rings.number_field >>> E.isogenies_prime_degree(Integer(37)) # long time # needs sage.rings.number_field [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 + x^2 + (-117)*x + (-541) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I to Elliptic Curve defined by y^2 = x^3 + x^2 + (-30800*a+123963)*x + (-3931312*a-21805005) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I, Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 + x^2 + (-117)*x + (-541) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I to Elliptic Curve defined by y^2 = x^3 + x^2 + (30800*a+123963)*x + (3931312*a-21805005) over Number Field in a with defining polynomial x^2 + 11 with a = 3.316624790355400?*I] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_prime_degree_general(E, l, minimal_models=True)[source]¶
- Return all separable - l-isogenies with domain- E.- INPUT: - E– an elliptic curve
- l– a prime
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - A list of all separable isogenies of degree \(l\) with domain - E(up to post-isomorphism).- ALGORITHM: - This algorithm factors the - l-division polynomial, then combines its factors to obtain kernels. Originally this was done using [KT2013], Chapter 3, but nowadays the recombination step is instead delegated to- kernel_polynomial_from_divisor().- Note - This function works for any prime \(l\). Normally one should use the function - isogenies_prime_degree()which uses special functions for certain small primes.- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_general sage: E = EllipticCurve_from_j(GF(2^6,'a')(1)) # needs sage.rings.finite_rings sage: isogenies_prime_degree_general(E, 7) # needs sage.rings.finite_rings [Isogeny of degree 7 from Elliptic Curve defined by y^2 + x*y = x^3 + 1 over Finite Field in a of size 2^6 to Elliptic Curve defined by y^2 + x*y = x^3 + x over Finite Field in a of size 2^6] sage: E = EllipticCurve_from_j(GF(3^12,'a')(2)) # needs sage.rings.finite_rings sage: isogenies_prime_degree_general(E, 17) # needs sage.rings.finite_rings [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + x + 2 over Finite Field in a of size 3^12, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2*x over Finite Field in a of size 3^12] sage: E = EllipticCurve('50a1') sage: isogenies_prime_degree_general(E, 3) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 126*x - 552 over Rational Field] sage: isogenies_prime_degree_general(E, 5) [Isogeny of degree 5 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 76*x + 298 over Rational Field] sage: E = EllipticCurve([0, 0, 1, -1862, -30956]) sage: isogenies_prime_degree_general(E, 19) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] sage: E = EllipticCurve([0, -1, 0, -6288, 211072]) sage: isogenies_prime_degree_general(E, 37) # long time (2s) [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 - x^2 - 6288*x + 211072 over Rational Field to Elliptic Curve defined by y^2 = x^3 - x^2 - 163137088*x - 801950801728 over Rational Field] sage: E = EllipticCurve([-3440, 77658]) sage: isogenies_prime_degree_general(E, 43) # long time (2s) [Isogeny of degree 43 from Elliptic Curve defined by y^2 = x^3 - 3440*x + 77658 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 6360560*x - 6174354606 over Rational Field] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_general >>> E = EllipticCurve_from_j(GF(Integer(2)**Integer(6),'a')(Integer(1))) # needs sage.rings.finite_rings >>> isogenies_prime_degree_general(E, Integer(7)) # needs sage.rings.finite_rings [Isogeny of degree 7 from Elliptic Curve defined by y^2 + x*y = x^3 + 1 over Finite Field in a of size 2^6 to Elliptic Curve defined by y^2 + x*y = x^3 + x over Finite Field in a of size 2^6] >>> E = EllipticCurve_from_j(GF(Integer(3)**Integer(12),'a')(Integer(2))) # needs sage.rings.finite_rings >>> isogenies_prime_degree_general(E, Integer(17)) # needs sage.rings.finite_rings [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + x + 2 over Finite Field in a of size 3^12, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2 over Finite Field in a of size 3^12 to Elliptic Curve defined by y^2 = x^3 + 2*x^2 + 2*x over Finite Field in a of size 3^12] >>> E = EllipticCurve('50a1') >>> isogenies_prime_degree_general(E, Integer(3)) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 126*x - 552 over Rational Field] >>> isogenies_prime_degree_general(E, Integer(5)) [Isogeny of degree 5 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 76*x + 298 over Rational Field] >>> E = EllipticCurve([Integer(0), Integer(0), Integer(1), -Integer(1862), -Integer(30956)]) >>> isogenies_prime_degree_general(E, Integer(19)) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] >>> E = EllipticCurve([Integer(0), -Integer(1), Integer(0), -Integer(6288), Integer(211072)]) >>> isogenies_prime_degree_general(E, Integer(37)) # long time (2s) [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 - x^2 - 6288*x + 211072 over Rational Field to Elliptic Curve defined by y^2 = x^3 - x^2 - 163137088*x - 801950801728 over Rational Field] >>> E = EllipticCurve([-Integer(3440), Integer(77658)]) >>> isogenies_prime_degree_general(E, Integer(43)) # long time (2s) [Isogeny of degree 43 from Elliptic Curve defined by y^2 = x^3 - 3440*x + 77658 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 6360560*x - 6174354606 over Rational Field] - Isogenies of degree equal to the characteristic are computed (but only the separable isogeny). In the following example we consider an elliptic curve which is supersingular in characteristic 2 only: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_general sage: ainvs = (0,1,1,-1,-1) sage: for l in prime_range(50): ....: E = EllipticCurve(GF(l),ainvs) ....: isogenies_prime_degree_general(E,l) [] [Isogeny of degree 3 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 2*x + 2 over Finite Field of size 3 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 3] [Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5] [Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 6*x + 6 over Finite Field of size 7 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4 over Finite Field of size 7] [Isogeny of degree 11 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 10*x + 10 over Finite Field of size 11 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x + 1 over Finite Field of size 11] [Isogeny of degree 13 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13] [Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 16 over Finite Field of size 17 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15 over Finite Field of size 17] [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 18*x + 18 over Finite Field of size 19 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 3*x + 12 over Finite Field of size 19] [Isogeny of degree 23 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23] [Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 28*x + 28 over Finite Field of size 29 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 7*x + 27 over Finite Field of size 29] [Isogeny of degree 31 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 30*x + 30 over Finite Field of size 31 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15*x + 16 over Finite Field of size 31] [Isogeny of degree 37 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36*x + 36 over Finite Field of size 37 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 17 over Finite Field of size 37] [Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 40*x + 40 over Finite Field of size 41 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 33*x + 16 over Finite Field of size 41] [Isogeny of degree 43 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 42 over Finite Field of size 43 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36 over Finite Field of size 43] [Isogeny of degree 47 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 46*x + 46 over Finite Field of size 47 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 34 over Finite Field of size 47] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_general >>> ainvs = (Integer(0),Integer(1),Integer(1),-Integer(1),-Integer(1)) >>> for l in prime_range(Integer(50)): ... E = EllipticCurve(GF(l),ainvs) ... isogenies_prime_degree_general(E,l) [] [Isogeny of degree 3 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 2*x + 2 over Finite Field of size 3 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 3] [Isogeny of degree 5 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4*x + 4 over Finite Field of size 5] [Isogeny of degree 7 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 6*x + 6 over Finite Field of size 7 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 4 over Finite Field of size 7] [Isogeny of degree 11 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 10*x + 10 over Finite Field of size 11 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + x + 1 over Finite Field of size 11] [Isogeny of degree 13 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 12 over Finite Field of size 13] [Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 16 over Finite Field of size 17 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15 over Finite Field of size 17] [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 18*x + 18 over Finite Field of size 19 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 3*x + 12 over Finite Field of size 19] [Isogeny of degree 23 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 22*x + 22 over Finite Field of size 23] [Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 28*x + 28 over Finite Field of size 29 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 7*x + 27 over Finite Field of size 29] [Isogeny of degree 31 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 30*x + 30 over Finite Field of size 31 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 15*x + 16 over Finite Field of size 31] [Isogeny of degree 37 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36*x + 36 over Finite Field of size 37 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 16*x + 17 over Finite Field of size 37] [Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 40*x + 40 over Finite Field of size 41 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 33*x + 16 over Finite Field of size 41] [Isogeny of degree 43 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 42 over Finite Field of size 43 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 36 over Finite Field of size 43] [Isogeny of degree 47 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + 46*x + 46 over Finite Field of size 47 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 42*x + 34 over Finite Field of size 47] - Note that not all factors of degree \((l-1)/2\) of the \(l\)-division polynomial are kernel polynomials. In this example, the 13-division polynomial factors as a product of 14 irreducible factors of degree 6 each, but only two those are kernel polynomials: - sage: F3 = GF(3) sage: E = EllipticCurve(F3, [0,0,0,-1,0]) sage: Psi13 = E.division_polynomial(13) sage: len([f for f, e in Psi13.factor() if f.degree() == 6]) 14 sage: len(E.isogenies_prime_degree(13)) 2 - >>> from sage.all import * >>> F3 = GF(Integer(3)) >>> E = EllipticCurve(F3, [Integer(0),Integer(0),Integer(0),-Integer(1),Integer(0)]) >>> Psi13 = E.division_polynomial(Integer(13)) >>> len([f for f, e in Psi13.factor() if f.degree() == Integer(6)]) 14 >>> len(E.isogenies_prime_degree(Integer(13))) 2 - Over GF(9) the other factors of degree 6 split into pairs of cubics which can be rearranged to give the remaining 12 kernel polynomials: - sage: len(E.change_ring(GF(3^2,'a')).isogenies_prime_degree(13)) # needs sage.rings.finite_rings 14 - >>> from sage.all import * >>> len(E.change_ring(GF(Integer(3)**Integer(2),'a')).isogenies_prime_degree(Integer(13))) # needs sage.rings.finite_rings 14 - See Issue #18589: the following example took 20s before, now only 4s: - sage: K.<i> = QuadraticField(-1) # needs sage.rings.number_field sage: E = EllipticCurve(K,[0,0,0,1,0]) # needs sage.rings.number_field sage: [phi.codomain().ainvs() # long time # needs sage.rings.number_field ....: for phi in E.isogenies_prime_degree(37)] [(0, 0, 0, 840*i + 1081, 0), (0, 0, 0, -840*i + 1081, 0)] - >>> from sage.all import * >>> K = QuadraticField(-Integer(1), names=('i',)); (i,) = K._first_ngens(1)# needs sage.rings.number_field >>> E = EllipticCurve(K,[Integer(0),Integer(0),Integer(0),Integer(1),Integer(0)]) # needs sage.rings.number_field >>> [phi.codomain().ainvs() # long time # needs sage.rings.number_field ... for phi in E.isogenies_prime_degree(Integer(37))] [(0, 0, 0, 840*i + 1081, 0), (0, 0, 0, -840*i + 1081, 0)] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_prime_degree_genus_0(E, l=None, minimal_models=True)[source]¶
- Return list of - l-isogenies with domain- E.- INPUT: - E– an elliptic curve
- l– either- Noneor 2, 3, 5, 7, or 13
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) When - lis None a list of all isogenies of degree 2, 3, 5, 7 and 13, otherwise a list of isogenies of the given degree.- Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(l), which automatically calls the appropriate function.- ALGORITHM: - Cremona and Watkins [CW2005]. See also [KT2013], Chapter 4. - EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_0 sage: E = EllipticCurve([0,12]) sage: isogenies_prime_degree_genus_0(E, 5) [] sage: E = EllipticCurve('1450c1') sage: isogenies_prime_degree_genus_0(E) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 + 300*x - 1000 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 5950*x - 182250 over Rational Field] sage: E = EllipticCurve('50a1') sage: isogenies_prime_degree_genus_0(E) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 126*x - 552 over Rational Field, Isogeny of degree 5 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 76*x + 298 over Rational Field] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_0 >>> E = EllipticCurve([Integer(0),Integer(12)]) >>> isogenies_prime_degree_genus_0(E, Integer(5)) [] >>> E = EllipticCurve('1450c1') >>> isogenies_prime_degree_genus_0(E) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 + 300*x - 1000 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 5950*x - 182250 over Rational Field] >>> E = EllipticCurve('50a1') >>> isogenies_prime_degree_genus_0(E) [Isogeny of degree 3 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 126*x - 552 over Rational Field, Isogeny of degree 5 from Elliptic Curve defined by y^2 + x*y + y = x^3 - x - 2 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 - 76*x + 298 over Rational Field] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_prime_degree_genus_plus_0(E, l=None, minimal_models=True)[source]¶
- Return list of - l-isogenies with domain- E.- INPUT: - E– an elliptic curve
- l– either- Noneor 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) When - lis None a list of all isogenies of degree 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71, otherwise a list of isogenies of the given degree.- Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(l), which automatically calls the appropriate function.- ALGORITHM: - See [KT2013], Chapter 5. - EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_plus_0 sage: E = EllipticCurve('121a1') sage: isogenies_prime_degree_genus_plus_0(E, 11) [Isogeny of degree 11 from Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field] sage: E = EllipticCurve([1, 1, 0, -660, -7600]) sage: isogenies_prime_degree_genus_plus_0(E, 17) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 660*x - 7600 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 878710*x + 316677750 over Rational Field] sage: E = EllipticCurve([0, 0, 1, -1862, -30956]) sage: isogenies_prime_degree_genus_plus_0(E, 19) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] sage: # needs sage.rings.number_field sage: K = QuadraticField(-295,'a') sage: a = K.gen() sage: E = EllipticCurve_from_j(-484650135/16777216*a + 4549855725/16777216) sage: isogenies_prime_degree_genus_plus_0(E, 23) [Isogeny of degree 23 from Elliptic Curve defined by y^2 = x^3 + (-14460494784192904095/140737488355328*a+270742665778826768325/140737488355328)*x + (37035998788154488846811217135/590295810358705651712*a-1447451882571839266752561148725/590295810358705651712) over Number Field in a with defining polynomial x^2 + 295 with a = 17.17556403731767?*I to Elliptic Curve defined by y^2 = x^3 + (-5130542435555445498495/140737488355328*a+173233955029127361005925/140737488355328)*x + (-1104699335561165691575396879260545/590295810358705651712*a+3169785826904210171629535101419675/590295810358705651712) over Number Field in a with defining polynomial x^2 + 295 with a = 17.17556403731767?*I] sage: # needs sage.rings.number_field sage: K = QuadraticField(-199,'a') sage: a = K.gen() sage: E = EllipticCurve_from_j(94743000*a + 269989875) sage: isogenies_prime_degree_genus_plus_0(E, 29) [Isogeny of degree 29 from Elliptic Curve defined by y^2 = x^3 + (-153477413215038000*a+5140130723072965125)*x + (297036215130547008455526000*a+2854277047164317800973582250) over Number Field in a with defining polynomial x^2 + 199 with a = 14.106735979665884?*I to Elliptic Curve defined by y^2 = x^3 + (251336161378040805000*a-3071093219933084341875)*x + (-8411064283162168580187643221000*a+34804337770798389546017184785250) over Number Field in a with defining polynomial x^2 + 199 with a = 14.106735979665884?*I] sage: # needs sage.rings.number_field sage: K = QuadraticField(253,'a') sage: a = K.gen() sage: E = EllipticCurve_from_j(208438034112000*a - 3315409892960000) sage: isogenies_prime_degree_genus_plus_0(E, 31) [Isogeny of degree 31 from Elliptic Curve defined by y^2 = x^3 + (4146345122185433034677956608000*a-65951656549965037259634800640000)*x + (-18329111516954473474583425393698245080252416000*a+291542366110383928366510368064204147260129280000) over Number Field in a with defining polynomial x^2 - 253 with a = 15.905973720586867? to Elliptic Curve defined by y^2 = x^3 + (200339763852548615776123686912000*a-3186599019027216904280948275200000)*x + (7443671791411479629112717260182286294850207744000*a-118398847898864757209685951728838895495168655360000) over Number Field in a with defining polynomial x^2 - 253 with a = 15.905973720586867?] sage: E = EllipticCurve_from_j(GF(5)(1)) sage: isogenies_prime_degree_genus_plus_0(E, 41) [Isogeny of degree 41 from Elliptic Curve defined by y^2 = x^3 + x + 2 over Finite Field of size 5 to Elliptic Curve defined by y^2 = x^3 + x + 3 over Finite Field of size 5, Isogeny of degree 41 from Elliptic Curve defined by y^2 = x^3 + x + 2 over Finite Field of size 5 to Elliptic Curve defined by y^2 = x^3 + x + 3 over Finite Field of size 5] sage: # needs sage.rings.number_field sage: K = QuadraticField(5,'a') sage: a = K.gen() sage: E = EllipticCurve_from_j(184068066743177379840*a ....: - 411588709724712960000) sage: isogenies_prime_degree_genus_plus_0(E, 47) # long time [Isogeny of degree 47 from Elliptic Curve defined by y^2 = x^3 + (454562028554080355857852049849975895490560*a-1016431595837124114668689286176511361024000)*x + (-249456798429896080881440540950393713303830363999480904280965120*a+557802358738710443451273320227578156598454035482869042774016000) over Number Field in a with defining polynomial x^2 - 5 with a = 2.236067977499790? to Elliptic Curve defined by y^2 = x^3 + (39533118442361013730577638493616965245992960*a-88398740199669828340617478832005245173760000)*x + (214030321479466610282320528611562368963830105830555363061803253760*a-478586348074220699687616322532666163722004497458452316582576128000) over Number Field in a with defining polynomial x^2 - 5 with a = 2.236067977499790?] sage: K = QuadraticField(-66827,'a') # needs sage.rings.number_field sage: a = K.gen() # needs sage.rings.number_field sage: E = EllipticCurve_from_j(-98669236224000*a + 4401720074240000) # needs sage.rings.number_field sage: isogenies_prime_degree_genus_plus_0(E, 59) # long time (5s) [Isogeny of degree 59 from Elliptic Curve defined by y^2 = x^3 + (2605886146782144762297974784000*a+1893681048912773634944634716160000)*x + (-116918454256410782232296183198067568744071168000*a+17012043538294664027185882358514011304812871680000) over Number Field in a with defining polynomial x^2 + 66827 with a = 258.5091874576221?*I to Elliptic Curve defined by y^2 = x^3 + (-19387084027159786821400775098368000*a-4882059104868154225052787156713472000)*x + (-25659862010101415428713331477227179429538847260672000*a-2596038148441293485938798119003462972840818381946880000) over Number Field in a with defining polynomial x^2 + 66827 with a = 258.5091874576221?*I] sage: E = EllipticCurve_from_j(GF(13)(5)) sage: isogenies_prime_degree_genus_plus_0(E, 71) [Isogeny of degree 71 from Elliptic Curve defined by y^2 = x^3 + x + 4 over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 10*x + 7 over Finite Field of size 13, Isogeny of degree 71 from Elliptic Curve defined by y^2 = x^3 + x + 4 over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 10*x + 7 over Finite Field of size 13] sage: E = EllipticCurve(GF(13), [0,1,1,1,0]) sage: isogenies_prime_degree_genus_plus_0(E) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 10*x + 1 over Finite Field of size 13, Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 4 over Finite Field of size 13, Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 6 over Finite Field of size 13, Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 5*x + 6 over Finite Field of size 13, Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 4 over Finite Field of size 13, Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 5*x + 6 over Finite Field of size 13] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_plus_0 >>> E = EllipticCurve('121a1') >>> isogenies_prime_degree_genus_plus_0(E, Integer(11)) [Isogeny of degree 11 from Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field] >>> E = EllipticCurve([Integer(1), Integer(1), Integer(0), -Integer(660), -Integer(7600)]) >>> isogenies_prime_degree_genus_plus_0(E, Integer(17)) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 660*x - 7600 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 878710*x + 316677750 over Rational Field] >>> E = EllipticCurve([Integer(0), Integer(0), Integer(1), -Integer(1862), -Integer(30956)]) >>> isogenies_prime_degree_genus_plus_0(E, Integer(19)) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] >>> # needs sage.rings.number_field >>> K = QuadraticField(-Integer(295),'a') >>> a = K.gen() >>> E = EllipticCurve_from_j(-Integer(484650135)/Integer(16777216)*a + Integer(4549855725)/Integer(16777216)) >>> isogenies_prime_degree_genus_plus_0(E, Integer(23)) [Isogeny of degree 23 from Elliptic Curve defined by y^2 = x^3 + (-14460494784192904095/140737488355328*a+270742665778826768325/140737488355328)*x + (37035998788154488846811217135/590295810358705651712*a-1447451882571839266752561148725/590295810358705651712) over Number Field in a with defining polynomial x^2 + 295 with a = 17.17556403731767?*I to Elliptic Curve defined by y^2 = x^3 + (-5130542435555445498495/140737488355328*a+173233955029127361005925/140737488355328)*x + (-1104699335561165691575396879260545/590295810358705651712*a+3169785826904210171629535101419675/590295810358705651712) over Number Field in a with defining polynomial x^2 + 295 with a = 17.17556403731767?*I] >>> # needs sage.rings.number_field >>> K = QuadraticField(-Integer(199),'a') >>> a = K.gen() >>> E = EllipticCurve_from_j(Integer(94743000)*a + Integer(269989875)) >>> isogenies_prime_degree_genus_plus_0(E, Integer(29)) [Isogeny of degree 29 from Elliptic Curve defined by y^2 = x^3 + (-153477413215038000*a+5140130723072965125)*x + (297036215130547008455526000*a+2854277047164317800973582250) over Number Field in a with defining polynomial x^2 + 199 with a = 14.106735979665884?*I to Elliptic Curve defined by y^2 = x^3 + (251336161378040805000*a-3071093219933084341875)*x + (-8411064283162168580187643221000*a+34804337770798389546017184785250) over Number Field in a with defining polynomial x^2 + 199 with a = 14.106735979665884?*I] >>> # needs sage.rings.number_field >>> K = QuadraticField(Integer(253),'a') >>> a = K.gen() >>> E = EllipticCurve_from_j(Integer(208438034112000)*a - Integer(3315409892960000)) >>> isogenies_prime_degree_genus_plus_0(E, Integer(31)) [Isogeny of degree 31 from Elliptic Curve defined by y^2 = x^3 + (4146345122185433034677956608000*a-65951656549965037259634800640000)*x + (-18329111516954473474583425393698245080252416000*a+291542366110383928366510368064204147260129280000) over Number Field in a with defining polynomial x^2 - 253 with a = 15.905973720586867? to Elliptic Curve defined by y^2 = x^3 + (200339763852548615776123686912000*a-3186599019027216904280948275200000)*x + (7443671791411479629112717260182286294850207744000*a-118398847898864757209685951728838895495168655360000) over Number Field in a with defining polynomial x^2 - 253 with a = 15.905973720586867?] >>> E = EllipticCurve_from_j(GF(Integer(5))(Integer(1))) >>> isogenies_prime_degree_genus_plus_0(E, Integer(41)) [Isogeny of degree 41 from Elliptic Curve defined by y^2 = x^3 + x + 2 over Finite Field of size 5 to Elliptic Curve defined by y^2 = x^3 + x + 3 over Finite Field of size 5, Isogeny of degree 41 from Elliptic Curve defined by y^2 = x^3 + x + 2 over Finite Field of size 5 to Elliptic Curve defined by y^2 = x^3 + x + 3 over Finite Field of size 5] >>> # needs sage.rings.number_field >>> K = QuadraticField(Integer(5),'a') >>> a = K.gen() >>> E = EllipticCurve_from_j(Integer(184068066743177379840)*a ... - Integer(411588709724712960000)) >>> isogenies_prime_degree_genus_plus_0(E, Integer(47)) # long time [Isogeny of degree 47 from Elliptic Curve defined by y^2 = x^3 + (454562028554080355857852049849975895490560*a-1016431595837124114668689286176511361024000)*x + (-249456798429896080881440540950393713303830363999480904280965120*a+557802358738710443451273320227578156598454035482869042774016000) over Number Field in a with defining polynomial x^2 - 5 with a = 2.236067977499790? to Elliptic Curve defined by y^2 = x^3 + (39533118442361013730577638493616965245992960*a-88398740199669828340617478832005245173760000)*x + (214030321479466610282320528611562368963830105830555363061803253760*a-478586348074220699687616322532666163722004497458452316582576128000) over Number Field in a with defining polynomial x^2 - 5 with a = 2.236067977499790?] >>> K = QuadraticField(-Integer(66827),'a') # needs sage.rings.number_field >>> a = K.gen() # needs sage.rings.number_field >>> E = EllipticCurve_from_j(-Integer(98669236224000)*a + Integer(4401720074240000)) # needs sage.rings.number_field >>> isogenies_prime_degree_genus_plus_0(E, Integer(59)) # long time (5s) [Isogeny of degree 59 from Elliptic Curve defined by y^2 = x^3 + (2605886146782144762297974784000*a+1893681048912773634944634716160000)*x + (-116918454256410782232296183198067568744071168000*a+17012043538294664027185882358514011304812871680000) over Number Field in a with defining polynomial x^2 + 66827 with a = 258.5091874576221?*I to Elliptic Curve defined by y^2 = x^3 + (-19387084027159786821400775098368000*a-4882059104868154225052787156713472000)*x + (-25659862010101415428713331477227179429538847260672000*a-2596038148441293485938798119003462972840818381946880000) over Number Field in a with defining polynomial x^2 + 66827 with a = 258.5091874576221?*I] >>> E = EllipticCurve_from_j(GF(Integer(13))(Integer(5))) >>> isogenies_prime_degree_genus_plus_0(E, Integer(71)) [Isogeny of degree 71 from Elliptic Curve defined by y^2 = x^3 + x + 4 over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 10*x + 7 over Finite Field of size 13, Isogeny of degree 71 from Elliptic Curve defined by y^2 = x^3 + x + 4 over Finite Field of size 13 to Elliptic Curve defined by y^2 = x^3 + 10*x + 7 over Finite Field of size 13] >>> E = EllipticCurve(GF(Integer(13)), [Integer(0),Integer(1),Integer(1),Integer(1),Integer(0)]) >>> isogenies_prime_degree_genus_plus_0(E) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 10*x + 1 over Finite Field of size 13, Isogeny of degree 17 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 4 over Finite Field of size 13, Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 6 over Finite Field of size 13, Isogeny of degree 29 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 5*x + 6 over Finite Field of size 13, Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 12*x + 4 over Finite Field of size 13, Isogeny of degree 41 from Elliptic Curve defined by y^2 + y = x^3 + x^2 + x over Finite Field of size 13 to Elliptic Curve defined by y^2 + y = x^3 + x^2 + 5*x + 6 over Finite Field of size 13] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_prime_degree_genus_plus_0_j0(E, l, minimal_models=True)[source]¶
- Return a list of hyperelliptic - l-isogenies with domain- Ewhen \(j(E)=0\).- INPUT: - E– an elliptic curve with j-invariant 0
- l– 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) a list of all isogenies of degree 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71. - Note - This implementation requires that the characteristic is not 2, 3 or - l.- Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(l).- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_plus_0_j0 sage: u = polygen(QQ) sage: K.<a> = NumberField(u^4 + 228*u^3 + 486*u^2 - 540*u + 225) # needs sage.rings.number_field sage: E = EllipticCurve(K, [0, -121/5*a^3 - 20691/5*a^2 - 29403/5*a + 3267]) # needs sage.rings.number_field sage: isogenies_prime_degree_genus_plus_0_j0(E, 11) # needs sage.rings.number_field [Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-121/5*a^3-20691/5*a^2-29403/5*a+3267) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225 to Elliptic Curve defined by y^2 = x^3 + (-44286*a^2+178596*a-32670)*x + (-17863351/5*a^3+125072739/5*a^2-74353653/5*a-682803) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225, Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-121/5*a^3-20691/5*a^2-29403/5*a+3267) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225 to Elliptic Curve defined by y^2 = x^3 + (-3267*a^3-740157*a^2+600039*a-277695)*x + (-17863351/5*a^3-4171554981/5*a^2+3769467867/5*a-272366523) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225] sage: E = EllipticCurve(GF(5^6,'a'),[0,1]) sage: isogenies_prime_degree_genus_plus_0_j0(E,17) [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_plus_0_j0 >>> u = polygen(QQ) >>> K = NumberField(u**Integer(4) + Integer(228)*u**Integer(3) + Integer(486)*u**Integer(2) - Integer(540)*u + Integer(225), names=('a',)); (a,) = K._first_ngens(1)# needs sage.rings.number_field >>> E = EllipticCurve(K, [Integer(0), -Integer(121)/Integer(5)*a**Integer(3) - Integer(20691)/Integer(5)*a**Integer(2) - Integer(29403)/Integer(5)*a + Integer(3267)]) # needs sage.rings.number_field >>> isogenies_prime_degree_genus_plus_0_j0(E, Integer(11)) # needs sage.rings.number_field [Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-121/5*a^3-20691/5*a^2-29403/5*a+3267) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225 to Elliptic Curve defined by y^2 = x^3 + (-44286*a^2+178596*a-32670)*x + (-17863351/5*a^3+125072739/5*a^2-74353653/5*a-682803) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225, Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-121/5*a^3-20691/5*a^2-29403/5*a+3267) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225 to Elliptic Curve defined by y^2 = x^3 + (-3267*a^3-740157*a^2+600039*a-277695)*x + (-17863351/5*a^3-4171554981/5*a^2+3769467867/5*a-272366523) over Number Field in a with defining polynomial x^4 + 228*x^3 + 486*x^2 - 540*x + 225] >>> E = EllipticCurve(GF(Integer(5)**Integer(6),'a'),[Integer(0),Integer(1)]) >>> isogenies_prime_degree_genus_plus_0_j0(E,Integer(17)) [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + 1 over Finite Field in a of size 5^6 to Elliptic Curve defined by y^2 = x^3 + 2 over Finite Field in a of size 5^6] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_prime_degree_genus_plus_0_j1728(E, l, minimal_models=True)[source]¶
- Return a list of - l-isogenies with domain- Ewhen \(j(E)=1728\).- INPUT: - E– an elliptic curve with j-invariant 1728
- l– 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71
- minimal_models– boolean (default:- True); if- True, all curves computed will be minimal or semi-minimal models. Over fields of larger degree it can be expensive to compute these so set to- False.
 - OUTPUT: - (list) a list of all isogenies of degree 11, 17, 19, 23, 29, 31, 41, 47, 59, or 71. - Note - This implementation requires that the characteristic is not 2, 3 or - l.- Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(l).- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_plus_0_j1728 sage: # needs sage.rings.number_field sage: u = polygen(QQ) sage: K.<a> = NumberField(u^6 - 522*u^5 - 10017*u^4 ....: + 2484*u^3 - 5265*u^2 + 12150*u - 5103) sage: E = EllipticCurve(K, [-75295/1335852*a^5 + 13066735/445284*a^4 ....: + 44903485/74214*a^3 + 17086861/24738*a^2 ....: + 11373021/16492*a - 1246245/2356, 0]) sage: isogenies_prime_degree_genus_plus_0_j1728(E, 11) [Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-75295/1335852*a^5+13066735/445284*a^4+44903485/74214*a^3+17086861/24738*a^2+11373021/16492*a-1246245/2356)*x over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103 to Elliptic Curve defined by y^2 = x^3 + (9110695/1335852*a^5-1581074935/445284*a^4-5433321685/74214*a^3-3163057249/24738*a^2+1569269691/16492*a+73825125/2356)*x + (-3540460*a^3+30522492*a^2-7043652*a-5031180) over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103, Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-75295/1335852*a^5+13066735/445284*a^4+44903485/74214*a^3+17086861/24738*a^2+11373021/16492*a-1246245/2356)*x over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103 to Elliptic Curve defined by y^2 = x^3 + (9110695/1335852*a^5-1581074935/445284*a^4-5433321685/74214*a^3-3163057249/24738*a^2+1569269691/16492*a+73825125/2356)*x + (3540460*a^3-30522492*a^2+7043652*a+5031180) over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103] sage: i = QuadraticField(-1,'i').gen() sage: E = EllipticCurve([-1 - 2*i, 0]) sage: isogenies_prime_degree_genus_plus_0_j1728(E, 17) [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + (-2*i-1)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + (-82*i-641)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + (-2*i-1)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + (-562*i+319)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I] sage: Emin = E.global_minimal_model() sage: [(p, len(isogenies_prime_degree_genus_plus_0_j1728(Emin, p))) ....: for p in [17, 29, 41]] [(17, 2), (29, 2), (41, 2)] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_prime_degree_genus_plus_0_j1728 >>> # needs sage.rings.number_field >>> u = polygen(QQ) >>> K = NumberField(u**Integer(6) - Integer(522)*u**Integer(5) - Integer(10017)*u**Integer(4) ... + Integer(2484)*u**Integer(3) - Integer(5265)*u**Integer(2) + Integer(12150)*u - Integer(5103), names=('a',)); (a,) = K._first_ngens(1) >>> E = EllipticCurve(K, [-Integer(75295)/Integer(1335852)*a**Integer(5) + Integer(13066735)/Integer(445284)*a**Integer(4) ... + Integer(44903485)/Integer(74214)*a**Integer(3) + Integer(17086861)/Integer(24738)*a**Integer(2) ... + Integer(11373021)/Integer(16492)*a - Integer(1246245)/Integer(2356), Integer(0)]) >>> isogenies_prime_degree_genus_plus_0_j1728(E, Integer(11)) [Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-75295/1335852*a^5+13066735/445284*a^4+44903485/74214*a^3+17086861/24738*a^2+11373021/16492*a-1246245/2356)*x over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103 to Elliptic Curve defined by y^2 = x^3 + (9110695/1335852*a^5-1581074935/445284*a^4-5433321685/74214*a^3-3163057249/24738*a^2+1569269691/16492*a+73825125/2356)*x + (-3540460*a^3+30522492*a^2-7043652*a-5031180) over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103, Isogeny of degree 11 from Elliptic Curve defined by y^2 = x^3 + (-75295/1335852*a^5+13066735/445284*a^4+44903485/74214*a^3+17086861/24738*a^2+11373021/16492*a-1246245/2356)*x over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103 to Elliptic Curve defined by y^2 = x^3 + (9110695/1335852*a^5-1581074935/445284*a^4-5433321685/74214*a^3-3163057249/24738*a^2+1569269691/16492*a+73825125/2356)*x + (3540460*a^3-30522492*a^2+7043652*a+5031180) over Number Field in a with defining polynomial x^6 - 522*x^5 - 10017*x^4 + 2484*x^3 - 5265*x^2 + 12150*x - 5103] >>> i = QuadraticField(-Integer(1),'i').gen() >>> E = EllipticCurve([-Integer(1) - Integer(2)*i, Integer(0)]) >>> isogenies_prime_degree_genus_plus_0_j1728(E, Integer(17)) [Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + (-2*i-1)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + (-82*i-641)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I, Isogeny of degree 17 from Elliptic Curve defined by y^2 = x^3 + (-2*i-1)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I to Elliptic Curve defined by y^2 = x^3 + (-562*i+319)*x over Number Field in i with defining polynomial x^2 + 1 with i = 1*I] >>> Emin = E.global_minimal_model() >>> [(p, len(isogenies_prime_degree_genus_plus_0_j1728(Emin, p))) ... for p in [Integer(17), Integer(29), Integer(41)]] [(17, 2), (29, 2), (41, 2)] 
- sage.schemes.elliptic_curves.isogeny_small_degree.isogenies_sporadic_Q(E, l=None, minimal_models=True)[source]¶
- Return a list of sporadic l-isogenies from E (l = 11, 17, 19, 37, 43, 67 or 163). Only for elliptic curves over \(\QQ\). - INPUT: - E– an elliptic curve defined over \(\QQ\)
- l– either- Noneor a prime number
 - OUTPUT: - (list) If - lis None, a list of all isogenies with domain- Eand of degree 11, 17, 19, 37, 43, 67 or 163; otherwise a list of isogenies of the given degree.- Note - This function would normally be invoked indirectly via - E.isogenies_prime_degree(l), which automatically calls the appropriate function.- EXAMPLES: - sage: from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_sporadic_Q sage: E = EllipticCurve('121a1') sage: isogenies_sporadic_Q(E, 11) [Isogeny of degree 11 from Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field] sage: isogenies_sporadic_Q(E, 13) [] sage: isogenies_sporadic_Q(E, 17) [] sage: isogenies_sporadic_Q(E) [Isogeny of degree 11 from Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field] sage: E = EllipticCurve([1, 1, 0, -660, -7600]) sage: isogenies_sporadic_Q(E, 17) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 660*x - 7600 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 878710*x + 316677750 over Rational Field] sage: isogenies_sporadic_Q(E) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 660*x - 7600 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 878710*x + 316677750 over Rational Field] sage: isogenies_sporadic_Q(E, 11) [] sage: E = EllipticCurve([0, 0, 1, -1862, -30956]) sage: isogenies_sporadic_Q(E, 11) [] sage: isogenies_sporadic_Q(E, 19) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] sage: isogenies_sporadic_Q(E) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] sage: E = EllipticCurve([0, -1, 0, -6288, 211072]) sage: E.conductor() 19600 sage: isogenies_sporadic_Q(E,37) [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 - x^2 - 6288*x + 211072 over Rational Field to Elliptic Curve defined by y^2 = x^3 - x^2 - 163137088*x - 801950801728 over Rational Field] sage: E = EllipticCurve([1, 1, 0, -25178045, 48616918750]) sage: E.conductor() 148225 sage: isogenies_sporadic_Q(E,37) [Isogeny of degree 37 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 25178045*x + 48616918750 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 970*x - 13075 over Rational Field] sage: E = EllipticCurve([-3440, 77658]) sage: E.conductor() 118336 sage: isogenies_sporadic_Q(E,43) [Isogeny of degree 43 from Elliptic Curve defined by y^2 = x^3 - 3440*x + 77658 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 6360560*x - 6174354606 over Rational Field] sage: E = EllipticCurve([-29480, -1948226]) sage: E.conductor() 287296 sage: isogenies_sporadic_Q(E,67) [Isogeny of degree 67 from Elliptic Curve defined by y^2 = x^3 - 29480*x - 1948226 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 132335720*x + 585954296438 over Rational Field] sage: E = EllipticCurve([-34790720, -78984748304]) sage: E.conductor() 425104 sage: isogenies_sporadic_Q(E,163) [Isogeny of degree 163 from Elliptic Curve defined by y^2 = x^3 - 34790720*x - 78984748304 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 924354639680*x + 342062961763303088 over Rational Field] - >>> from sage.all import * >>> from sage.schemes.elliptic_curves.isogeny_small_degree import isogenies_sporadic_Q >>> E = EllipticCurve('121a1') >>> isogenies_sporadic_Q(E, Integer(11)) [Isogeny of degree 11 from Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field] >>> isogenies_sporadic_Q(E, Integer(13)) [] >>> isogenies_sporadic_Q(E, Integer(17)) [] >>> isogenies_sporadic_Q(E) [Isogeny of degree 11 from Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 30*x - 76 over Rational Field to Elliptic Curve defined by y^2 + x*y + y = x^3 + x^2 - 305*x + 7888 over Rational Field] >>> E = EllipticCurve([Integer(1), Integer(1), Integer(0), -Integer(660), -Integer(7600)]) >>> isogenies_sporadic_Q(E, Integer(17)) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 660*x - 7600 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 878710*x + 316677750 over Rational Field] >>> isogenies_sporadic_Q(E) [Isogeny of degree 17 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 660*x - 7600 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 878710*x + 316677750 over Rational Field] >>> isogenies_sporadic_Q(E, Integer(11)) [] >>> E = EllipticCurve([Integer(0), Integer(0), Integer(1), -Integer(1862), -Integer(30956)]) >>> isogenies_sporadic_Q(E, Integer(11)) [] >>> isogenies_sporadic_Q(E, Integer(19)) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] >>> isogenies_sporadic_Q(E) [Isogeny of degree 19 from Elliptic Curve defined by y^2 + y = x^3 - 1862*x - 30956 over Rational Field to Elliptic Curve defined by y^2 + y = x^3 - 672182*x + 212325489 over Rational Field] >>> E = EllipticCurve([Integer(0), -Integer(1), Integer(0), -Integer(6288), Integer(211072)]) >>> E.conductor() 19600 >>> isogenies_sporadic_Q(E,Integer(37)) [Isogeny of degree 37 from Elliptic Curve defined by y^2 = x^3 - x^2 - 6288*x + 211072 over Rational Field to Elliptic Curve defined by y^2 = x^3 - x^2 - 163137088*x - 801950801728 over Rational Field] >>> E = EllipticCurve([Integer(1), Integer(1), Integer(0), -Integer(25178045), Integer(48616918750)]) >>> E.conductor() 148225 >>> isogenies_sporadic_Q(E,Integer(37)) [Isogeny of degree 37 from Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 25178045*x + 48616918750 over Rational Field to Elliptic Curve defined by y^2 + x*y = x^3 + x^2 - 970*x - 13075 over Rational Field] >>> E = EllipticCurve([-Integer(3440), Integer(77658)]) >>> E.conductor() 118336 >>> isogenies_sporadic_Q(E,Integer(43)) [Isogeny of degree 43 from Elliptic Curve defined by y^2 = x^3 - 3440*x + 77658 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 6360560*x - 6174354606 over Rational Field] >>> E = EllipticCurve([-Integer(29480), -Integer(1948226)]) >>> E.conductor() 287296 >>> isogenies_sporadic_Q(E,Integer(67)) [Isogeny of degree 67 from Elliptic Curve defined by y^2 = x^3 - 29480*x - 1948226 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 132335720*x + 585954296438 over Rational Field] >>> E = EllipticCurve([-Integer(34790720), -Integer(78984748304)]) >>> E.conductor() 425104 >>> isogenies_sporadic_Q(E,Integer(163)) [Isogeny of degree 163 from Elliptic Curve defined by y^2 = x^3 - 34790720*x - 78984748304 over Rational Field to Elliptic Curve defined by y^2 = x^3 - 924354639680*x + 342062961763303088 over Rational Field]