Elements of function fields: rational - Algebraic Function Fields

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

# Elements of function fields: rational

class sage.rings.function_field.element_rational.FunctionFieldElement_rational

  Bases: `FunctionFieldElement`

  Elements of a rational function field.

  EXAMPLES:

  Sage

      sage: K.<t> = FunctionField(QQ); K
      Rational function field in t over Rational Field
      sage: t^2 + 3/2*t
      t^2 + 3/2*t
      sage: FunctionField(QQ,'t').gen()^3
      t^3

  Python

      >>> from sage.all import *
      >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1); K
      Rational function field in t over Rational Field
      >>> t**Integer(2) + Integer(3)/Integer(2)*t
      t^2 + 3/2*t
      >>> FunctionField(QQ,'t').gen()**Integer(3)
      t^3

  denominator()

    Return the denominator of the rational function.

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(QQ)
        sage: f = (t+1) / (t^2 - 1/3); f
        (t + 1)/(t^2 - 1/3)
        sage: f.denominator()
        t^2 - 1/3

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1)
        >>> f = (t+Integer(1)) / (t**Integer(2) - Integer(1)/Integer(3)); f
        (t + 1)/(t^2 - 1/3)
        >>> f.denominator()
        t^2 - 1/3

  element()

    Return the underlying fraction field element that represents the element.

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(GF(7))
        sage: t.element()
        t
        sage: type(t.element())                                                     # needs sage.libs.ntl
        <... 'sage.rings.fraction_field_FpT.FpTElement'>

        sage: K.<t> = FunctionField(GF(131101))
        sage: t.element()
        t
        sage: type(t.element())
        <... 'sage.rings.fraction_field_element.FractionFieldElement_1poly_field'>

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('t',)); (t,) = K._first_ngens(1)
        >>> t.element()
        t
        >>> type(t.element())                                                     # needs sage.libs.ntl
        <... 'sage.rings.fraction_field_FpT.FpTElement'>

        >>> K = FunctionField(GF(Integer(131101)), names=('t',)); (t,) = K._first_ngens(1)
        >>> t.element()
        t
        >>> type(t.element())
        <... 'sage.rings.fraction_field_element.FractionFieldElement_1poly_field'>

  factor()

    Factor the rational function.

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(QQ)
        sage: f = (t+1) / (t^2 - 1/3)
        sage: f.factor()
        (t + 1) * (t^2 - 1/3)^-1
        sage: (7*f).factor()
        (7) * (t + 1) * (t^2 - 1/3)^-1
        sage: ((7*f).factor()).unit()
        7
        sage: (f^3).factor()
        (t + 1)^3 * (t^2 - 1/3)^-3

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1)
        >>> f = (t+Integer(1)) / (t**Integer(2) - Integer(1)/Integer(3))
        >>> f.factor()
        (t + 1) * (t^2 - 1/3)^-1
        >>> (Integer(7)*f).factor()
        (7) * (t + 1) * (t^2 - 1/3)^-1
        >>> ((Integer(7)*f).factor()).unit()
        7
        >>> (f**Integer(3)).factor()
        (t + 1)^3 * (t^2 - 1/3)^-3

  inverse_mod(I)

    Return an inverse of the element modulo the integral ideal \(I\), if \(I\) and the element together generate the unit ideal.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(QQ)
        sage: O = K.maximal_order(); I = O.ideal(x^2 + 1)
        sage: t = O(x + 1).inverse_mod(I); t
        -1/2*x + 1/2
        sage: (t*(x+1) - 1) in I
        True

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1)
        >>> O = K.maximal_order(); I = O.ideal(x**Integer(2) + Integer(1))
        >>> t = O(x + Integer(1)).inverse_mod(I); t
        -1/2*x + 1/2
        >>> (t*(x+Integer(1)) - Integer(1)) in I
        True

  is_nth_power(n)

    Return whether this element is an `n`-th power in the rational function field.

    INPUT:

    - `n` – integer

    OUTPUT:

    Returns `True` if there is an element \(a\) in the function field such that this element equals \(a^n\).

    ALGORITHM:

    If `n` is a power of the characteristic of the field and the constant base field is perfect, then this uses the algorithm described in Lemma 3 of [GiTr1996].

    See also

    `nth_root()`

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(3))
        sage: f = (x+1)/(x-1)
        sage: f.is_nth_power(1)
        True
        sage: f.is_nth_power(3)                                                     # needs sage.modules
        False
        sage: (f^3).is_nth_power(3)                                                 # needs sage.modules
        True
        sage: (f^9).is_nth_power(-9)                                                # needs sage.modules
        True

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(3)), names=('x',)); (x,) = K._first_ngens(1)
        >>> f = (x+Integer(1))/(x-Integer(1))
        >>> f.is_nth_power(Integer(1))
        True
        >>> f.is_nth_power(Integer(3))                                                     # needs sage.modules
        False
        >>> (f**Integer(3)).is_nth_power(Integer(3))                                                 # needs sage.modules
        True
        >>> (f**Integer(9)).is_nth_power(-Integer(9))                                                # needs sage.modules
        True

  is_square()

    Return whether the element is a square.

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(QQ)
        sage: t.is_square()
        False
        sage: (t^2/4).is_square()
        True
        sage: f = 9 * (t+1)^6 / (t^2 - 2*t + 1); f.is_square()
        True

        sage: K.<t> = FunctionField(GF(5))
        sage: (-t^2).is_square()                                                    # needs sage.libs.pari
        True
        sage: (-t^2).sqrt()                                                         # needs sage.libs.pari
        2*t

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1)
        >>> t.is_square()
        False
        >>> (t**Integer(2)/Integer(4)).is_square()
        True
        >>> f = Integer(9) * (t+Integer(1))**Integer(6) / (t**Integer(2) - Integer(2)*t + Integer(1)); f.is_square()
        True

        >>> K = FunctionField(GF(Integer(5)), names=('t',)); (t,) = K._first_ngens(1)
        >>> (-t**Integer(2)).is_square()                                                    # needs sage.libs.pari
        True
        >>> (-t**Integer(2)).sqrt()                                                         # needs sage.libs.pari
        2*t

  list()

    Return a list with just the element.

    The list represents the element when the rational function field is viewed as a (one-dimensional) vector space over itself.

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(QQ)
        sage: t.list()
        [t]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1)
        >>> t.list()
        [t]

  nth_root(n)

    Return an `n`-th root of this element in the function field.

    INPUT:

    - `n` – integer

    OUTPUT:

    Returns an element `a` in the rational function field such that this element equals \(a^n\). Raises an error if no such element exists.

    ALGORITHM:

    If `n` is a power of the characteristic of the field and the constant base field is perfect, then this uses the algorithm described in Corollary 3 of [GiTr1996].

    See also

    `is_nth_power()`

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(3))
        sage: f = (x+1)/(x+2)
        sage: f.nth_root(1)
        (x + 1)/(x + 2)
        sage: f.nth_root(3)
        Traceback (most recent call last):
        ...
        ValueError: element is not an n-th power
        sage: (f^3).nth_root(3)                                                     # needs sage.modules
        (x + 1)/(x + 2)
        sage: (f^9).nth_root(-9)                                                    # needs sage.modules
        (x + 2)/(x + 1)

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(3)), names=('x',)); (x,) = K._first_ngens(1)
        >>> f = (x+Integer(1))/(x+Integer(2))
        >>> f.nth_root(Integer(1))
        (x + 1)/(x + 2)
        >>> f.nth_root(Integer(3))
        Traceback (most recent call last):
        ...
        ValueError: element is not an n-th power
        >>> (f**Integer(3)).nth_root(Integer(3))                                                     # needs sage.modules
        (x + 1)/(x + 2)
        >>> (f**Integer(9)).nth_root(-Integer(9))                                                    # needs sage.modules
        (x + 2)/(x + 1)

  numerator()

    Return the numerator of the rational function.

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(QQ)
        sage: f = (t+1) / (t^2 - 1/3); f
        (t + 1)/(t^2 - 1/3)
        sage: f.numerator()
        t + 1

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1)
        >>> f = (t+Integer(1)) / (t**Integer(2) - Integer(1)/Integer(3)); f
        (t + 1)/(t^2 - 1/3)
        >>> f.numerator()
        t + 1

  sqrt(all=False)

    Return the square root of the rational function.

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(QQ)
        sage: f = t^2 - 2 + 1/t^2; f.sqrt()
        (t^2 - 1)/t
        sage: f = t^2; f.sqrt(all=True)
        [t, -t]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1)
        >>> f = t**Integer(2) - Integer(2) + Integer(1)/t**Integer(2); f.sqrt()
        (t^2 - 1)/t
        >>> f = t**Integer(2); f.sqrt(all=True)
        [t, -t]

  valuation(place)

    Return the valuation of the rational function at the place.

    Rational function field places are associated with irreducible polynomials.

    INPUT:

    - `place` – a place or an irreducible polynomial

    EXAMPLES:

    Sage

        sage: K.<t> = FunctionField(QQ)
        sage: f = (t - 1)^2*(t + 1)/(t^2 - 1/3)^3
        sage: f.valuation(t - 1)
        2
        sage: f.valuation(t)
        0
        sage: f.valuation(t^2 - 1/3)
        -3

        sage: K.<x> = FunctionField(GF(2))
        sage: p = K.places_finite()[0]                                              # needs sage.libs.pari
        sage: (1/x^2).valuation(p)                                                  # needs sage.libs.pari
        -2

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('t',)); (t,) = K._first_ngens(1)
        >>> f = (t - Integer(1))**Integer(2)*(t + Integer(1))/(t**Integer(2) - Integer(1)/Integer(3))**Integer(3)
        >>> f.valuation(t - Integer(1))
        2
        >>> f.valuation(t)
        0
        >>> f.valuation(t**Integer(2) - Integer(1)/Integer(3))
        -3

        >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1)
        >>> p = K.places_finite()[Integer(0)]                                              # needs sage.libs.pari
        >>> (Integer(1)/x**Integer(2)).valuation(p)                                                  # needs sage.libs.pari
        -2