Orders of function fields

An order of a function field is a subring that is, as a module over the base maximal order, finitely generated and of maximal rank \(n\), where \(n\) is the extension degree of the function field. All orders are subrings of maximal orders.

A rational function field has two maximal orders: maximal finite order \(o\) and maximal infinite order \(o_\infty\). The maximal order of a rational function field over constant field \(k\) is just the polynomial ring \(o=k[x]\). The maximal infinite order is the set of rational functions whose denominator has degree greater than or equal to that of the numerator.

EXAMPLES:

sage: K.<x> = FunctionField(QQ)
sage: O = K.maximal_order()
sage: I = O.ideal(1/x); I
Ideal (1/x) of Maximal order of Rational function field in x over Rational Field
sage: 1/x in O
False
sage: Oinf = K.maximal_order_infinite()
sage: 1/x in Oinf
True

In an extension of a rational function field, an order over the maximal finite order is called a finite order while an order over the maximal infinite order is called an infinite order. Thus a function field has one maximal finite order \(O\) and one maximal infinite order \(O_\infty\). There are other non-maximal orders such as equation orders:

sage: K.<x> = FunctionField(GF(3)); R.<y> = K[]
sage: L.<y> = K.extension(y^3-y-x)
sage: O = L.equation_order()
sage: 1/y in O
False
sage: x/y in O
True

Sage provides an extensive functionality for computations in maximal orders of global function fields. For example, you can decompose a prime ideal of a rational function field in an extension:

sage: K.<x> = FunctionField(GF(2)); _.<t> = K[]
sage: o = K.maximal_order()
sage: p = o.ideal(x+1)
sage: p.is_prime()
True

sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2)
sage: O = F.maximal_order()
sage: O.decomposition(p)
[(Ideal (x + 1, y + 1) of Maximal order
 of Function field in y defined by y^3 + x^6 + x^4 + x^2, 1, 1),
 (Ideal (x + 1, y^2 + y + 1) of Maximal order
 of Function field in y defined by y^3 + x^6 + x^4 + x^2, 2, 1)]

sage: p1,relative_degree,ramification_index = O.decomposition(p)[1]
sage: p1.parent()
Monoid of ideals of Maximal order of Function field in y
defined by y^3 + x^6 + x^4 + x^2
sage: relative_degree
2
sage: ramification_index
1

AUTHORS:

  • William Stein (2010): initial version
  • Maarten Derickx (2011-09-14): fixed ideal_with_gens_over_base() for rational function fields
  • Julian Rueth (2011-09-14): added check in _element_constructor_
  • Kwankyu Lee (2017-04-30): added maximal orders of global function fields
sage.rings.function_field.order.FunctionFieldMaximalOrder

Base class of maximal orders of function fields.

sage.rings.function_field.order.FunctionFieldMaximalOrderInfinite

Base class of maximal infinite orders of function fields.

sage.rings.function_field.order.FunctionFieldMaximalOrderInfinite_global

Maximal infinite orders of global function fields.

INPUT:

  • field – function field

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K)
sage: F.<y> = K.extension(t^3-x^2*(x^2+x+1)^2)
sage: F.maximal_order_infinite()
Maximal infinite order of Function field in y defined by y^3 + x^6 + x^4 + x^2

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)
sage: L.maximal_order_infinite()
Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x
sage.rings.function_field.order.FunctionFieldMaximalOrderInfinite_rational

Maximal infinite orders of rational function fields.

INPUT:

  • field – a rational function field

EXAMPLES:

sage: K.<t> = FunctionField(GF(19)); K
Rational function field in t over Finite Field of size 19
sage: R = K.maximal_order_infinite(); R
Maximal infinite order of Rational function field in t over Finite Field of size 19
sage.rings.function_field.order.FunctionFieldMaximalOrder_global

Maximal orders of global function fields.

INPUT:

  • field – function field to which this maximal order belongs

EXAMPLES:

sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]
sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1)
sage: L.maximal_order()
Maximal order of Function field in y defined by y^4 + x*y + 4*x + 1
sage.rings.function_field.order.FunctionFieldMaximalOrder_rational

Maximal orders of rational function fields.

INPUT:

  • field – a function field

EXAMPLES:

sage: K.<t> = FunctionField(GF(19)); K
Rational function field in t over Finite Field of size 19
sage: R = K.maximal_order(); R
Maximal order of Rational function field in t over Finite Field of size 19
sage.rings.function_field.order.FunctionFieldOrder

Base class for orders in function fields.

sage.rings.function_field.order.FunctionFieldOrderInfinite

Base class for infinite orders in function fields.

sage.rings.function_field.order.FunctionFieldOrderInfinite_basis

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

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

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

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: 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)
sage.rings.function_field.order.FunctionFieldOrder_base

Base class for orders in function fields.

INPUT:

  • field – function field

EXAMPLES:

sage: F = FunctionField(QQ,'y')
sage: F.maximal_order()
Maximal order of Rational function field in y over Rational Field
sage.rings.function_field.order.FunctionFieldOrder_basis

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

INPUT:

  • basis – list of elements of the function field
  • check – (default: True) if True, check whether the module that basis generates forms an order

EXAMPLES:

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(); O
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: 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

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: L.order(L(x))
Traceback (most recent call last):
...
ValueError: basis (1, x, x^2, x^3, x^4) is not linearly independent
sage: sage.rings.function_field.order.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