Superelliptic curves

A superelliptic curve is a smooth projective curve over a field \(K\) which is given generically by an equation of the form

\[Y:\; y^n = f(x),\]

where \(n\geq 2\) and \(f\in K[x]\) is a polynomial over \(K\), of degree at least \(2\) (and of degree at least \(3\) if \(n=2\)). Let

\[f = c\cdot \prod_i f_i^{m_i}\]

be the prime factorization of \(f\) (where \(c\in K^\times\) and the \(f_i\) are monic, irreducible and pairwise distinct). We assume that the gcd of the \(m_i\) is prime to \(n\). This means that the defining equation is irreducible and the curve \(Y\) can be considered as a Kummer cover of \(X=\mathbb{P}^1_K\) of degree \(n\).

In this module we define a class SuperellipticCurve which is a subclasses of SmoothProjectiveCurve and whose objects represent superelliptic curves as above.

AUTHORS:

  • Stefan Wewers (2018-5-18): initial version

EXAMPLES:

sage: from mclf import *
sage: R.<x> = QQ[]
sage: Y = SuperellipticCurve(x^4-1, 3)
sage: Y
superelliptic curve y^3 = x^4 - 1 over Rational Field
sage: Y.genus()
3
sage: Y.kummer_gen()
y
sage: Y.polynomial()
x^4 - 1
sage: Y.covering_degree()
3

Todo

  • override those methods of SmoothProjectiveCurve where we have a faster algorithm in the superelliptic cases
class mclf.curves.superelliptic_curves.SuperellipticCurve(f, n, name='y')

Bases: mclf.curves.smooth_projective_curves.SmoothProjectiveCurve

Return the superelliptic curve with equation \(y^n=f(x)\).

INPUT:

  • f – a nonconstant polynomial over a field \(K\)
  • n – an integer \(\geq 2\)
  • name – a string (default ‘y’)

OUTPUT:

the smooth projective curve \(Y\) over \(K\) given generically by the equation

\[Y:\; y^n = f(x).\]

This means that the function field of \(Y\) is an extension of the rational function field in \(x\) generated by an element \(y\) (the Kummer generator) satisfying the above equation.

It is assumed that the gcd of the multiplicities of the irreducible factors of \(f\) is prime to \(n\). Thus, the curve \(Y\) is a cover of \(\mathbb{P}^1_K\) of degree \(n\). If this condition is not met, an error is raised. name is the name given to the Kummer generator \(y\).

covering_degree()

Return the covering degree.

If the curve is given by the equation \(y^n =f(x)\) then the covering degree degree is \(n\).

kummer_gen()

Return the Kummer generator of this superelliptic curve.

If the curve is given by the equation \(y^n =f(x)\) then the Kummer generator is the element \(y\) of the the function field.

polynomial()

Return the polynomial defining this curve.

If the curve is given by the equation \(y^n =f(x)\) then \(f\) is this polynomial.