Special extensions of function fields - Algebraic Function Fields

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

# Special extensions of function fields

This module currently implements only constant field extension.

## Constant field extensions

EXAMPLES:

Constant field extension of the rational function field over rational numbers:

Sage

    sage: K.<x> = FunctionField(QQ)
    sage: N.<a> = QuadraticField(2)                                                     # needs sage.rings.number_field
    sage: L = K.extension_constant_field(N)                                             # needs sage.rings.number_field
    sage: L                                                                             # needs sage.rings.number_field
    Rational function field in x over Number Field in a with defining
    polynomial x^2 - 2 with a = 1.4142... over its base
    sage: d = (x^2 - 2).divisor()                                                       # needs sage.libs.pari sage.modules
    sage: d                                                                             # needs sage.libs.pari sage.modules
    -2*Place (1/x)
     + Place (x^2 - 2)
    sage: L.conorm_divisor(d)                                                           # needs sage.libs.pari sage.modules sage.rings.number_field
    -2*Place (1/x)
     + Place (x - a)
     + Place (x + a)

Python

    >>> from sage.all import *
    >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1)
    >>> N = QuadraticField(Integer(2), names=('a',)); (a,) = N._first_ngens(1)# needs sage.rings.number_field
    >>> L = K.extension_constant_field(N)                                             # needs sage.rings.number_field
    >>> L                                                                             # needs sage.rings.number_field
    Rational function field in x over Number Field in a with defining
    polynomial x^2 - 2 with a = 1.4142... over its base
    >>> d = (x**Integer(2) - Integer(2)).divisor()                                                       # needs sage.libs.pari sage.modules
    >>> d                                                                             # needs sage.libs.pari sage.modules
    -2*Place (1/x)
     + Place (x^2 - 2)
    >>> L.conorm_divisor(d)                                                           # needs sage.libs.pari sage.modules sage.rings.number_field
    -2*Place (1/x)
     + Place (x - a)
     + Place (x + a)

Constant field extension of a function field over a finite field:

Sage

    sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[]
    sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2)
    sage: E = F.extension_constant_field(GF(2^3))
    sage: E
    Function field in y defined by y^3 + x^6 + x^4 + x^2 over its base
    sage: p = F.get_place(3)
    sage: E.conorm_place(p)  # random
    Place (x + z3, y + z3^2 + z3)
     + Place (x + z3^2, y + z3)
     + Place (x + z3^2 + z3, y + z3^2)
    sage: q = F.get_place(2)
    sage: E.conorm_place(q)  # random
    Place (x + 1, y^2 + y + 1)
    sage: E.conorm_divisor(p + q)  # random
    Place (x + 1, y^2 + y + 1)
     + Place (x + z3, y + z3^2 + z3)
     + Place (x + z3^2, y + z3)
     + Place (x + z3^2 + z3, y + z3^2)

[Python]

    >>> from sage.all import *
    >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1)
    >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1)
    >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3)))
    >>> E
    Function field in y defined by y^3 + x^6 + x^4 + x^2 over its base
    >>> p = F.get_place(Integer(3))
    >>> E.conorm_place(p)  # random
    Place (x + z3, y + z3^2 + z3)
     + Place (x + z3^2, y + z3)
     + Place (x + z3^2 + z3, y + z3^2)
    >>> q = F.get_place(Integer(2))
    >>> E.conorm_place(q)  # random
    Place (x + 1, y^2 + y + 1)
    >>> E.conorm_divisor(p + q)  # random
    Place (x + 1, y^2 + y + 1)
     + Place (x + z3, y + z3^2 + z3)
     + Place (x + z3^2, y + z3)
     + Place (x + z3^2 + z3, y + z3^2)

AUTHORS:

- Kwankyu Lee (2021-12-24): added constant field extension

class sage.rings.function_field.extensions.ConstantFieldExtension(F, k_ext)

  Bases: `FunctionFieldExtension`

  Constant field extension.

  INPUT:

  - `F` – a function field whose constant field is \(k\)

  - `k_ext` – an extension of \(k\)

  conorm_divisor(d)

    Return the conorm of the divisor `d` in this extension.

    INPUT:

    - `d` – divisor of the base function field

    OUTPUT: a divisor of the top function field

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[]
        sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2)
        sage: E = F.extension_constant_field(GF(2^3))
        sage: p1 = F.get_place(3)
        sage: p2 = F.get_place(2)
        sage: c = E.conorm_divisor(2*p1 + 3*p2)
        sage: c1 = E.conorm_place(p1)
        sage: c2 = E.conorm_place(p2)
        sage: c == 2*c1 + 3*c2
        True

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1)
        >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1)
        >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3)))
        >>> p1 = F.get_place(Integer(3))
        >>> p2 = F.get_place(Integer(2))
        >>> c = E.conorm_divisor(Integer(2)*p1 + Integer(3)*p2)
        >>> c1 = E.conorm_place(p1)
        >>> c2 = E.conorm_place(p2)
        >>> c == Integer(2)*c1 + Integer(3)*c2
        True

  conorm_place(p)

    Return the conorm of the place \(p\) in this extension.

    INPUT:

    - `p` – place of the base function field

    OUTPUT: divisor of the top function field

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[]
        sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2)
        sage: E = F.extension_constant_field(GF(2^3))
        sage: p = F.get_place(3)
        sage: d = E.conorm_place(p)
        sage: [pl.degree() for pl in d.support()]
        [1, 1, 1]
        sage: p = F.get_place(2)
        sage: d = E.conorm_place(p)
        sage: [pl.degree() for pl in d.support()]
        [2]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1)
        >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1)
        >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3)))
        >>> p = F.get_place(Integer(3))
        >>> d = E.conorm_place(p)
        >>> [pl.degree() for pl in d.support()]
        [1, 1, 1]
        >>> p = F.get_place(Integer(2))
        >>> d = E.conorm_place(p)
        >>> [pl.degree() for pl in d.support()]
        [2]

  defining_morphism()

    Return the defining morphism of this extension.

    This is the morphism from the base to the top.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[]
        sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2)
        sage: E = F.extension_constant_field(GF(2^3))
        sage: E.defining_morphism()
        Function Field morphism:
          From: Function field in y defined by y^3 + x^6 + x^4 + x^2
          To:   Function field in y defined by y^3 + x^6 + x^4 + x^2
          Defn: y |--> y
                x |--> x
                1 |--> 1

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1)
        >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1)
        >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3)))
        >>> E.defining_morphism()
        Function Field morphism:
          From: Function field in y defined by y^3 + x^6 + x^4 + x^2
          To:   Function field in y defined by y^3 + x^6 + x^4 + x^2
          Defn: y |--> y
                x |--> x
                1 |--> 1

  top()

    Return the top function field of this extension.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(2)); R.<Y> = K[]
        sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2)
        sage: E = F.extension_constant_field(GF(2^3))
        sage: E.top()
        Function field in y defined by y^3 + x^6 + x^4 + x^2

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['Y']; (Y,) = R._first_ngens(1)
        >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1)
        >>> E = F.extension_constant_field(GF(Integer(2)**Integer(3)))
        >>> E.top()
        Function field in y defined by y^3 + x^6 + x^4 + x^2

class sage.rings.function_field.extensions.FunctionFieldExtension

  Bases: `RingExtension_generic`

  Abstract base class of function field extensions.