Orders of function fields: extension¶
- class sage.rings.function_field.order_polymod.FunctionFieldMaximalOrderInfinite_polymod(field, category=None)[source]¶
Bases:
FunctionFieldMaximalOrderInfinite
Maximal infinite orders of function fields.
INPUT:
field
– function field
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K) # needs sage.rings.finite_rings sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) # needs sage.rings.finite_rings sage: F.maximal_order_infinite() # needs sage.rings.finite_rings 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[] # needs sage.rings.finite_rings sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings sage: L.maximal_order_infinite() # needs sage.rings.finite_rings Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x
>>> from sage.all import * >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('t',)); (t,) = _._first_ngens(1)# needs sage.rings.finite_rings >>> F = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2)+x+Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1)# needs sage.rings.finite_rings >>> F.maximal_order_infinite() # needs sage.rings.finite_rings Maximal infinite order of Function field in y defined by y^3 + x^6 + x^4 + x^2 >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1)# needs sage.rings.finite_rings >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.finite_rings >>> L.maximal_order_infinite() # needs sage.rings.finite_rings Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x
K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K) # needs sage.rings.finite_rings F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) # needs sage.rings.finite_rings F.maximal_order_infinite() # needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] # needs sage.rings.finite_rings L.<y> = K.extension(Y^2 + Y + x + 1/x) # needs sage.rings.finite_rings L.maximal_order_infinite() # needs sage.rings.finite_rings
- basis()[source]¶
Return a basis of this order as a module over the maximal order of the base function field.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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)
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> L = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> Oinf.basis() (1, 1/x^2*y, (1/(x^4 + x^3 + x^2))*y^2)
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) Oinf = L.maximal_order_infinite() Oinf.basis()
sage: # needs sage.rings.finite_rings 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)
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> Oinf.basis() (1, 1/x*y)
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) Oinf = L.maximal_order_infinite() Oinf.basis()
- coordinate_vector(e)[source]¶
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: # needs sage.rings.finite_rings 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))
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> f = Integer(1)/y**Integer(2) >>> f in Oinf True >>> Oinf.coordinate_vector(f) ((x^3 + x^2 + x)/(x^4 + 1), x^3/(x^4 + 1))
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) Oinf = L.maximal_order_infinite() f = 1/y^2 f in Oinf Oinf.coordinate_vector(f)
- decomposition()[source]¶
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: # needs sage.rings.finite_rings 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)]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> F = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> 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)]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) Oinf = F.maximal_order_infinite() Oinf.decomposition()
sage: # needs sage.rings.finite_rings 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)]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> 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)]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) Oinf = L.maximal_order_infinite() Oinf.decomposition()
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)]
>>> from sage.all import * >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> 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)]
K.<x> = FunctionField(QQ); _.<Y> = K[] F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) Oinf = F.maximal_order_infinite() Oinf.decomposition()
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)]
>>> from sage.all import * >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> 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)]
K.<x> = FunctionField(QQ); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) Oinf = L.maximal_order_infinite() Oinf.decomposition()
- different()[source]¶
Return the different ideal of the maximal infinite order.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> Oinf.different() Ideal (1/x) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) Oinf = L.maximal_order_infinite() Oinf.different()
- gen(n=0)[source]¶
Return the
n
-th generator of the order.The basis elements of the order are generators.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> L = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> Oinf.gen() 1 >>> Oinf.gen(Integer(1)) 1/x^2*y >>> Oinf.gen(Integer(2)) (1/(x^4 + x^3 + x^2))*y^2 >>> Oinf.gen(Integer(3)) Traceback (most recent call last): ... IndexError: there are only 3 generators
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) Oinf = L.maximal_order_infinite() Oinf.gen() Oinf.gen(1) Oinf.gen(2) Oinf.gen(3)
- ideal(*gens)[source]¶
Return the ideal generated by
gens
.INPUT:
gens
– tuple of elements of the function field
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> F = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> 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
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) Oinf = F.maximal_order_infinite() I = Oinf.ideal(x, y); I
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> 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
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) Oinf = L.maximal_order_infinite() I = Oinf.ideal(x, y); I
- ideal_with_gens_over_base(gens)[source]¶
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
>>> from sage.all import * >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['t']; (t,) = R._first_ngens(1) >>> F = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> Oinf.ideal_with_gens_over_base((x**Integer(2), y, (Integer(1)/(x**Integer(2) + x + Integer(1)))*y**Integer(2))) Ideal (y) of Maximal infinite order of Function field in y defined by y^3 + x^6 + x^4 + x^2
K.<x> = FunctionField(GF(2)); R.<t> = K[] F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) Oinf = F.maximal_order_infinite() Oinf.ideal_with_gens_over_base((x^2, y, (1/(x^2 + x + 1))*y^2))
- ngens()[source]¶
Return the number of generators of the order.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> L = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order_infinite() >>> Oinf.ngens() 3
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) Oinf = L.maximal_order_infinite() Oinf.ngens()
- class sage.rings.function_field.order_polymod.FunctionFieldMaximalOrder_global(field)[source]¶
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[] # needs sage.rings.finite_rings sage: L.<y> = K.extension(y^4 + x*y + 4*x + 1) # needs sage.rings.finite_rings sage: L.maximal_order() # needs sage.rings.finite_rings Maximal order of 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)# needs sage.rings.finite_rings >>> L = K.extension(y**Integer(4) + x*y + Integer(4)*x + Integer(1), names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.finite_rings >>> L.maximal_order() # needs sage.rings.finite_rings Maximal order of Function field in y defined by y^4 + x*y + 4*x + 1
K.<x> = FunctionField(GF(7)); R.<y> = K[] # needs sage.rings.finite_rings L.<y> = K.extension(y^4 + x*y + 4*x + 1) # needs sage.rings.finite_rings L.maximal_order() # needs sage.rings.finite_rings
- decomposition(ideal)[source]¶
Return the decomposition of the prime ideal.
INPUT:
ideal
– prime ideal of the base maximal order
EXAMPLES:
sage: # needs sage.rings.finite_rings 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)]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['t']; (t,) = R._first_ngens(1) >>> F = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> o = K.maximal_order() >>> O = F.maximal_order() >>> p = o.ideal(x + Integer(1)) >>> 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)]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); R.<t> = K[] F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) o = K.maximal_order() O = F.maximal_order() p = o.ideal(x + 1) O.decomposition(p)
- p_radical(prime)[source]¶
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: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> F = K.extension(t**Integer(3) - x**Integer(2) * (x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> o = K.maximal_order() >>> O = F.maximal_order() >>> p = o.ideal(x + Integer(1)) >>> 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
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] F.<y> = K.extension(t^3 - x^2 * (x^2 + x + 1)^2) o = K.maximal_order() O = F.maximal_order() p = o.ideal(x + 1) O.p_radical(p)
- class sage.rings.function_field.order_polymod.FunctionFieldMaximalOrder_polymod(field, ideal_class=<class 'sage.rings.function_field.ideal_polymod.FunctionFieldIdeal_polymod'>)[source]¶
Bases:
FunctionFieldMaximalOrder
Maximal orders of extensions of function fields.
- basis()[source]¶
Return a basis of the order over the maximal order of the base function field.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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)
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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) >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1) >>> R = PolynomialRing(K, names=('t',)); (t,) = R._first_ngens(1) >>> F = K.extension(t**Integer(4) + x**Integer(12)*t**Integer(2) + x**Integer(18)*t + x**Integer(21) + x**Integer(18), names=('y',)); (y,) = F._first_ngens(1) >>> O = F.maximal_order() >>> O.basis() (1, 1/x^4*y, 1/x^9*y^2, 1/x^13*y^3)
# needs sage.rings.finite_rings 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() K.<x> = FunctionField(QQ) R.<t> = PolynomialRing(K) F.<y> = K.extension(t^4 + x^12*t^2 + x^18*t + x^21 + x^18) O = F.maximal_order() O.basis()
- codifferent()[source]¶
Return the codifferent ideal of the function field.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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.maximal_order() >>> 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
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.maximal_order() O.codifferent()
- coordinate_vector(e)[source]¶
Return the coordinates of
e
with respect to the basis of this order.EXAMPLES:
sage: # needs sage.rings.finite_rings 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)
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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.maximal_order() >>> O.coordinate_vector(y) (0, 1, 0, 0) >>> O.coordinate_vector(x*y) (0, x, 0, 0) >>> K = FunctionField(QQ, 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.finite_rings K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.maximal_order() O.coordinate_vector(y) O.coordinate_vector(x*y) K.<x> = FunctionField(QQ); 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)
- decomposition(ideal)[source]¶
Return the decomposition of the prime ideal.
INPUT:
ideal
– prime ideal of the base maximal order
EXAMPLES:
sage: # needs sage.rings.finite_rings 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)]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['t']; (t,) = R._first_ngens(1) >>> F = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> o = K.maximal_order() >>> O = F.maximal_order() >>> p = o.ideal(x + Integer(1)) >>> 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)]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); R.<t> = K[] F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) o = K.maximal_order() O = F.maximal_order() p = o.ideal(x + 1) O.decomposition(p)
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 Issue #28094 and https://github.com/sagemath/sage/files/10659303/decomposition.pdf.gz
Todo
Use Kummer’s theorem to shortcut this code if possible, like as done in
FunctionFieldMaximalOrder_global.decomposition()
- different()[source]¶
Return the different ideal of the function field.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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.maximal_order() >>> O.different() Ideal (y^3 + 2*x) of Maximal order of Function field in y defined by y^4 + x*y + 4*x + 1
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.maximal_order() O.different()
- free_module()[source]¶
Return the free module formed by the basis over the maximal order of the base field.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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.maximal_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 User basis matrix: [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.maximal_order() O.free_module()
- gen(n=0)[source]¶
Return the
n
-th generator of the order.The basis elements of the order are generators.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> L = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> O.gen() 1 >>> O.gen(Integer(1)) y >>> O.gen(Integer(2)) (1/(x^3 + x^2 + x))*y^2 >>> O.gen(Integer(3)) Traceback (most recent call last): ... IndexError: there are only 3 generators
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) O = L.maximal_order() O.gen() O.gen(1) O.gen(2) O.gen(3)
- ideal(*gens, **kwargs)[source]¶
Return the fractional ideal generated by the elements in
gens
.INPUT:
gens
– list of generators
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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)) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> S = L.maximal_order() >>> S.ideal(Integer(1)/y) Ideal ((1/(x^3 + 1))*y) of Maximal order of 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 Maximal order of Function field in y defined by y^2 + 6*x^3 + 6 >>> I2 == S.ideal(I) True >>> K = FunctionField(QQ, 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)) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> S = L.maximal_order() >>> S.ideal(Integer(1)/y) Ideal ((1/(x^3 + 1))*y) of Maximal order of Function field in y defined by y^2 - x^3 - 1 >>> I2 = S.ideal(x**Integer(2)-Integer(4)); I2 Ideal (x^2 - 4) of Maximal order of Function field in y defined by y^2 - x^3 - 1 >>> I2 == S.ideal(I) True
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(7)); R.<y> = K[] O = K.maximal_order() I = O.ideal(x^2 - 4) L.<y> = K.extension(y^2 - x^3 - 1) S = L.maximal_order() S.ideal(1/y) I2 = S.ideal(x^2 - 4); I2 I2 == S.ideal(I) K.<x> = FunctionField(QQ); R.<y> = K[] O = K.maximal_order() I = O.ideal(x^2 - 4) L.<y> = K.extension(y^2 - x^3 - 1) S = L.maximal_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.INPUT:
gens
– list of elements that generates the ideal over the maximal order of the base field
EXAMPLES:
sage: # needs sage.rings.finite_rings 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]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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.maximal_order(); O Maximal order of 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 Maximal order of 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.finite_rings K.<x> = FunctionField(GF(7)); R.<y> = K[] L.<y> = K.extension(y^2 - x^3 - 1) O = L.maximal_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.finite_rings 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.finite_rings >>> 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.finite_rings 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
- ngens()[source]¶
Return the number of generators of the order.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> L = K.extension(t**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = L._first_ngens(1) >>> Oinf = L.maximal_order() >>> Oinf.ngens() 3
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<t> = K[] L.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2) Oinf = L.maximal_order() Oinf.ngens()
- polynomial()[source]¶
Return the defining polynomial of the function field of which this is an order.
EXAMPLES:
sage: # needs sage.rings.finite_rings 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
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> 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 >>> K = FunctionField(QQ, 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.finite_rings 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() K.<x> = FunctionField(QQ); R.<y> = K[] L.<y> = K.extension(y^4 + x*y + 4*x + 1) O = L.equation_order() O.polynomial()