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