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 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, (1/(x^3 + x^2 + x))*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
When the base constant field is the algebraic field \(\QQbar\), the only prime ideals of the maximal order of the rational function field are linear polynomials.
sage: K.<x> = FunctionField(QQbar)
sage: R.<y> = K[]
sage: L.<y> = K.extension(y^2 - (x^3-x^2))
sage: p = K.maximal_order().ideal(x)
sage: L.maximal_order().decomposition(p)
[(Ideal (1/x*y - I) of Maximal order of Function field in y defined by y^2 - x^3 + x^2,
1,
1),
(Ideal (1/x*y + I) of Maximal order of Function field in y defined by y^2 - x^3 + x^2,
1,
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
Brent Baccala (2019-12-20): support orders in characteristic zero
- class sage.rings.function_field.order.FunctionFieldMaximalOrder(field, ideal_class=<class 'sage.rings.function_field.ideal.FunctionFieldIdeal'>, category=None)#
Bases:
UniqueRepresentation
,FunctionFieldOrder
Base class of maximal orders of function fields.
- class sage.rings.function_field.order.FunctionFieldMaximalOrderInfinite(field, ideal_class=<class 'sage.rings.function_field.ideal.FunctionFieldIdeal'>, category=None)#
Bases:
FunctionFieldMaximalOrder
,FunctionFieldOrderInfinite
Base class of maximal infinite orders of function fields.
- class sage.rings.function_field.order.FunctionFieldMaximalOrderInfinite_polymod(field, category=None)#
Bases:
FunctionFieldMaximalOrderInfinite
Maximal infinite orders of 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
- basis()#
Return a basis of this order as a module over the maximal order of the base function field.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = L.maximal_order_infinite() sage: Oinf.basis() (1, 1/x^2*y, (1/(x^4 + x^3 + x^2))*y^2)
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: Oinf = L.maximal_order_infinite() sage: Oinf.basis() (1, 1/x*y)
- coordinate_vector(e)#
Return the coordinates of
e
with respect to the basis of the order.INPUT:
e
– element of the function field
The returned coordinates are in the base maximal infinite order if and only if the element is in the order.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: Oinf = L.maximal_order_infinite() sage: f = 1/y^2 sage: f in Oinf True sage: Oinf.coordinate_vector(f) ((x^3 + x^2 + x)/(x^4 + 1), x^3/(x^4 + 1))
- decomposition()#
Return prime ideal decomposition of \(pO_\infty\) where \(p\) is the unique prime ideal of the maximal infinite order of the rational function field.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = F.maximal_order_infinite() sage: Oinf.decomposition() [(Ideal ((1/(x^4 + x^3 + x^2))*y^2 + 1) of Maximal infinite order of Function field in y defined by y^3 + x^6 + x^4 + x^2, 1, 1), (Ideal ((1/(x^4 + x^3 + x^2))*y^2 + 1/x^2*y + 1) of Maximal infinite order of Function field in y defined by y^3 + x^6 + x^4 + x^2, 2, 1)]
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: Oinf = L.maximal_order_infinite() sage: Oinf.decomposition() [(Ideal (1/x*y) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x, 1, 2)]
sage: K.<x> = FunctionField(QQ); _.<Y> = K[] sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = F.maximal_order_infinite() sage: Oinf.decomposition() [(Ideal (1/x^2*y - 1) of Maximal infinite order of Function field in y defined by y^3 - x^6 - 2*x^5 - 3*x^4 - 2*x^3 - x^2, 1, 1), (Ideal ((1/(x^4 + x^3 + x^2))*y^2 + 1/x^2*y + 1) of Maximal infinite order of Function field in y defined by y^3 - x^6 - 2*x^5 - 3*x^4 - 2*x^3 - x^2, 2, 1)]
sage: K.<x> = FunctionField(QQ); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: Oinf = L.maximal_order_infinite() sage: Oinf.decomposition() [(Ideal (1/x*y) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x, 1, 2)]
- different()#
Return the different ideal of the maximal infinite order.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: Oinf = L.maximal_order_infinite() sage: Oinf.different() Ideal (1/x) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x
- gen(n=0)#
Return the
n
-th generator of the order.The basis elements of the order are generators.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = L.maximal_order_infinite() sage: Oinf.gen() 1 sage: Oinf.gen(1) 1/x^2*y sage: Oinf.gen(2) (1/(x^4 + x^3 + x^2))*y^2 sage: Oinf.gen(3) Traceback (most recent call last): ... IndexError: there are only 3 generators
- ideal(*gens)#
Return the ideal generated by
gens
.INPUT:
gens
– tuple of elements of the function field
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = F.maximal_order_infinite() sage: I = Oinf.ideal(x,y); I Ideal (y) of 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: Oinf = L.maximal_order_infinite() sage: I = Oinf.ideal(x,y); I Ideal (x) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x
- ideal_with_gens_over_base(gens)#
Return the ideal generated by
gens
as a module.INPUT:
gens
– tuple of elements of the function field
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); R.<t> = K[] sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = F.maximal_order_infinite() sage: Oinf.ideal_with_gens_over_base((x^2, y, (1/(x^2 + x + 1))*y^2)) Ideal (y) of Maximal infinite order of Function field in y defined by y^3 + x^6 + x^4 + x^2
- ngens()#
Return the number of generators of the order.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = L.maximal_order_infinite() sage: Oinf.ngens() 3
- class sage.rings.function_field.order.FunctionFieldMaximalOrderInfinite_rational(field, category=None)#
Bases:
FunctionFieldMaximalOrderInfinite
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
- basis()#
Return the basis (=1) of the order as a module over the polynomial ring.
EXAMPLES:
sage: K.<t> = FunctionField(GF(19)) sage: O = K.maximal_order() sage: O.basis() (1,)
- gen(n=0)#
Return the
n
-th generator of self. Since there is only one generatorn
must be 0.EXAMPLES:
sage: O = FunctionField(QQ,'y').maximal_order() sage: O.gen() y sage: O.gen(1) Traceback (most recent call last): ... IndexError: there is only one generator
- ideal(*gens)#
Return the fractional ideal generated by
gens
.INPUT:
gens
– elements of the function field
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: O = K.maximal_order_infinite() sage: O.ideal(x) Ideal (x) of Maximal infinite order of Rational function field in x over Rational Field sage: O.ideal([x,1/x]) == O.ideal(x,1/x) # multiple generators may be given as a list True sage: O.ideal(x^3+1,x^3+6) Ideal (x^3) of Maximal infinite order of Rational function field in x over Rational Field sage: I = O.ideal((x^2+1)*(x^3+1),(x^3+6)*(x^2+1)); I Ideal (x^5) of Maximal infinite order of Rational function field in x over Rational Field sage: O.ideal(I) Ideal (x^5) of Maximal infinite order of Rational function field in x over Rational Field
- ngens()#
Return 1 the number of generators of the order.
EXAMPLES:
sage: FunctionField(QQ,'y').maximal_order().ngens() 1
- prime_ideal()#
Return the unique prime ideal of the order.
EXAMPLES:
sage: K.<t> = FunctionField(GF(19)) sage: O = K.maximal_order_infinite() sage: O.prime_ideal() Ideal (1/t) of Maximal infinite order of Rational function field in t over Finite Field of size 19
- class sage.rings.function_field.order.FunctionFieldMaximalOrder_global(field)#
Bases:
FunctionFieldMaximalOrder_polymod
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
- decomposition(ideal)#
Return the decomposition of the prime ideal.
INPUT:
ideal
– prime ideal of the base maximal order
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); R.<t> = K[] sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: o = K.maximal_order() sage: O = F.maximal_order() sage: p = o.ideal(x+1) 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, (1/(x^3 + x^2 + x))*y^2 + y + 1) of Maximal order of Function field in y defined by y^3 + x^6 + x^4 + x^2, 2, 1)]
- p_radical(prime)#
Return the
prime
-radical of the maximal order.INPUT:
prime
– prime ideal of the maximal order of the base rational function field
The algorithm is outlined in Section 6.1.3 of [Coh1993].
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: F.<y> = K.extension(t^3 - x^2 * (x^2 + x + 1)^2) sage: o = K.maximal_order() sage: O = F.maximal_order() sage: p = o.ideal(x+1) sage: O.p_radical(p) Ideal (x + 1) of Maximal order of Function field in y defined by y^3 + x^6 + x^4 + x^2
- class sage.rings.function_field.order.FunctionFieldMaximalOrder_polymod(field, ideal_class=<class 'sage.rings.function_field.ideal.FunctionFieldIdeal_polymod'>)#
Bases:
FunctionFieldMaximalOrder
Maximal orders of extensions of function fields.
- basis()#
Return a basis of the order over the maximal order of the base function field.
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() sage: O.basis() (1, y, y^2, y^3) sage: K.<x> = FunctionField(QQ) sage: R.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^4 + x^12*t^2 + x^18*t + x^21 + x^18) sage: O = F.maximal_order() sage: O.basis() (1, 1/x^4*y, 1/x^9*y^2, 1/x^13*y^3)
- codifferent()#
Return the codifferent ideal of the function field.
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.maximal_order() sage: O.codifferent() Ideal (1, (1/(x^4 + 4*x^3 + 3*x^2 + 6*x + 4))*y^3 + ((5*x^3 + 6*x^2 + x + 6)/(x^4 + 4*x^3 + 3*x^2 + 6*x + 4))*y^2 + ((x^3 + 2*x^2 + 2*x + 2)/(x^4 + 4*x^3 + 3*x^2 + 6*x + 4))*y + 6*x/(x^4 + 4*x^3 + 3*x^2 + 6*x + 4)) of Maximal order of Function field in y defined by y^4 + x*y + 4*x + 1
- coordinate_vector(e)#
Return the coordinates of
e
with respect to the basis of this 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.maximal_order() sage: O.coordinate_vector(y) (0, 1, 0, 0) sage: O.coordinate_vector(x*y) (0, x, 0, 0) sage: K.<x> = FunctionField(QQ); 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)
- decomposition(ideal)#
Return the decomposition of the prime ideal.
INPUT:
ideal
– prime ideal of the base maximal order
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); R.<t> = K[] sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: o = K.maximal_order() sage: O = F.maximal_order() sage: p = o.ideal(x+1) 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, (1/(x^3 + x^2 + x))*y^2 + y + 1) of Maximal order of Function field in y defined by y^3 + x^6 + x^4 + x^2, 2, 1)]
ALGORITHM:
In principle, we’re trying to compute a primary decomposition of the extension of
ideal
inself
(an order, and therefore a ring). However, while we have primary decomposition methods for polynomial rings, we lack any such method for an order. Therefore, we constructself
modideal
as a finite-dimensional algebra, a construct for which we do support primary decomposition.See trac ticket #attachment/ticket/28094/decomposition.pdf
Todo
Use Kummer’s theorem to shortcut this code if possible, like as done in
FunctionFieldMaximalOrder_global.decomposition()
- different()#
Return the different ideal of the function field.
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.maximal_order() sage: O.different() Ideal (y^3 + 2*x) of Maximal order of Function field in y defined by y^4 + x*y + 4*x + 1
- free_module()#
Return the free module formed by the basis over the maximal order of the base field.
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.maximal_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 User basis matrix: [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]
- gen(n=0)#
Return the
n
-th generator of the order.The basis elements of the order are generators.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: O = L.maximal_order() sage: O.gen() 1 sage: O.gen(1) y sage: O.gen(2) (1/(x^3 + x^2 + x))*y^2 sage: O.gen(3) Traceback (most recent call last): ... IndexError: there are only 3 generators
- ideal(*gens, **kwargs)#
Return the fractional ideal generated by the elements in
gens
.INPUT:
gens
– list of generators
EXAMPLES:
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.maximal_order() sage: S.ideal(1/y) Ideal ((1/(x^3 + 1))*y) of Maximal order of 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 Maximal order of Function field in y defined by y^2 + 6*x^3 + 6 sage: I2 == S.ideal(I) True sage: K.<x> = FunctionField(QQ); 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.maximal_order() sage: S.ideal(1/y) Ideal ((1/(x^3 + 1))*y) of Maximal order of Function field in y defined by y^2 - x^3 - 1 sage: I2 = S.ideal(x^2-4); I2 Ideal (x^2 - 4) of Maximal order of Function field in y defined by y^2 - x^3 - 1 sage: 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.INPUT:
gens
– list of elements that generates the ideal over the maximal order of the base field
EXAMPLES:
sage: K.<x> = FunctionField(GF(7)); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x^3 - 1) sage: O = L.maximal_order(); O Maximal order of 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 Maximal order of 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]
There is no check if the resulting object is really an ideal:
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
- ngens()#
Return the number of generators of the order.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = K[] sage: L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) sage: Oinf = L.maximal_order() sage: Oinf.ngens() 3
- polynomial()#
Return the defining polynomial of the function field of which this is 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() sage: O.polynomial() y^4 + x*y + 4*x + 1 sage: K.<x> = FunctionField(QQ); 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
- class sage.rings.function_field.order.FunctionFieldMaximalOrder_rational(field)#
Bases:
FunctionFieldMaximalOrder
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
- basis()#
Return the basis (=1) of the order as a module over the polynomial ring.
EXAMPLES:
sage: K.<t> = FunctionField(GF(19)) sage: O = K.maximal_order() sage: O.basis() (1,)
- gen(n=0)#
Return the
n
-th generator of the order. Since there is only one generatorn
must be 0.EXAMPLES:
sage: O = FunctionField(QQ,'y').maximal_order() sage: O.gen() y sage: O.gen(1) Traceback (most recent call last): ... IndexError: there is only one generator
- ideal(*gens)#
Return the fractional ideal generated by
gens
.INPUT:
gens
– elements of the function field
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: O = K.maximal_order() sage: O.ideal(x) Ideal (x) of Maximal order of Rational function field in x over Rational Field sage: O.ideal([x,1/x]) == O.ideal(x,1/x) # multiple generators may be given as a list True sage: O.ideal(x^3+1,x^3+6) Ideal (1) of Maximal order of Rational function field in x over Rational Field sage: I = O.ideal((x^2+1)*(x^3+1),(x^3+6)*(x^2+1)); I Ideal (x^2 + 1) of Maximal order of Rational function field in x over Rational Field sage: O.ideal(I) Ideal (x^2 + 1) of Maximal order of Rational function field in x over Rational Field
- ideal_with_gens_over_base(gens)#
Return the fractional ideal with generators
gens
.INPUT:
gens
– elements of the function field
EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x^3 - 1) sage: O = L.equation_order() sage: O.ideal_with_gens_over_base([x^3+1,-y]) Ideal (x^3 + 1, -y) of Order in Function field in y defined by y^2 - x^3 - 1
- ngens()#
Return 1 the number of generators of the order.
EXAMPLES:
sage: FunctionField(QQ,'y').maximal_order().ngens() 1
- class sage.rings.function_field.order.FunctionFieldOrder(field, ideal_class=<class 'sage.rings.function_field.ideal.FunctionFieldIdeal'>, category=None)#
Bases:
FunctionFieldOrder_base
Base class for orders in function fields.
- class sage.rings.function_field.order.FunctionFieldOrderInfinite(field, ideal_class=<class 'sage.rings.function_field.ideal.FunctionFieldIdeal'>, category=None)#
Bases:
FunctionFieldOrder_base
Base class for infinite orders in function fields.
- class sage.rings.function_field.order.FunctionFieldOrderInfinite_basis(basis, check=True)#
Bases:
FunctionFieldOrderInfinite
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)
- basis()#
Return a basis of this order over the maximal order of the base field.
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() sage: O.basis() (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: 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]
- 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: 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
A fractional ideal of a nontrivial extension:
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) sage: S = L.order_infinite_with_basis([1, 1/x^2*y])
- 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: 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
We construct some ideals in a nontrivial function field:
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]
There is no check if the resulting object is really an ideal:
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
- polynomial()#
Return the defining polynomial of the function field of which this is 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() sage: O.polynomial() y^4 + x*y + 4*x + 1
- class sage.rings.function_field.order.FunctionFieldOrder_base(field, ideal_class=<class 'sage.rings.function_field.ideal.FunctionFieldIdeal'>, category=None)#
Bases:
CachedRepresentation
,Parent
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
- fraction_field()#
Return the function field to which the order belongs.
EXAMPLES:
sage: FunctionField(QQ,'y').maximal_order().function_field() Rational function field in y over Rational Field
- function_field()#
Return the function field to which the order belongs.
EXAMPLES:
sage: FunctionField(QQ,'y').maximal_order().function_field() Rational function field in y over Rational Field
- ideal_monoid()#
Return the monoid of ideals of the order.
EXAMPLES:
sage: FunctionField(QQ,'y').maximal_order().ideal_monoid() Monoid of ideals of Maximal order of Rational function field in y over Rational Field
- is_field(proof=True)#
Return
False
since orders are never fields.EXAMPLES:
sage: FunctionField(QQ,'y').maximal_order().is_field() False
- is_noetherian()#
Return
True
since orders in function fields are noetherian.EXAMPLES:
sage: FunctionField(QQ,'y').maximal_order().is_noetherian() True
- is_subring(other)#
Return
True
if the order is a subring of the other order.INPUT:
other
– order of the function field or the field itself
EXAMPLES:
sage: F = FunctionField(QQ,'y') sage: O = F.maximal_order() sage: O.is_subring(F) True
- class sage.rings.function_field.order.FunctionFieldOrder_basis(basis, check=True)#
Bases:
FunctionFieldOrder
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
- basis()#
Return a basis of the order over the maximal order of the base field.
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() sage: 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: 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)
- free_module()#
Return the free module formed by the basis over the maximal order of the base function field.
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() 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]
- 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: 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
A fractional ideal of a nontrivial extension:
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
- 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: 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
We construct some ideals in a nontrivial function field:
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]
There is no check if the resulting object is really an ideal:
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
- polynomial()#
Return the defining polynomial of the function field of which this is 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() sage: O.polynomial() y^4 + x*y + 4*x + 1