Cyclic covers curves over a general ring - Schemes

Skip to content
Back to top
View this page
Edit this page

# Cyclic covers curves over a general ring

EXAMPLES:

Sage

    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

Python

    >>> 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)

  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)

    alias of `change_ring()`.

  change_ring(R)

    Return this CyclicCover over a new base ring R.

    EXAMPLES:

    Sage

        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

    Python

        >>> 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')

    Return the polynomial defining the cyclic cover.

    EXAMPLES:

    Sage

        sage: ZZx.<x> = ZZ[]; CyclicCover(5, x^5 + x + 1).cover_polynomial()
        x^5 + x + 1

    Python

        >>> 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()

    The geometric genus of the curve.

    EXAMPLES:

    Sage

        sage: ZZx.<x> = ZZ[]
        sage: CyclicCover(5, x^5 + x + 1).genus()
        6
        sage: CyclicCover(3, x^5 + x + 1).genus()
        4

    Python

        >>> 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()

    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

        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

    Python

        >>> 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()

    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

        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

    Python

        >>> 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()

    The order of the cover.

    EXAMPLES:

    Sage

        sage: ZZx.<x> = ZZ[]
        sage: CyclicCover(5, x^5 + x + 1).order()
        5
        sage: CyclicCover(3, x^5 + x + 1).order()
        3

    Python

        >>> 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)

    Return the projective closure of this affine curve.

    EXAMPLES:

    Sage

        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

    Python

        >>> 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