Orders of function fields: basis#
- class sage.rings.function_field.order_basis.FunctionFieldOrderInfinite_basis(basis, check=True)#
Bases:
FunctionFieldOrderInfiniteOrder 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) # needs sage.rings.function_field sage: O = L.equation_order_infinite(); O # needs sage.rings.function_field Infinite order in Function field in y defined by y^4 + x*y + 4*x + 1
K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) # needs sage.rings.function_field O = L.equation_order_infinite(); O # needs sage.rings.function_field
The basis only defines an order if the module it generates is closed under multiplication and contains the identity element (only checked when
checkisTrue):sage: O = L.order_infinite_with_basis([1, y, 1/x^2*y^2, y^3]); O # needs 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
O = L.order_infinite_with_basis([1, y, 1/x^2*y^2, y^3]); O # needs sage.rings.function_field
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
checkisTrue):sage: O = L.order_infinite_with_basis([1, y, 1/x^2*y^2, 1 + y]); O # needs sage.rings.function_field Traceback (most recent call last): ... ValueError: The given basis vectors must be linearly independent.
O = L.order_infinite_with_basis([1, y, 1/x^2*y^2, 1 + y]); O # needs sage.rings.function_field
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: # needs sage.rings.function_field 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)
# needs sage.rings.function_field O = L.order_infinite_with_basis([1 + 1/x*y, 1/x*y, 1/x^2*y^2, 1/x^3*y^3]); O O.basis()
- 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) # 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)
K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) # needs sage.rings.function_field O = L.equation_order() # needs sage.rings.function_field O.basis() # needs sage.rings.function_field
- 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) # 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]
K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) # needs sage.rings.function_field O = L.equation_order() # needs sage.rings.function_field O.free_module() # needs sage.rings.function_field
- 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
K.<y> = FunctionField(QQ) O = K.maximal_order() O.ideal(y) O.ideal([y,1/y]) == O.ideal(y,1/y) # multiple generators may be given as a list
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) # needs sage.rings.function_field sage: S = L.order_infinite_with_basis([1, 1/x^2*y]) # needs sage.rings.function_field
K.<x> = FunctionField(QQ); R.<y> = K[] O = K.maximal_order_infinite() I = O.ideal(x^2 - 4) L.<y> = K.extension(y^2 - x^3 - 1) # needs sage.rings.function_field S = L.order_infinite_with_basis([1, 1/x^2*y]) # needs sage.rings.function_field
- ideal_with_gens_over_base(gens)#
Return the fractional ideal with basis
gensover the maximal order of the base field.It is not checked that
gensreally 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
K.<y> = FunctionField(QQ) O = K.maximal_order() I = O.ideal([y]); I I*I
We construct some ideals in a nontrivial function field:
sage: # needs sage.rings.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]
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^2 - x^3 - 1) O = L.equation_order(); O I = O.ideal_with_gens_over_base([1, y]); I I.module()
There is no check if the resulting object is really an ideal:
sage: # needs sage.rings.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() 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
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^2 - x^3 - 1) O = L.equation_order() I = O.ideal_with_gens_over_base([y]); I y in I y^2 in I
- 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) # 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
K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) # needs sage.rings.function_field O = L.equation_order() # needs sage.rings.function_field O.polynomial() # needs sage.rings.function_field
- class sage.rings.function_field.order_basis.FunctionFieldOrder_basis(basis, check=True)#
Bases:
FunctionFieldOrderOrder 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 thatbasisgenerates 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) # 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
K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) # needs sage.rings.function_field O = L.equation_order(); O # needs sage.rings.function_field
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)) # needs sage.rings.function_field sage: y.is_integral() # needs sage.rings.function_field False sage: L.order(y) # needs 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
K.<x> = FunctionField(QQ) R.<y> = K[] L.<y> = K.extension(y^5 - (x^3 + 2*x*y + 1/x)) # needs sage.rings.function_field y.is_integral() # needs sage.rings.function_field L.order(y) # needs sage.rings.function_field
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
checkisTrue):sage: # needs sage.rings.function_field 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
# needs sage.rings.function_field L.order(L(x)) from sage.rings.function_field.order_basis import FunctionFieldOrder_basis FunctionFieldOrder_basis((y,y,y^3,y^4,y^5))
- basis()#
Return a basis of the order over the maximal order of the base field.
EXAMPLES:
sage: # needs sage.rings.function_field 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)
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.equation_order() O.basis()
- coordinate_vector(e)#
Return the coordinates of
ewith respect to the basis of the order.INPUT:
e– element of the order or the function field
EXAMPLES:
sage: # needs sage.rings.function_field 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)
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.equation_order() f = (x + y)^3 O.coordinate_vector(f)
- free_module()#
Return the free module formed by the basis over the maximal order of the base function field.
EXAMPLES:
sage: # needs sage.rings.function_field 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]
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.equation_order() O.free_module()
- 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
K.<y> = FunctionField(QQ) O = K.maximal_order() O.ideal(y) O.ideal([y,1/y]) == O.ideal(y,1/y) # multiple generators may be given as a list
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: # needs sage.rings.function_field 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
K.<x> = FunctionField(GF(7)); R.<y> = K[] O = K.maximal_order() I = O.ideal(x^2 - 4) # needs sage.rings.function_field L.<y> = K.extension(y^2 - x^3 - 1) S = L.equation_order() S.ideal(1/y) I2 = S.ideal(x^2 - 4); I2 I2 == S.ideal(I)
- ideal_with_gens_over_base(gens)#
Return the fractional ideal with basis
gensover the maximal order of the base field.It is not checked that the
gensreally 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
K.<y> = FunctionField(QQ) O = K.maximal_order() I = O.ideal([y]); I I * I
We construct some ideals in a nontrivial function field:
sage: # needs sage.rings.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]
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^2 - x^3 - 1) O = L.equation_order(); O I = O.ideal_with_gens_over_base([1, y]); I I.module()
There is no check if the resulting object is really an ideal:
sage: # needs sage.rings.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() 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
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^2 - x^3 - 1) O = L.equation_order() I = O.ideal_with_gens_over_base([y]); I y in I y^2 in I
- polynomial()#
Return the defining polynomial of the function field of which this is an order.
EXAMPLES:
sage: # needs sage.rings.function_field 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
# needs sage.rings.function_field K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.equation_order() O.polynomial()