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 fieldcheck
– boolean (default:True
); ifTrue
, 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
isTrue
):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
isTrue
):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 fieldcheck
– (default:True
) ifTrue
, check whether the module thatbasis
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
isTrue
):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