Places of function fields: extension - Algebraic Function Fields

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

# Places of function fields: extension

class sage.rings.function_field.place_polymod.FunctionFieldPlace_polymod(parent, prime)

  Bases: `FunctionFieldPlace`

  Places of extensions of function fields.

  degree()

    Return the degree of the place.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
        sage: OK = K.maximal_order()
        sage: OL = L.maximal_order()
        sage: p = OK.ideal(x^2 + x + 1)
        sage: dec = OL.decomposition(p)
        sage: q = dec[0][0].place()
        sage: q.degree()
        2

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1)
        >>> OK = K.maximal_order()
        >>> OL = L.maximal_order()
        >>> p = OK.ideal(x**Integer(2) + x + Integer(1))
        >>> dec = OL.decomposition(p)
        >>> q = dec[Integer(0)][Integer(0)].place()
        >>> q.degree()
        2

  gaps()

    Return the gap sequence for the place.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
        sage: O = L.maximal_order()
        sage: p = O.ideal(x,y).place()
        sage: p.gaps() # a Weierstrass place
        [1, 2, 4]

        sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                             # needs sage.rings.finite_rings
        sage: L.<y> = K.extension(Y^3 + x^3 * Y + x)                                # needs sage.rings.finite_rings
        sage: [p.gaps() for p in L.places()]                                        # needs sage.rings.finite_rings
        [[1, 2, 4], [1, 2, 4], [1, 2, 4]]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(4)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.maximal_order()
        >>> p = O.ideal(x,y).place()
        >>> p.gaps() # a Weierstrass place
        [1, 2, 4]

        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)# needs sage.rings.finite_rings
        >>> L = K.extension(Y**Integer(3) + x**Integer(3) * Y + x, names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.finite_rings
        >>> [p.gaps() for p in L.places()]                                        # needs sage.rings.finite_rings
        [[1, 2, 4], [1, 2, 4], [1, 2, 4]]

  is_infinite_place()

    Return `True` if the place is above the unique infinite place of the underlying rational function field.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
        sage: pls = L.places()
        sage: [p.is_infinite_place() for p in pls]
        [True, True, False]
        sage: [p.place_below() for p in pls]
        [Place (1/x), Place (1/x), Place (x)]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1)
        >>> pls = L.places()
        >>> [p.is_infinite_place() for p in pls]
        [True, True, False]
        >>> [p.place_below() for p in pls]
        [Place (1/x), Place (1/x), Place (x)]

  local_uniformizer()

    Return an element of the function field that has a simple zero at the place.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
        sage: pls = L.places()
        sage: [p.local_uniformizer().valuation(p) for p in pls]
        [1, 1, 1, 1, 1]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(4)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1)
        >>> pls = L.places()
        >>> [p.local_uniformizer().valuation(p) for p in pls]
        [1, 1, 1, 1, 1]

  place_below()

    Return the place lying below the place.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
        sage: OK = K.maximal_order()
        sage: OL = L.maximal_order()
        sage: p = OK.ideal(x^2 + x + 1)
        sage: dec = OL.decomposition(p)
        sage: q = dec[0][0].place()
        sage: q.place_below()
        Place (x^2 + x + 1)

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1)
        >>> OK = K.maximal_order()
        >>> OL = L.maximal_order()
        >>> p = OK.ideal(x**Integer(2) + x + Integer(1))
        >>> dec = OL.decomposition(p)
        >>> q = dec[Integer(0)][Integer(0)].place()
        >>> q.place_below()
        Place (x^2 + x + 1)

  relative_degree()

    Return the relative degree of the place.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^3 + x^3*Y + x)
        sage: OK = K.maximal_order()
        sage: OL = L.maximal_order()
        sage: p = OK.ideal(x^2 + x + 1)
        sage: dec = OL.decomposition(p)
        sage: q = dec[0][0].place()
        sage: q.relative_degree()
        1

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1)
        >>> OK = K.maximal_order()
        >>> OL = L.maximal_order()
        >>> p = OK.ideal(x**Integer(2) + x + Integer(1))
        >>> dec = OL.decomposition(p)
        >>> q = dec[Integer(0)][Integer(0)].place()
        >>> q.relative_degree()
        1

  residue_field(name=None)

    Return the residue field of the place.

    INPUT:

    - `name` – string; name of the generator of the residue field

    OUTPUT:

    - a field isomorphic to the residue field

    - a ring homomorphism from the valuation ring to the field

    - a ring homomorphism from the field to the valuation ring

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
        sage: p = L.places_finite()[0]
        sage: k, fr_k, to_k = p.residue_field()
        sage: k
        Finite Field of size 2
        sage: fr_k
        Ring morphism:
          From: Finite Field of size 2
          To:   Valuation ring at Place (x, x*y)
        sage: to_k
        Ring morphism:
          From: Valuation ring at Place (x, x*y)
          To:   Finite Field of size 2
        sage: to_k(y)
        Traceback (most recent call last):
        ...
        TypeError: y fails to convert into the map's domain
        Valuation ring at Place (x, x*y)...
        sage: to_k(1/y)
        0
        sage: to_k(y/(1+y))
        1

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1)
        >>> p = L.places_finite()[Integer(0)]
        >>> k, fr_k, to_k = p.residue_field()
        >>> k
        Finite Field of size 2
        >>> fr_k
        Ring morphism:
          From: Finite Field of size 2
          To:   Valuation ring at Place (x, x*y)
        >>> to_k
        Ring morphism:
          From: Valuation ring at Place (x, x*y)
          To:   Finite Field of size 2
        >>> to_k(y)
        Traceback (most recent call last):
        ...
        TypeError: y fails to convert into the map's domain
        Valuation ring at Place (x, x*y)...
        >>> to_k(Integer(1)/y)
        0
        >>> to_k(y/(Integer(1)+y))
        1

  valuation_ring()

    Return the valuation ring at the place.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
        sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
        sage: p = L.places_finite()[0]
        sage: p.valuation_ring()
        Valuation ring at Place (x, x*y)

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)
        >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1)
        >>> p = L.places_finite()[Integer(0)]
        >>> p.valuation_ring()
        Valuation ring at Place (x, x*y)