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 spacer
– degree of the coverf
– univariate polynomialnames
(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