Cyclic covers curves over a general ring#

EXAMPLES:

sage: ZZx.<x> = ZZ[]
sage: C = CyclicCover(5, x^5 + x + 1); C
Cyclic Cover of P^1 over Integer Ring defined by y^5 = x^5 + x + 1
sage: C.genus()
6
sage: D = C.projective_closure(); D
Projective Plane Curve over Integer Ring defined by x0^5 + x0^4*x1 + x1^5 - x2^5
sage: D.change_ring(QQ).genus()
6
sage: C.change_ring(GF(5))
Traceback (most recent call last):
...
ValueError: As the characteristic divides the order of the cover, this model is not smooth.

sage: GF7x.<x> = GF(7)[]
sage: C = CyclicCover(3, x^9 + x + 1)
sage: C
Cyclic Cover of P^1 over Finite Field of size 7 defined by y^3 = x^9 + x + 1
sage: C.genus()
7
sage: C.projective_closure()
Traceback (most recent call last):
...
NotImplementedError: Weighted Projective Space is not implemented
>>> from sage.all import *
>>> ZZx = ZZ['x']; (x,) = ZZx._first_ngens(1)
>>> C = CyclicCover(Integer(5), x**Integer(5) + x + Integer(1)); C
Cyclic Cover of P^1 over Integer Ring defined by y^5 = x^5 + x + 1
>>> C.genus()
6
>>> D = C.projective_closure(); D
Projective Plane Curve over Integer Ring defined by x0^5 + x0^4*x1 + x1^5 - x2^5
>>> D.change_ring(QQ).genus()
6
>>> C.change_ring(GF(Integer(5)))
Traceback (most recent call last):
...
ValueError: As the characteristic divides the order of the cover, this model is not smooth.

>>> GF7x = GF(Integer(7))['x']; (x,) = GF7x._first_ngens(1)
>>> C = CyclicCover(Integer(3), x**Integer(9) + x + Integer(1))
>>> C
Cyclic Cover of P^1 over Finite Field of size 7 defined by y^3 = x^9 + x + 1
>>> C.genus()
7
>>> C.projective_closure()
Traceback (most recent call last):
...
NotImplementedError: Weighted Projective Space is not implemented
class sage.schemes.cyclic_covers.cycliccover_generic.CyclicCover_generic(AA, r, f, names=None)[source]#

Bases: AffinePlaneCurve

Cyclic covers over a general ring

INPUT:

  • A – ambient affine space

  • r – degree of the cover

  • f – univariate polynomial

  • names (default: ["x","y"]) – names for the coordinate functions

base_extend(R)[source]#

Return this CyclicCover over a new base ring R.

EXAMPLES:

sage: ZZx.<x> = ZZ[]
sage: C = CyclicCover(5, x^5 + x + 1)
sage: C.change_ring(GF(5))
Traceback (most recent call last):
...
ValueError: As the characteristic divides the order of the cover,
this model is not smooth.
sage: C.change_ring(GF(3))
Traceback (most recent call last):
...
ValueError: Not a smooth Cyclic Cover of P^1: singularity in the
provided affine patch.
sage: C.change_ring(GF(17))
Cyclic Cover of P^1 over Finite Field of size 17 defined by y^5 = x^5 + x + 1
>>> from sage.all import *
>>> ZZx = ZZ['x']; (x,) = ZZx._first_ngens(1)
>>> C = CyclicCover(Integer(5), x**Integer(5) + x + Integer(1))
>>> C.change_ring(GF(Integer(5)))
Traceback (most recent call last):
...
ValueError: As the characteristic divides the order of the cover,
this model is not smooth.
>>> C.change_ring(GF(Integer(3)))
Traceback (most recent call last):
...
ValueError: Not a smooth Cyclic Cover of P^1: singularity in the
provided affine patch.
>>> C.change_ring(GF(Integer(17)))
Cyclic Cover of P^1 over Finite Field of size 17 defined by y^5 = x^5 + x + 1
change_ring(R)[source]#

Return this CyclicCover over a new base ring R.

EXAMPLES:

sage: ZZx.<x> = ZZ[]
sage: C = CyclicCover(5, x^5 + x + 1)
sage: C.change_ring(GF(5))
Traceback (most recent call last):
...
ValueError: As the characteristic divides the order of the cover,
this model is not smooth.
sage: C.change_ring(GF(3))
Traceback (most recent call last):
...
ValueError: Not a smooth Cyclic Cover of P^1: singularity in the
provided affine patch.
sage: C.change_ring(GF(17))
Cyclic Cover of P^1 over Finite Field of size 17 defined by y^5 = x^5 + x + 1
>>> from sage.all import *
>>> ZZx = ZZ['x']; (x,) = ZZx._first_ngens(1)
>>> C = CyclicCover(Integer(5), x**Integer(5) + x + Integer(1))
>>> C.change_ring(GF(Integer(5)))
Traceback (most recent call last):
...
ValueError: As the characteristic divides the order of the cover,
this model is not smooth.
>>> C.change_ring(GF(Integer(3)))
Traceback (most recent call last):
...
ValueError: Not a smooth Cyclic Cover of P^1: singularity in the
provided affine patch.
>>> C.change_ring(GF(Integer(17)))
Cyclic Cover of P^1 over Finite Field of size 17 defined by y^5 = x^5 + x + 1
cover_polynomial(K=None, var='x')[source]#

Return the polynomial defining the cyclic cover.

EXAMPLES:

sage: ZZx.<x> = ZZ[]; CyclicCover(5, x^5 + x + 1).cover_polynomial()
x^5 + x + 1
>>> from sage.all import *
>>> ZZx = ZZ['x']; (x,) = ZZx._first_ngens(1); CyclicCover(Integer(5), x**Integer(5) + x + Integer(1)).cover_polynomial()
x^5 + x + 1
genus()[source]#

The geometric genus of the curve.

EXAMPLES:

sage: ZZx.<x> = ZZ[]
sage: CyclicCover(5, x^5 + x + 1).genus()
6
sage: CyclicCover(3, x^5 + x + 1).genus()
4
>>> from sage.all import *
>>> ZZx = ZZ['x']; (x,) = ZZx._first_ngens(1)
>>> CyclicCover(Integer(5), x**Integer(5) + x + Integer(1)).genus()
6
>>> CyclicCover(Integer(3), x**Integer(5) + x + Integer(1)).genus()
4
is_singular()[source]#

Return if this curve is singular or not.

This just checks that the characteristic of the ring does not divide the order of the cover and that the defining polynomial of the cover is square free.

EXAMPLES:

sage: R.<x> = QQ[]
sage: CyclicCover(3, x^5 + x + 1).is_singular()
False
sage: CyclicCover(3, (x^5 + x + 1)^2, check_smooth=False).is_singular()
True
>>> from sage.all import *
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> CyclicCover(Integer(3), x**Integer(5) + x + Integer(1)).is_singular()
False
>>> CyclicCover(Integer(3), (x**Integer(5) + x + Integer(1))**Integer(2), check_smooth=False).is_singular()
True
is_smooth()[source]#

Return if this curve is smooth or not.

This just checks that the characteristic of the ring does not divide the order of the cover and that the defining polynomial of the cover is square free.

EXAMPLES:

sage: R.<x> = QQ[]
sage: CyclicCover(3, x^5 + x + 1).is_smooth()
True
sage: CyclicCover(3, (x^5 + x + 1)^2, check_smooth=False).is_smooth()
False
>>> from sage.all import *
>>> R = QQ['x']; (x,) = R._first_ngens(1)
>>> CyclicCover(Integer(3), x**Integer(5) + x + Integer(1)).is_smooth()
True
>>> CyclicCover(Integer(3), (x**Integer(5) + x + Integer(1))**Integer(2), check_smooth=False).is_smooth()
False
order()[source]#

The order of the cover.

EXAMPLES:

sage: ZZx.<x> = ZZ[]
sage: CyclicCover(5, x^5 + x + 1).order()
5
sage: CyclicCover(3, x^5 + x + 1).order()
3
>>> from sage.all import *
>>> ZZx = ZZ['x']; (x,) = ZZx._first_ngens(1)
>>> CyclicCover(Integer(5), x**Integer(5) + x + Integer(1)).order()
5
>>> CyclicCover(Integer(3), x**Integer(5) + x + Integer(1)).order()
3
projective_closure(**kwds)[source]#

Return the projective closure of this affine curve.

EXAMPLES:

sage: GF7x.<x> = GF(7)[]
sage: CyclicCover(3, x^9 + x + 1).projective_closure()
Traceback (most recent call last):
...
NotImplementedError: Weighted Projective Space is not implemented

sage: ZZx.<x> = ZZ[]
sage: CyclicCover(5, x^5 + x + 1).projective_closure()
Projective Plane Curve over Integer Ring defined by x0^5 + x0^4*x1 + x1^5 - x2^5
>>> from sage.all import *
>>> GF7x = GF(Integer(7))['x']; (x,) = GF7x._first_ngens(1)
>>> CyclicCover(Integer(3), x**Integer(9) + x + Integer(1)).projective_closure()
Traceback (most recent call last):
...
NotImplementedError: Weighted Projective Space is not implemented

>>> ZZx = ZZ['x']; (x,) = ZZx._first_ngens(1)
>>> CyclicCover(Integer(5), x**Integer(5) + x + Integer(1)).projective_closure()
Projective Plane Curve over Integer Ring defined by x0^5 + x0^4*x1 + x1^5 - x2^5