Orders of function fields: basis¶
- class sage.rings.function_field.order_basis.FunctionFieldOrderInfinite_basis(basis, check=True)[source]¶
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) # 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
>>> from sage.all import * >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field >>> 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
check
isTrue
):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
>>> from sage.all import * >>> O = L.order_infinite_with_basis([Integer(1), y, Integer(1)/x**Integer(2)*y**Integer(2), y**Integer(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
check
isTrue
):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.
>>> from sage.all import * >>> O = L.order_infinite_with_basis([Integer(1), y, Integer(1)/x**Integer(2)*y**Integer(2), Integer(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)
>>> from sage.all import * >>> # needs sage.rings.function_field >>> O = L.order_infinite_with_basis([Integer(1) + Integer(1)/x*y, Integer(1)/x*y, Integer(1)/x**Integer(2)*y**Integer(2), Integer(1)/x**Integer(3)*y**Integer(3)]); O Infinite order in Function field in y defined by y^4 + x*y + 4*x + 1 >>> 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()[source]¶
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)
>>> from sage.all import * >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field >>> O = L.equation_order() # needs sage.rings.function_field >>> 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()[source]¶
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]
>>> from sage.all import * >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field >>> O = L.equation_order() # needs sage.rings.function_field >>> 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)[source]¶
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
>>> from sage.all import * >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1) >>> O = K.maximal_order() >>> O.ideal(y) Ideal (y) of Maximal order of Rational function field in y over Rational Field >>> O.ideal([y,Integer(1)/y]) == O.ideal(y,Integer(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
>>> from sage.all import * >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> O = K.maximal_order_infinite() >>> I = O.ideal(x**Integer(2) - Integer(4)) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field >>> S = L.order_infinite_with_basis([Integer(1), Integer(1)/x**Integer(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)[source]¶
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
>>> from sage.all import * >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1) >>> O = K.maximal_order() >>> I = O.ideal([y]); I Ideal (y) of Maximal order of Rational function field in y over Rational Field >>> 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]
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order(); O Order in Function field in y defined by y^2 + 6*x^3 + 6 >>> I = O.ideal_with_gens_over_base([Integer(1), y]); I Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6 >>> 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
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order() >>> 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 >>> y in I True >>> y**Integer(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()[source]¶
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
>>> from sage.all import * >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field >>> O = L.equation_order() # needs sage.rings.function_field >>> 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)[source]¶
Bases:
FunctionFieldOrder
Order given by a basis over the maximal order of the base field.
INPUT:
basis
– list of elements of the function fieldcheck
– boolean (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) # 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
>>> from sage.all import * >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field >>> 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
>>> from sage.all import * >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(5) - (x**Integer(3) + Integer(2)*x*y + Integer(1)/x), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.function_field >>> y.is_integral() # needs sage.rings.function_field False >>> 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
check
isTrue
):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
>>> from sage.all import * >>> # needs sage.rings.function_field >>> L.order(L(x)) Traceback (most recent call last): ... ValueError: basis (1, x, x^2, x^3, x^4) is not linearly independent >>> from sage.rings.function_field.order_basis import FunctionFieldOrder_basis >>> FunctionFieldOrder_basis((y,y,y**Integer(3),y**Integer(4),y**Integer(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()[source]¶
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)
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order() >>> 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)[source]¶
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: # 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)
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order() >>> f = (x + y)**Integer(3) >>> 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()[source]¶
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]
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order() >>> 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)[source]¶
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
>>> from sage.all import * >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1) >>> O = K.maximal_order() >>> O.ideal(y) Ideal (y) of Maximal order of Rational function field in y over Rational Field >>> O.ideal([y,Integer(1)/y]) == O.ideal(y,Integer(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
>>> from sage.all import * >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> O = K.maximal_order() >>> I = O.ideal(x**Integer(2) - Integer(4)) >>> # needs sage.rings.function_field >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> S = L.equation_order() >>> S.ideal(Integer(1)/y) Ideal (1, (6/(x^3 + 1))*y) of Order in Function field in y defined by y^2 + 6*x^3 + 6 >>> I2 = S.ideal(x**Integer(2) - Integer(4)); I2 Ideal (x^2 + 3) of Order in Function field in y defined by y^2 + 6*x^3 + 6 >>> 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)[source]¶
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
>>> from sage.all import * >>> K = FunctionField(QQ, names=('y',)); (y,) = K._first_ngens(1) >>> O = K.maximal_order() >>> I = O.ideal([y]); I Ideal (y) of Maximal order of Rational function field in y over Rational Field >>> 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]
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order(); O Order in Function field in y defined by y^2 + 6*x^3 + 6 >>> I = O.ideal_with_gens_over_base([Integer(1), y]); I Ideal (1) of Order in Function field in y defined by y^2 + 6*x^3 + 6 >>> 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
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order() >>> 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 >>> y in I True >>> y**Integer(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()[source]¶
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
>>> from sage.all import * >>> # needs sage.rings.function_field >>> K = FunctionField(GF(Integer(7)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.equation_order() >>> 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()