Orders of function fields: basis#
- class sage.rings.function_field.order_basis.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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order_infinite(); O # optional - sage.rings.finite_rings sage.rings.function_field 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 # optional - sage.rings.finite_rings sage.rings.function_field 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 # optional - sage.rings.finite_rings sage.rings.function_field 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 # optional - sage.rings.finite_rings sage.rings.function_field Infinite order in Function field in y defined by y^4 + x*y + 4*x + 1 sage: O.basis() # optional - sage.rings.finite_rings sage.rings.function_field (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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: O.basis() # optional - sage.rings.finite_rings 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: K.<x> = FunctionField(GF(7)); R.<y> = K[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: O.free_module() # optional - sage.rings.finite_rings 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: 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) # optional - sage.rings.function_field sage: S = L.order_infinite_with_basis([1, 1/x^2*y]) # optional - 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: 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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^2 - x^3 - 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order(); O # optional - sage.rings.finite_rings sage.rings.function_field 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 # optional - sage.rings.finite_rings sage.rings.function_field Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6 sage: I.module() # optional - sage.rings.finite_rings sage.rings.function_field 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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^2 - x^3 - 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: I = O.ideal_with_gens_over_base([y]); I # optional - sage.rings.finite_rings sage.rings.function_field Ideal (y) of Order in Function field in y defined by y^2 + 6*x^3 + 6 sage: y in I # optional - sage.rings.finite_rings sage.rings.function_field True sage: y^2 in I # optional - sage.rings.finite_rings sage.rings.function_field 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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: O.polynomial() # optional - sage.rings.finite_rings sage.rings.function_field y^4 + x*y + 4*x + 1
- class sage.rings.function_field.order_basis.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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order(); O # optional - sage.rings.finite_rings 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: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^5 - (x^3 + 2*x*y + 1/x)) # optional - sage.rings.function_field sage: y.is_integral() # optional - sage.rings.function_field False sage: L.order(y) # optional - sage.rings.function_field 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)) # optional - sage.rings.function_field 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_basis.FunctionFieldOrder_basis((y,y,y^3,y^4,y^5)) # optional - sage.rings.function_field 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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: O.basis() # optional - sage.rings.finite_rings sage.rings.function_field (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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: f = (x + y)^3 # optional - sage.rings.finite_rings sage.rings.function_field sage: O.coordinate_vector(f) # optional - sage.rings.finite_rings sage.rings.function_field (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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: O.free_module() # optional - sage.rings.finite_rings 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: 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[] # optional - sage.rings.finite_rings sage: O = K.maximal_order() # optional - sage.rings.finite_rings sage: I = O.ideal(x^2 - 4) # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^2 - x^3 - 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: S = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: S.ideal(1/y) # optional - sage.rings.finite_rings sage.rings.function_field 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 # optional - sage.rings.finite_rings sage.rings.function_field Ideal (x^2 + 3) of Order in Function field in y defined by y^2 + 6*x^3 + 6 sage: I2 == S.ideal(I) # optional - sage.rings.finite_rings sage.rings.function_field 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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^2 - x^3 - 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order(); O # optional - sage.rings.finite_rings sage.rings.function_field 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 # optional - sage.rings.finite_rings sage.rings.function_field Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6 sage: I.module() # optional - sage.rings.finite_rings sage.rings.function_field 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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^2 - x^3 - 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: I = O.ideal_with_gens_over_base([y]); I # optional - sage.rings.finite_rings sage.rings.function_field Ideal (y) of Order in Function field in y defined by y^2 + 6*x^3 + 6 sage: y in I # optional - sage.rings.finite_rings sage.rings.function_field True sage: y^2 in I # optional - sage.rings.finite_rings sage.rings.function_field 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[] # optional - sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # optional - sage.rings.finite_rings sage.rings.function_field sage: O = L.equation_order() # optional - sage.rings.finite_rings sage.rings.function_field sage: O.polynomial() # optional - sage.rings.finite_rings sage.rings.function_field y^4 + x*y + 4*x + 1