Hyperelliptic curves of genus 2 over a general ring¶
- class sage.schemes.hyperelliptic_curves.hyperelliptic_g2.HyperellipticCurve_g2(PP, f, h=None, names=None, genus=None)[source]¶
Bases:
HyperellipticCurve_generic
- absolute_igusa_invariants_kohel()[source]¶
Return the three absolute Igusa invariants used by Kohel [KohECHIDNA].
EXAMPLES:
sage: R.<x> = QQ[] sage: HyperellipticCurve(x^5 - 1).absolute_igusa_invariants_kohel() (0, 0, 0) sage: HyperellipticCurve(x^5 - x + 1, x^2).absolute_igusa_invariants_kohel() (-1030567/178769, 259686400/178769, 20806400/178769) sage: HyperellipticCurve((x^5 - x + 1)(3*x + 1), (x^2)(3*x + 1)).absolute_igusa_invariants_kohel() (-1030567/178769, 259686400/178769, 20806400/178769)
>>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> HyperellipticCurve(x**Integer(5) - Integer(1)).absolute_igusa_invariants_kohel() (0, 0, 0) >>> HyperellipticCurve(x**Integer(5) - x + Integer(1), x**Integer(2)).absolute_igusa_invariants_kohel() (-1030567/178769, 259686400/178769, 20806400/178769) >>> HyperellipticCurve((x**Integer(5) - x + Integer(1))(Integer(3)*x + Integer(1)), (x**Integer(2))(Integer(3)*x + Integer(1))).absolute_igusa_invariants_kohel() (-1030567/178769, 259686400/178769, 20806400/178769)
R.<x> = QQ[] HyperellipticCurve(x^5 - 1).absolute_igusa_invariants_kohel() HyperellipticCurve(x^5 - x + 1, x^2).absolute_igusa_invariants_kohel() HyperellipticCurve((x^5 - x + 1)(3*x + 1), (x^2)(3*x + 1)).absolute_igusa_invariants_kohel()
- absolute_igusa_invariants_wamelen()[source]¶
Return the three absolute Igusa invariants used by van Wamelen [Wam1999].
EXAMPLES:
sage: R.<x> = QQ[] sage: HyperellipticCurve(x^5 - 1).absolute_igusa_invariants_wamelen() (0, 0, 0) sage: HyperellipticCurve((x^5 - 1)(x - 2), (x^2)(x - 2)).absolute_igusa_invariants_wamelen() (0, 0, 0)
>>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> HyperellipticCurve(x**Integer(5) - Integer(1)).absolute_igusa_invariants_wamelen() (0, 0, 0) >>> HyperellipticCurve((x**Integer(5) - Integer(1))(x - Integer(2)), (x**Integer(2))(x - Integer(2))).absolute_igusa_invariants_wamelen() (0, 0, 0)
R.<x> = QQ[] HyperellipticCurve(x^5 - 1).absolute_igusa_invariants_wamelen() HyperellipticCurve((x^5 - 1)(x - 2), (x^2)(x - 2)).absolute_igusa_invariants_wamelen()
- clebsch_invariants()[source]¶
Return the Clebsch invariants \((A, B, C, D)\) of Mestre, p 317, [Mes1991].
EXAMPLES:
sage: R.<x> = QQ[] sage: f = x^5 - x^4 + 3 sage: HyperellipticCurve(f).clebsch_invariants() (0, -2048/375, -4096/25, -4881645568/84375) sage: HyperellipticCurve(f(2*x)).clebsch_invariants() (0, -8388608/375, -1073741824/25, -5241627016305836032/84375) sage: HyperellipticCurve(f, x).clebsch_invariants() (-8/15, 17504/5625, -23162896/140625, -420832861216768/7119140625) sage: HyperellipticCurve(f(2*x), 2*x).clebsch_invariants() (-512/15, 71696384/5625, -6072014209024/140625, -451865844002031331704832/7119140625)
>>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> f = x**Integer(5) - x**Integer(4) + Integer(3) >>> HyperellipticCurve(f).clebsch_invariants() (0, -2048/375, -4096/25, -4881645568/84375) >>> HyperellipticCurve(f(Integer(2)*x)).clebsch_invariants() (0, -8388608/375, -1073741824/25, -5241627016305836032/84375) >>> HyperellipticCurve(f, x).clebsch_invariants() (-8/15, 17504/5625, -23162896/140625, -420832861216768/7119140625) >>> HyperellipticCurve(f(Integer(2)*x), Integer(2)*x).clebsch_invariants() (-512/15, 71696384/5625, -6072014209024/140625, -451865844002031331704832/7119140625)
R.<x> = QQ[] f = x^5 - x^4 + 3 HyperellipticCurve(f).clebsch_invariants() HyperellipticCurve(f(2*x)).clebsch_invariants() HyperellipticCurve(f, x).clebsch_invariants() HyperellipticCurve(f(2*x), 2*x).clebsch_invariants()
- igusa_clebsch_invariants()[source]¶
Return the Igusa-Clebsch invariants \(I_2, I_4, I_6, I_{10}\) of Igusa and Clebsch [IJ1960].
EXAMPLES:
sage: R.<x> = QQ[] sage: f = x^5 - x + 2 sage: HyperellipticCurve(f).igusa_clebsch_invariants() (-640, -20480, 1310720, 52160364544) sage: HyperellipticCurve(f(2*x)).igusa_clebsch_invariants() (-40960, -83886080, 343597383680, 56006764965979488256) sage: HyperellipticCurve(f, x).igusa_clebsch_invariants() (-640, 17920, -1966656, 52409511936) sage: HyperellipticCurve(f(2*x), 2*x).igusa_clebsch_invariants() (-40960, 73400320, -515547070464, 56274284941110411264)
>>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> f = x**Integer(5) - x + Integer(2) >>> HyperellipticCurve(f).igusa_clebsch_invariants() (-640, -20480, 1310720, 52160364544) >>> HyperellipticCurve(f(Integer(2)*x)).igusa_clebsch_invariants() (-40960, -83886080, 343597383680, 56006764965979488256) >>> HyperellipticCurve(f, x).igusa_clebsch_invariants() (-640, 17920, -1966656, 52409511936) >>> HyperellipticCurve(f(Integer(2)*x), Integer(2)*x).igusa_clebsch_invariants() (-40960, 73400320, -515547070464, 56274284941110411264)
R.<x> = QQ[] f = x^5 - x + 2 HyperellipticCurve(f).igusa_clebsch_invariants() HyperellipticCurve(f(2*x)).igusa_clebsch_invariants() HyperellipticCurve(f, x).igusa_clebsch_invariants() HyperellipticCurve(f(2*x), 2*x).igusa_clebsch_invariants()
- is_odd_degree()[source]¶
Return
True
if the curve is an odd degree model.EXAMPLES:
sage: R.<x> = QQ[] sage: f = x^5 - x^4 + 3 sage: HyperellipticCurve(f).is_odd_degree() True
>>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> f = x**Integer(5) - x**Integer(4) + Integer(3) >>> HyperellipticCurve(f).is_odd_degree() True
R.<x> = QQ[] f = x^5 - x^4 + 3 HyperellipticCurve(f).is_odd_degree()
- jacobian()[source]¶
Return the Jacobian of the hyperelliptic curve.
EXAMPLES:
sage: R.<x> = QQ[] sage: f = x^5 - x^4 + 3 sage: HyperellipticCurve(f).jacobian() Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^5 - x^4 + 3
>>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> f = x**Integer(5) - x**Integer(4) + Integer(3) >>> HyperellipticCurve(f).jacobian() Jacobian of Hyperelliptic Curve over Rational Field defined by y^2 = x^5 - x^4 + 3
R.<x> = QQ[] f = x^5 - x^4 + 3 HyperellipticCurve(f).jacobian()
- kummer_morphism()[source]¶
Return the morphism of an odd degree hyperelliptic curve to the Kummer surface of its Jacobian.
This could be extended to an even degree model if a prescribed embedding in its Jacobian is fixed.
EXAMPLES:
sage: R.<x> = QQ[] sage: f = x^5 - x^4 + 3 sage: HyperellipticCurve(f).kummer_morphism() # not tested
>>> from sage.all import * >>> R = QQ['x']; (x,) = R._first_ngens(1) >>> f = x**Integer(5) - x**Integer(4) + Integer(3) >>> HyperellipticCurve(f).kummer_morphism() # not tested
R.<x> = QQ[] f = x^5 - x^4 + 3 HyperellipticCurve(f).kummer_morphism() # not tested