Orders of function fields: basis - Algebraic Function Fields

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

# Orders of function fields: basis

class sage.rings.function_field.order_basis.FunctionFieldOrderInfinite_basis(basis, check: bool = True)

  Bases: `FunctionFieldOrderInfinite`

  Order given by a basis over the infinite maximal order of the base field.

  INPUT:

  - `basis` – elements of the function field

  - `check` – boolean (default: `True`); if `True`, check the basis generates an order

  EXAMPLES:

  Sage

      sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
      sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)
      sage: O = L.equation_order_infinite(); O
      Infinite order in Function field in y defined by y^4 + x*y + 4*x + 1

  Python

      >>> from sage.all import *
      >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
      >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)
      >>> O = L.equation_order_infinite(); O
      Infinite order in Function field in y defined by y^4 + x*y + 4*x + 1

  The basis only defines an order if the module it generates is closed under multiplication and contains the identity element (only checked when `check` is `True`):

  Sage

      sage: O = L.order_infinite_with_basis([1, y, 1/x^2*y^2, y^3]); O
      Traceback (most recent call last):
      ...
      ValueError: the module generated by basis (1, y, 1/x^2*y^2, y^3)
      must be closed under multiplication

  [Python]

      >>> from sage.all import *
      >>> O = L.order_infinite_with_basis([Integer(1), y, Integer(1)/x**Integer(2)*y**Integer(2), y**Integer(3)]); O
      Traceback (most recent call last):
      ...
      ValueError: the module generated by basis (1, y, 1/x^2*y^2, y^3)
      must be closed under multiplication

  The basis also has to be linearly independent and of the same rank as the degree of the function field of its elements (only checked when `check` is `True`):

  Sage

      sage: O = L.order_infinite_with_basis([1, y, 1/x^2*y^2, 1 + y]); O
      Traceback (most recent call last):
      ...
      ValueError: the given basis vectors must be linearly independent

  Python

      >>> from sage.all import *
      >>> O = L.order_infinite_with_basis([Integer(1), y, Integer(1)/x**Integer(2)*y**Integer(2), Integer(1) + y]); O
      Traceback (most recent call last):
      ...
      ValueError: the given basis vectors must be linearly independent

  Note that 1 does not need to be an element of the basis, as long as it is in the module spanned by it:

  Sage

      sage: O = L.order_infinite_with_basis([1 + 1/x*y, 1/x*y, 1/x^2*y^2, 1/x^3*y^3]); O
      Infinite order in Function field in y defined by y^4 + x*y + 4*x + 1
      sage: O.basis()
      (1/x*y + 1, 1/x*y, 1/x^2*y^2, 1/x^3*y^3)

  [Python]

      >>> from sage.all import *
      >>> O = L.order_infinite_with_basis([Integer(1) + Integer(1)/x*y, Integer(1)/x*y, Integer(1)/x**Integer(2)*y**Integer(2), Integer(1)/x**Integer(3)*y**Integer(3)]); O
      Infinite order in Function field in y defined by y^4 + x*y + 4*x + 1
      >>> O.basis()
      (1/x*y + 1, 1/x*y, 1/x^2*y^2, 1/x^3*y^3)

  basis()

    Return a basis of this order over the maximal order of the base field.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)                              # needs sage.rings.function_field
        sage: O = L.equation_order()                                                # needs sage.rings.function_field
        sage: O.basis()                                                             # needs sage.rings.function_field
        (1, y, y^2, y^3)

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field
        >>> O = L.equation_order()                                                # needs sage.rings.function_field
        >>> O.basis()                                                             # needs sage.rings.function_field
        (1, y, y^2, y^3)

  free_module()

    Return the free module formed by the basis over the maximal order of the base field.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)                              # needs sage.rings.function_field
        sage: O = L.equation_order()                                                # needs sage.rings.function_field
        sage: O.free_module()                                                       # needs sage.rings.function_field
        Free module of degree 4 and rank 4 over Maximal order of Rational
        function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0 0 0]
        [0 1 0 0]
        [0 0 1 0]
        [0 0 0 1]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field
        >>> O = L.equation_order()                                                # needs sage.rings.function_field
        >>> O.free_module()                                                       # needs sage.rings.function_field
        Free module of degree 4 and rank 4 over Maximal order of Rational
        function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0 0 0]
        [0 1 0 0]
        [0 0 1 0]
        [0 0 0 1]

  ideal(*gens)

    Return the fractional ideal generated by the elements in `gens`.

    INPUT:

    - `gens` – list of generators or an ideal in a ring which coerces to this order

    EXAMPLES:

    Sage

        sage: K.<y> = FunctionField(QQ)
        sage: O = K.maximal_order()
        sage: O.ideal(y)
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        sage: O.ideal([y,1/y]) == O.ideal(y,1/y) # multiple generators may be given as a list
        True

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1)
        >>> O = K.maximal_order()
        >>> O.ideal(y)
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        >>> O.ideal([y,Integer(1)/y]) == O.ideal(y,Integer(1)/y) # multiple generators may be given as a list
        True

    A fractional ideal of a nontrivial extension:

    Sage

        sage: K.<x> = FunctionField(QQ); R.<y> = K[]
        sage: O = K.maximal_order_infinite()
        sage: I = O.ideal(x^2 - 4)
        sage: L.<y> = K.extension(y^2 - x^3 - 1)                                    # needs sage.rings.function_field
        sage: S = L.order_infinite_with_basis([1, 1/x^2*y])                         # needs sage.rings.function_field

    [Python]

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> O = K.maximal_order_infinite()
        >>> I = O.ideal(x**Integer(2) - Integer(4))
        >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field
        >>> S = L.order_infinite_with_basis([Integer(1), Integer(1)/x**Integer(2)*y])                         # needs sage.rings.function_field

  ideal_with_gens_over_base(gens)

    Return the fractional ideal with basis `gens` over the maximal order of the base field.

    It is not checked that `gens` really generates an ideal.

    INPUT:

    - `gens` – list of elements that are a basis for the ideal over the maximal order of the base field

    EXAMPLES:

    We construct an ideal in a rational function field:

    Sage

        sage: K.<y> = FunctionField(QQ)
        sage: O = K.maximal_order()
        sage: I = O.ideal([y]); I
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        sage: I*I
        Ideal (y^2) of Maximal order of Rational function field in y over Rational Field

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1)
        >>> O = K.maximal_order()
        >>> I = O.ideal([y]); I
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        >>> I*I
        Ideal (y^2) of Maximal order of Rational function field in y over Rational Field

    We construct some ideals in a nontrivial function field:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^2 - x^3 - 1)
        sage: O = L.equation_order(); O
        Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: I = O.ideal_with_gens_over_base([1, y]);  I
        Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: I.module()
        Free module of degree 2 and rank 2 over
         Maximal order of Rational function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0]
        [0 1]

    [Python]

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order(); O
        Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> I = O.ideal_with_gens_over_base([Integer(1), y]);  I
        Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> I.module()
        Free module of degree 2 and rank 2 over
         Maximal order of Rational function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0]
        [0 1]

    There is no check if the resulting object is really an ideal:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^2 - x^3 - 1)
        sage: O = L.equation_order()
        sage: I = O.ideal_with_gens_over_base([y]); I
        Ideal (y) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: y in I
        True
        sage: y^2 in I
        False

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order()
        >>> I = O.ideal_with_gens_over_base([y]); I
        Ideal (y) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> y in I
        True
        >>> y**Integer(2) in I
        False

  polynomial()

    Return the defining polynomial of the function field of which this is an order.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)                              # needs sage.rings.function_field
        sage: O = L.equation_order()                                                # needs sage.rings.function_field
        sage: O.polynomial()                                                        # needs sage.rings.function_field
        y^4 + x*y + 4*x + 1

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field
        >>> O = L.equation_order()                                                # needs sage.rings.function_field
        >>> O.polynomial()                                                        # needs sage.rings.function_field
        y^4 + x*y + 4*x + 1

class sage.rings.function_field.order_basis.FunctionFieldOrder_basis(basis, check: bool = True)

  Bases: `FunctionFieldOrder`

  Order given by a basis over the maximal order of the base field.

  INPUT:

  - `basis` – list of elements of the function field

  - `check` – boolean (default: `True`); if `True`, check whether the module that `basis` generates forms an order

  EXAMPLES:

  Sage

      sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
      sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)                                  # needs sage.rings.function_field
      sage: O = L.equation_order(); O                                                 # needs sage.rings.function_field
      Order in Function field in y defined by y^4 + x*y + 4*x + 1

  Python

      >>> from sage.all import *
      >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
      >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field
      >>> O = L.equation_order(); O                                                 # needs sage.rings.function_field
      Order in Function field in y defined by y^4 + x*y + 4*x + 1

  The basis only defines an order if the module it generates is closed under multiplication and contains the identity element:

  Sage

      sage: K.<x> = FunctionField(QQ)
      sage: R.<y> = K[]
      sage: L.<y> = K.extension(y^5 - (x^3 + 2*x*y + 1/x))
      sage: y.is_integral()
      False
      sage: L.order(y)
      Traceback (most recent call last):
      ...
      ValueError: the module generated by basis (1, y, y^2, y^3, y^4)
      must be closed under multiplication

  [Python]

      >>> from sage.all import *
      >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1)
      >>> R = K['y']; (y,) = R._first_ngens(1)
      >>> L = K.extension(y**Integer(5) - (x**Integer(3) + Integer(2)*x*y + Integer(1)/x), names=('y',)); (y,) = L._first_ngens(1)
      >>> y.is_integral()
      False
      >>> L.order(y)
      Traceback (most recent call last):
      ...
      ValueError: the module generated by basis (1, y, y^2, y^3, y^4)
      must be closed under multiplication

  The basis also has to be linearly independent and of the same rank as the degree of the function field of its elements (only checked when `check` is `True`):

  Sage

      sage: L.order(L(x))
      Traceback (most recent call last):
      ...
      ValueError: basis (1, x, x^2, x^3, x^4) is not linearly independent
      sage: from sage.rings.function_field.order_basis import FunctionFieldOrder_basis
      sage: FunctionFieldOrder_basis((y,y,y^3,y^4,y^5))
      Traceback (most recent call last):
      ...
      ValueError: basis (y, y, y^3, y^4, 2*x*y + (x^4 + 1)/x) is not linearly independent

  Python

      >>> from sage.all import *
      >>> L.order(L(x))
      Traceback (most recent call last):
      ...
      ValueError: basis (1, x, x^2, x^3, x^4) is not linearly independent
      >>> from sage.rings.function_field.order_basis import FunctionFieldOrder_basis
      >>> FunctionFieldOrder_basis((y,y,y**Integer(3),y**Integer(4),y**Integer(5)))
      Traceback (most recent call last):
      ...
      ValueError: basis (y, y, y^3, y^4, 2*x*y + (x^4 + 1)/x) is not linearly independent

  basis()

    Return a basis of the order over the maximal order of the base field.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)
        sage: O = L.equation_order()
        sage: O.basis()
        (1, y, y^2, y^3)

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order()
        >>> O.basis()
        (1, y, y^2, y^3)

  coordinate_vector(e)

    Return the coordinates of `e` with respect to the basis of the order.

    INPUT:

    - `e` – element of the order or the function field

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)
        sage: O = L.equation_order()
        sage: f = (x + y)^3
        sage: O.coordinate_vector(f)
        (x^3, 3*x^2, 3*x, 1)

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order()
        >>> f = (x + y)**Integer(3)
        >>> O.coordinate_vector(f)
        (x^3, 3*x^2, 3*x, 1)

  free_module()

    Return the free module formed by the basis over the maximal order of the base function field.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)
        sage: O = L.equation_order()
        sage: O.free_module()
        Free module of degree 4 and rank 4 over Maximal order of Rational
        function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0 0 0]
        [0 1 0 0]
        [0 0 1 0]
        [0 0 0 1]

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order()
        >>> O.free_module()
        Free module of degree 4 and rank 4 over Maximal order of Rational
        function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0 0 0]
        [0 1 0 0]
        [0 0 1 0]
        [0 0 0 1]

  ideal(*gens)

    Return the fractional ideal generated by the elements in `gens`.

    INPUT:

    - `gens` – list of generators or an ideal in a ring which coerces to this order

    EXAMPLES:

    Sage

        sage: K.<y> = FunctionField(QQ)
        sage: O = K.maximal_order()
        sage: O.ideal(y)
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        sage: O.ideal([y,1/y]) == O.ideal(y,1/y) # multiple generators may be given as a list
        True

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1)
        >>> O = K.maximal_order()
        >>> O.ideal(y)
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        >>> O.ideal([y,Integer(1)/y]) == O.ideal(y,Integer(1)/y) # multiple generators may be given as a list
        True

    A fractional ideal of a nontrivial extension:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: O = K.maximal_order()
        sage: I = O.ideal(x^2 - 4)

        sage: L.<y> = K.extension(y^2 - x^3 - 1)
        sage: S = L.equation_order()
        sage: S.ideal(1/y)
        Ideal (1, (6/(x^3 + 1))*y) of
         Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: I2 = S.ideal(x^2 - 4); I2
        Ideal (x^2 + 3) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: I2 == S.ideal(I)
        True

    [Python]

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> O = K.maximal_order()
        >>> I = O.ideal(x**Integer(2) - Integer(4))

        >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> S = L.equation_order()
        >>> S.ideal(Integer(1)/y)
        Ideal (1, (6/(x^3 + 1))*y) of
         Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> I2 = S.ideal(x**Integer(2) - Integer(4)); I2
        Ideal (x^2 + 3) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> I2 == S.ideal(I)
        True

  ideal_with_gens_over_base(gens)

    Return the fractional ideal with basis `gens` over the maximal order of the base field.

    It is not checked that the `gens` really generates an ideal.

    INPUT:

    - `gens` – list of elements of the function field

    EXAMPLES:

    We construct an ideal in a rational function field:

    Sage

        sage: K.<y> = FunctionField(QQ)
        sage: O = K.maximal_order()
        sage: I = O.ideal([y]); I
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        sage: I * I
        Ideal (y^2) of Maximal order of Rational function field in y over Rational Field

    Python

        >>> from sage.all import *
        >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1)
        >>> O = K.maximal_order()
        >>> I = O.ideal([y]); I
        Ideal (y) of Maximal order of Rational function field in y over Rational Field
        >>> I * I
        Ideal (y^2) of Maximal order of Rational function field in y over Rational Field

    We construct some ideals in a nontrivial function field:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^2 - x^3 - 1)
        sage: O = L.equation_order(); O
        Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: I = O.ideal_with_gens_over_base([1, y]);  I
        Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: I.module()
        Free module of degree 2 and rank 2 over
         Maximal order of Rational function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0]
        [0 1]

    [Python]

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order(); O
        Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> I = O.ideal_with_gens_over_base([Integer(1), y]);  I
        Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> I.module()
        Free module of degree 2 and rank 2 over
         Maximal order of Rational function field in x over Finite Field of size 7
        Echelon basis matrix:
        [1 0]
        [0 1]

    There is no check if the resulting object is really an ideal:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^2 - x^3 - 1)
        sage: O = L.equation_order()
        sage: I = O.ideal_with_gens_over_base([y]); I
        Ideal (y) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        sage: y in I
        True
        sage: y^2 in I
        False

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order()
        >>> I = O.ideal_with_gens_over_base([y]); I
        Ideal (y) of Order in Function field in y defined by y^2 + 6*x^3 + 6
        >>> y in I
        True
        >>> y**Integer(2) in I
        False

  polynomial()

    Return the defining polynomial of the function field of which this is an order.

    EXAMPLES:

    Sage

        sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
        sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)
        sage: O = L.equation_order()
        sage: O.polynomial()
        y^4 + x*y + 4*x + 1

    Python

        >>> from sage.all import *
        >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1)
        >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)
        >>> O = L.equation_order()
        >>> O.polynomial()
        y^4 + x*y + 4*x + 1