You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We implement an `EllipticCurveHom` child class
`EllipticCurveHom_frobenius` encapsulating purely inseparable
''Frobenius isogenies''. As every isogeny decomposes into a separable
and a purely inseparable part, we can (together with
`EllipticCurveHom_composite`) now express any isogeny between two
elliptic curves in Sage.
One immediate application (also implemented in the patch) is that
separable isogenies of degree divisible by the characteristic now have a
working `.dual()` method. Other than that, changes to the existing
codebase are kept minimal.
This is one of the items on the "isogeny wish-list" #7368. It is also an
important step towards implementing endomorphism rings later; cf.
comment:3:ticket:32826.
Diff without the dependency: https://git.sagemath.org/sage.git/diff?id2=79ae468&id=e953939d23995c0c26964dc969fa
69cea52ee1c4
URL: https://trac.sagemath.org/33915
Reported by: lorenz
Ticket author(s): Lorenz Panny, Mickaël Montessinos
Reviewer(s): John Cremona
From: Elliptic Curve defined by y^2 = x^3 + (32*z2+67)*x + (24*z2+37) over Finite Field in z2 of size 71^2
2965
+
To: Elliptic Curve defined by y^2 = x^3 + (41*z2+56)*x + (18*z2+42) over Finite Field in z2 of size 71^2
2966
+
sage: E.isogeny(E.lift_x(0)).dual()
2967
+
Composite morphism of degree 213 = 71*3:
2968
+
From: Elliptic Curve defined by y^2 = x^3 + (58*z2+31)*x + (34*z2+58) over Finite Field in z2 of size 71^2
2969
+
To: Elliptic Curve defined by y^2 = x^3 + (41*z2+56)*x + (18*z2+42) over Finite Field in z2 of size 71^2
2970
+
2971
+
...even if pre- or post-isomorphisms are present::
2972
+
2973
+
sage: from sage.schemes.elliptic_curves.weierstrass_morphism import WeierstrassIsomorphism
2974
+
sage: phi = E.isogeny(E.lift_x(0))
2975
+
sage: pre = ~WeierstrassIsomorphism(phi.domain(), (z2,2,3,4))
2976
+
sage: post = WeierstrassIsomorphism(phi.codomain(), (5,6,7,8))
2977
+
sage: phi = post * phi * pre
2978
+
sage: phi.dual()
2979
+
Composite morphism of degree 213 = 71*3:
2980
+
From: Elliptic Curve defined by y^2 + 17*x*y + 45*y = x^3 + 30*x^2 + (6*z2+64)*x + (48*z2+65) over Finite Field in z2 of size 71^2
2981
+
To: Elliptic Curve defined by y^2 + (60*z2+22)*x*y + (69*z2+37)*y = x^3 + (32*z2+48)*x^2 + (19*z2+58)*x + (56*z2+22) over Finite Field in z2 of size 71^2
0 commit comments