Ideals of function fields: extension#
- class sage.rings.function_field.ideal_polymod.FunctionFieldIdealInfinite_polymod(ring, ideal)[source]#
Bases:
FunctionFieldIdealInfinite
Ideals of the infinite maximal order of an algebraic function field.
INPUT:
ring
– infinite maximal order of the function fieldideal
– ideal in the inverted function field
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3^2)); R.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 + t^2 - x^4) sage: Oinf = F.maximal_order_infinite() sage: Oinf.ideal(1/y) Ideal (1/x^4*y^2) of Maximal infinite order of Function field in y defined by y^3 + y^2 + 2*x^4
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)**Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = PolynomialRing(K, names=('t',)); (t,) = R._first_ngens(1) >>> F = K.extension(t**Integer(3) + t**Integer(2) - x**Integer(4), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> Oinf.ideal(Integer(1)/y) Ideal (1/x^4*y^2) of Maximal infinite order of Function field in y defined by y^3 + y^2 + 2*x^4
- gens()[source]#
Return a set of generators of this ideal.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3^2)); R.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 + t^2 - x^4) sage: Oinf = F.maximal_order_infinite() sage: I = Oinf.ideal(x + y) sage: I.gens() (x, y, 1/x^2*y^2) 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) sage: I.gens() (x, y)
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)**Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = PolynomialRing(K, names=('t',)); (t,) = R._first_ngens(1) >>> F = K.extension(t**Integer(3) + t**Integer(2) - x**Integer(4), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> I = Oinf.ideal(x + y) >>> I.gens() (x, y, 1/x^2*y^2) >>> # 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.gens() (x, y)
- gens_over_base()[source]#
Return a set of generators of this ideal.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3^2)); _.<t> = K[] sage: F.<y> = K.extension(t^3 + t^2 - x^4) sage: Oinf = F.maximal_order_infinite() sage: I = Oinf.ideal(x + y) sage: I.gens_over_base() (x, y, 1/x^2*y^2)
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)**Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> F = K.extension(t**Integer(3) + t**Integer(2) - x**Integer(4), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> I = Oinf.ideal(x + y) >>> I.gens_over_base() (x, y, 1/x^2*y^2)
- gens_two()[source]#
Return a set of at most two generators of this ideal.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3^2)); R.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 + t^2 - x^4) sage: Oinf = F.maximal_order_infinite() sage: I = Oinf.ideal(x + y) sage: I.gens_two() (x, y) 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) sage: I.gens_two() (x,)
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)**Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = PolynomialRing(K, names=('t',)); (t,) = R._first_ngens(1) >>> F = K.extension(t**Integer(3) + t**Integer(2) - x**Integer(4), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> I = Oinf.ideal(x + y) >>> I.gens_two() (x, y) >>> # 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.gens_two() (x,)
- ideal_below()[source]#
Return a set of generators of this ideal.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3^2)); _.<t> = K[] sage: F.<y> = K.extension(t^3 + t^2 - x^4) sage: Oinf = F.maximal_order_infinite() sage: I = Oinf.ideal(1/y^2) sage: I.ideal_below() Ideal (x^3) of Maximal order of Rational function field in x over Finite Field in z2 of size 3^2
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)**Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = K['t']; (t,) = _._first_ngens(1) >>> F = K.extension(t**Integer(3) + t**Integer(2) - x**Integer(4), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> I = Oinf.ideal(Integer(1)/y**Integer(2)) >>> I.ideal_below() Ideal (x^3) of Maximal order of Rational function field in x over Finite Field in z2 of size 3^2
- is_prime()[source]#
Return
True
if this ideal is a prime ideal.EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3^2)); _.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 + t^2 - x^4) sage: Oinf = F.maximal_order_infinite() sage: I = Oinf.ideal(1/x) sage: I.factor() (Ideal (1/x^3*y^2) of Maximal infinite order of Function field in y defined by y^3 + y^2 + 2*x^4)^3 sage: I.is_prime() False sage: J = I.factor()[0][0] sage: J.is_prime() True 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(1/x) sage: I.factor() (Ideal (1/x*y) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x)^2 sage: I.is_prime() False sage: J = I.factor()[0][0] sage: J.is_prime() True
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)**Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('t',)); (t,) = _._first_ngens(1) >>> F = K.extension(t**Integer(3) + t**Integer(2) - x**Integer(4), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> I = Oinf.ideal(Integer(1)/x) >>> I.factor() (Ideal (1/x^3*y^2) of Maximal infinite order of Function field in y defined by y^3 + y^2 + 2*x^4)^3 >>> I.is_prime() False >>> J = I.factor()[Integer(0)][Integer(0)] >>> J.is_prime() True >>> # 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(Integer(1)/x) >>> I.factor() (Ideal (1/x*y) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x)^2 >>> I.is_prime() False >>> J = I.factor()[Integer(0)][Integer(0)] >>> J.is_prime() True
- prime_below()[source]#
Return the prime of the base order that underlies this prime ideal.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(3^2)); _.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 + t^2 - x^4) sage: Oinf = F.maximal_order_infinite() sage: I = Oinf.ideal(1/x) sage: I.factor() (Ideal (1/x^3*y^2) of Maximal infinite order of Function field in y defined by y^3 + y^2 + 2*x^4)^3 sage: J = I.factor()[0][0] sage: J.is_prime() True sage: J.prime_below() Ideal (1/x) of Maximal infinite order of Rational function field in x over Finite Field in z2 of size 3^2 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(1/x) sage: I.factor() (Ideal (1/x*y) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x)^2 sage: J = I.factor()[0][0] sage: J.is_prime() True sage: J.prime_below() Ideal (1/x) of Maximal infinite order of Rational function field in x over Finite Field of size 2
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(3)**Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('t',)); (t,) = _._first_ngens(1) >>> F = K.extension(t**Integer(3) + t**Integer(2) - x**Integer(4), names=('y',)); (y,) = F._first_ngens(1) >>> Oinf = F.maximal_order_infinite() >>> I = Oinf.ideal(Integer(1)/x) >>> I.factor() (Ideal (1/x^3*y^2) of Maximal infinite order of Function field in y defined by y^3 + y^2 + 2*x^4)^3 >>> J = I.factor()[Integer(0)][Integer(0)] >>> J.is_prime() True >>> J.prime_below() Ideal (1/x) of Maximal infinite order of Rational function field in x over Finite Field in z2 of size 3^2 >>> # 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(Integer(1)/x) >>> I.factor() (Ideal (1/x*y) of Maximal infinite order of Function field in y defined by y^2 + y + (x^2 + 1)/x)^2 >>> J = I.factor()[Integer(0)][Integer(0)] >>> J.is_prime() True >>> J.prime_below() Ideal (1/x) of Maximal infinite order of Rational function field in x over Finite Field of size 2
- valuation(ideal)[source]#
Return the valuation of
ideal
with respect to this prime ideal.INPUT:
ideal
– fractional ideal
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: I = Oinf.ideal(y) sage: [f.valuation(I) for f,_ in I.factor()] [-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() >>> I = Oinf.ideal(y) >>> [f.valuation(I) for f,_ in I.factor()] [-1]
- class sage.rings.function_field.ideal_polymod.FunctionFieldIdeal_global(ring, hnf, denominator=1)[source]#
Bases:
FunctionFieldIdeal_polymod
Fractional ideals of canonical function fields
INPUT:
ring
– order in a function fieldhnf
– matrix in hermite normal formdenominator
– denominator
The rows of
hnf
is a basis of the ideal, which itself isdenominator
times the fractional ideal.EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x^3*y - x) sage: O = L.maximal_order() sage: O.ideal(y) Ideal (y) of Maximal order of Function field in y defined by y^2 + x^3*y + x
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x**Integer(3)*y - x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> O.ideal(y) Ideal (y) of Maximal order of Function field in y defined by y^2 + x^3*y + x
- gens()[source]#
Return a set of generators of this ideal.
This provides whatever set of generators as quickly as possible.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 - x^3*Y - x) sage: O = L.maximal_order() sage: I = O.ideal(x + y) sage: I.gens() (x^4 + x^2 + x, y + x) sage: # needs sage.rings.finite_rings sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: O = L.maximal_order() sage: I = O.ideal(x + y) sage: I.gens() (x^3 + 1, y + 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) - x**Integer(3)*Y - x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(x + y) >>> I.gens() (x^4 + x^2 + x, y + x) >>> # needs sage.rings.finite_rings >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(x + y) >>> I.gens() (x^3 + 1, y + x)
- gens_two()[source]#
Return two generators of this fractional ideal.
If the ideal is principal, one generator may be returned.
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 = F.maximal_order() sage: I = O.ideal(y) sage: I # indirect doctest Ideal (y) of Maximal order of Function field in y defined by y^3 + x^6 + x^4 + x^2 sage: ~I # indirect doctest Ideal ((1/(x^6 + x^4 + x^2))*y^2) of Maximal order of Function field in y defined by y^3 + x^6 + x^4 + x^2 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: O = L.maximal_order() sage: I = O.ideal(y) sage: I # indirect doctest Ideal (y) of Maximal order of Function field in y defined by y^2 + y + (x^2 + 1)/x sage: ~I # indirect doctest Ideal ((x/(x^2 + 1))*y + x/(x^2 + 1)) of Maximal 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['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 = F.maximal_order() >>> I = O.ideal(y) >>> I # indirect doctest Ideal (y) of Maximal order of Function field in y defined by y^3 + x^6 + x^4 + x^2 >>> ~I # indirect doctest Ideal ((1/(x^6 + x^4 + x^2))*y^2) of Maximal order of Function field in y defined by y^3 + x^6 + x^4 + x^2 >>> # 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) >>> O = L.maximal_order() >>> I = O.ideal(y) >>> I # indirect doctest Ideal (y) of Maximal order of Function field in y defined by y^2 + y + (x^2 + 1)/x >>> ~I # indirect doctest Ideal ((x/(x^2 + 1))*y + x/(x^2 + 1)) of Maximal order of Function field in y defined by y^2 + y + (x^2 + 1)/x
- class sage.rings.function_field.ideal_polymod.FunctionFieldIdeal_polymod(ring, hnf, denominator=1)[source]#
Bases:
FunctionFieldIdeal
Fractional ideals of algebraic function fields
INPUT:
ring
– order in a function fieldhnf
– matrix in hermite normal formdenominator
– denominator
The rows of
hnf
is a basis of the ideal, which itself isdenominator
times the fractional ideal.EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x^3*y - x) sage: O = L.maximal_order() sage: O.ideal(y) Ideal (y) of Maximal order of Function field in y defined by y^2 + x^3*y + x
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = K['y']; (y,) = R._first_ngens(1) >>> L = K.extension(y**Integer(2) - x**Integer(3)*y - x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> O.ideal(y) Ideal (y) of Maximal order of Function field in y defined by y^2 + x^3*y + x
- basis_matrix()[source]#
Return the matrix of basis vectors of this ideal as a module.
The basis matrix is by definition the hermite norm form of the ideal divided by the denominator.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); R.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) sage: O = F.maximal_order() sage: I = O.ideal(x, 1/y) sage: I.denominator() * I.basis_matrix() == I.hnf() True
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); R = PolynomialRing(K, names=('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 = F.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> I.denominator() * I.basis_matrix() == I.hnf() True
- denominator()[source]#
Return the denominator of this fractional ideal.
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() sage: I = O.ideal(y/(y+1)) sage: d = I.denominator(); d x^3 sage: d in O 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) >>> L = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(y/(y+Integer(1))) >>> d = I.denominator(); d x^3 >>> d in O True
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x^3 - 1) sage: O = L.maximal_order() sage: I = O.ideal(y/(y+1)) sage: d = I.denominator(); d x^3 sage: d in O True
>>> 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(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(y/(y+Integer(1))) >>> d = I.denominator(); d x^3 >>> d in O True
- gens()[source]#
Return a set of generators of this ideal.
This provides whatever set of generators as quickly as possible.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 - x^3*Y - x) sage: O = L.maximal_order() sage: I = O.ideal(x + y) sage: I.gens() (x^4 + x^2 + x, y + x) sage: # needs sage.rings.finite_rings sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: O = L.maximal_order() sage: I = O.ideal(x + y) sage: I.gens() (x^3 + 1, y + 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) - x**Integer(3)*Y - x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(x + y) >>> I.gens() (x^4 + x^2 + x, y + x) >>> # needs sage.rings.finite_rings >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(x + y) >>> I.gens() (x^3 + 1, y + x)
- gens_over_base()[source]#
Return the generators of this ideal as a module over the maximal order of the base rational function field.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 - x^3*Y - x) sage: O = L.maximal_order() sage: I = O.ideal(x + y) sage: I.gens_over_base() (x^4 + x^2 + x, y + x) sage: # needs sage.rings.finite_rings sage: L.<y> = K.extension(Y^2 + Y + x + 1/x) sage: O = L.maximal_order() sage: I = O.ideal(x + y) sage: I.gens_over_base() (x^3 + 1, y + 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) - x**Integer(3)*Y - x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(x + y) >>> I.gens_over_base() (x^4 + x^2 + x, y + x) >>> # needs sage.rings.finite_rings >>> L = K.extension(Y**Integer(2) + Y + x + Integer(1)/x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(x + y) >>> I.gens_over_base() (x^3 + 1, y + x)
- hnf()[source]#
Return the matrix in hermite normal form representing this ideal.
See also
denominator()
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() sage: I = O.ideal(y*(y+1)); I.hnf() [x^6 + x^3 0] [ x^3 + 1 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() >>> I = O.ideal(y*(y+Integer(1))); I.hnf() [x^6 + x^3 0] [ x^3 + 1 1]
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x^3 - 1) sage: O = L.maximal_order() sage: I = O.ideal(y*(y+1)); I.hnf() [x^6 + x^3 0] [ x^3 + 1 1]
>>> 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(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(y*(y+Integer(1))); I.hnf() [x^6 + x^3 0] [ x^3 + 1 1]
- ideal_below()[source]#
Return the ideal below this ideal.
This is defined only for integral ideals.
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 = F.maximal_order() sage: I = O.ideal(x, 1/y) sage: I.ideal_below() Traceback (most recent call last): ... TypeError: not an integral ideal sage: J = I.denominator() * I sage: J.ideal_below() Ideal (x^3 + x^2 + x) of Maximal order of Rational function field in x over Finite Field of size 2 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: O = L.maximal_order() sage: I = O.ideal(x, 1/y) sage: I.ideal_below() Traceback (most recent call last): ... TypeError: not an integral ideal sage: J = I.denominator() * I sage: J.ideal_below() Ideal (x^3 + x) of Maximal order of Rational function field in x over Finite Field of size 2 sage: K.<x> = FunctionField(QQ); _.<t> = K[] sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) sage: O = F.maximal_order() sage: I = O.ideal(x, 1/y) sage: I.ideal_below() Traceback (most recent call last): ... TypeError: not an integral ideal sage: J = I.denominator() * I sage: J.ideal_below() Ideal (x^3 + x^2 + x) of Maximal order of Rational function field in x over Rational Field
>>> 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 = F.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> I.ideal_below() Traceback (most recent call last): ... TypeError: not an integral ideal >>> J = I.denominator() * I >>> J.ideal_below() Ideal (x^3 + x^2 + x) of Maximal order of Rational function field in x over Finite Field of size 2 >>> # 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) >>> O = L.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> I.ideal_below() Traceback (most recent call last): ... TypeError: not an integral ideal >>> J = I.denominator() * I >>> J.ideal_below() Ideal (x^3 + x) of Maximal order of Rational function field in x over Finite Field of size 2 >>> K = FunctionField(QQ, 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 = F.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> I.ideal_below() Traceback (most recent call last): ... TypeError: not an integral ideal >>> J = I.denominator() * I >>> J.ideal_below() Ideal (x^3 + x^2 + x) of Maximal order of Rational function field in x over Rational Field
- intersect(other)[source]#
Intersect this ideal with the other ideal as fractional ideals.
INPUT:
other
– ideal
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^2 - x^3*Y - x) sage: O = L.maximal_order() sage: I = O.ideal(x + y) sage: J = O.ideal(x) sage: I.intersect(J) == I * J * (I + J)^-1 True
>>> 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) - x**Integer(3)*Y - x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> I = O.ideal(x + y) >>> J = O.ideal(x) >>> I.intersect(J) == I * J * (I + J)**-Integer(1) True
- is_integral()[source]#
Return
True
if this is an integral ideal.EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) sage: O = F.maximal_order() sage: I = O.ideal(x, 1/y) sage: I.is_integral() False sage: J = I.denominator() * I sage: J.is_integral() True 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: O = L.maximal_order() sage: I = O.ideal(x, 1/y) sage: I.is_integral() False sage: J = I.denominator() * I sage: J.is_integral() True sage: K.<x> = FunctionField(QQ); _.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) sage: O = F.maximal_order() sage: I = O.ideal(x, 1/y) sage: I.is_integral() False sage: J = I.denominator() * I sage: J.is_integral() True
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('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 = F.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> I.is_integral() False >>> J = I.denominator() * I >>> J.is_integral() True >>> # 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) >>> O = L.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> I.is_integral() False >>> J = I.denominator() * I >>> J.is_integral() True >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('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 = F.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> I.is_integral() False >>> J = I.denominator() * I >>> J.is_integral() True
- is_prime()[source]#
Return
True
if this ideal is a prime ideal.EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) sage: O = F.maximal_order() sage: I = O.ideal(y) sage: [f.is_prime() for f,_ in I.factor()] [True, True] 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: O = L.maximal_order() sage: I = O.ideal(y) sage: [f.is_prime() for f,_ in I.factor()] [True, True] sage: K.<x> = FunctionField(QQ); _.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) sage: O = F.maximal_order() sage: I = O.ideal(y) sage: [f.is_prime() for f,_ in I.factor()] [True, True]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('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 = F.maximal_order() >>> I = O.ideal(y) >>> [f.is_prime() for f,_ in I.factor()] [True, True] >>> # 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) >>> O = L.maximal_order() >>> I = O.ideal(y) >>> [f.is_prime() for f,_ in I.factor()] [True, True] >>> K = FunctionField(QQ, names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('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 = F.maximal_order() >>> I = O.ideal(y) >>> [f.is_prime() for f,_ in I.factor()] [True, True]
- module()[source]#
Return the module, that is the ideal viewed as a module over the base maximal order.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(7)); R.<y> = K[] sage: F.<y> = K.extension(y^2 - x^3 - 1) sage: O = F.maximal_order() sage: I = O.ideal(x, 1/y) 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/(x^3 + 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) >>> F = K.extension(y**Integer(2) - x**Integer(3) - Integer(1), names=('y',)); (y,) = F._first_ngens(1) >>> O = F.maximal_order() >>> I = O.ideal(x, Integer(1)/y) >>> 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/(x^3 + 1)]
- norm()[source]#
Return the norm of this fractional ideal.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K) sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2) sage: O = F.maximal_order() sage: i1 = O.ideal(x) sage: i2 = O.ideal(y) sage: i3 = i1 * i2 sage: i3.norm() == i1.norm() * i2.norm() True sage: i1.norm() x^3 sage: i1.norm() == x ** F.degree() True sage: i2.norm() x^6 + x^4 + x^2 sage: i2.norm() == y.norm() True 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: O = L.maximal_order() sage: i1 = O.ideal(x) sage: i2 = O.ideal(y) sage: i3 = i1 * i2 sage: i3.norm() == i1.norm() * i2.norm() True sage: i1.norm() x^2 sage: i1.norm() == x ** L.degree() True sage: i2.norm() (x^2 + 1)/x sage: i2.norm() == y.norm() True
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(2)), names=('x',)); (x,) = K._first_ngens(1); _ = PolynomialRing(K, names=('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 = F.maximal_order() >>> i1 = O.ideal(x) >>> i2 = O.ideal(y) >>> i3 = i1 * i2 >>> i3.norm() == i1.norm() * i2.norm() True >>> i1.norm() x^3 >>> i1.norm() == x ** F.degree() True >>> i2.norm() x^6 + x^4 + x^2 >>> i2.norm() == y.norm() True >>> # 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) >>> O = L.maximal_order() >>> i1 = O.ideal(x) >>> i2 = O.ideal(y) >>> i3 = i1 * i2 >>> i3.norm() == i1.norm() * i2.norm() True >>> i1.norm() x^2 >>> i1.norm() == x ** L.degree() True >>> i2.norm() (x^2 + 1)/x >>> i2.norm() == y.norm() True
- prime_below()[source]#
Return the prime lying below this prime ideal.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) sage: O = F.maximal_order() sage: I = O.ideal(y) sage: [f.prime_below() for f,_ in I.factor()] [Ideal (x) of Maximal order of Rational function field in x over Finite Field of size 2, Ideal (x^2 + x + 1) of Maximal order of Rational function field in x over Finite Field of size 2] 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: O = L.maximal_order() sage: I = O.ideal(y) sage: [f.prime_below() for f,_ in I.factor()] [Ideal (x) of Maximal order of Rational function field in x over Finite Field of size 2, Ideal (x + 1) of Maximal order of Rational function field in x over Finite Field of size 2] sage: K.<x> = FunctionField(QQ); _.<Y> = K[] sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2) sage: O = F.maximal_order() sage: I = O.ideal(y) sage: [f.prime_below() for f,_ in I.factor()] [Ideal (x) of Maximal order of Rational function field in x over Rational Field, Ideal (x^2 + x + 1) of Maximal order of Rational function field in x over Rational Field]
>>> 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) >>> F = K.extension(Y**Integer(3) - x**Integer(2)*(x**Integer(2) + x + Integer(1))**Integer(2), names=('y',)); (y,) = F._first_ngens(1) >>> O = F.maximal_order() >>> I = O.ideal(y) >>> [f.prime_below() for f,_ in I.factor()] [Ideal (x) of Maximal order of Rational function field in x over Finite Field of size 2, Ideal (x^2 + x + 1) of Maximal order of Rational function field in x over Finite Field of size 2] >>> # 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) >>> O = L.maximal_order() >>> I = O.ideal(y) >>> [f.prime_below() for f,_ in I.factor()] [Ideal (x) of Maximal order of Rational function field in x over Finite Field of size 2, Ideal (x + 1) of Maximal order of Rational function field in x over Finite Field of size 2] >>> 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) >>> O = F.maximal_order() >>> I = O.ideal(y) >>> [f.prime_below() for f,_ in I.factor()] [Ideal (x) of Maximal order of Rational function field in x over Rational Field, Ideal (x^2 + x + 1) of Maximal order of Rational function field in x over Rational Field]
- valuation(ideal)[source]#
Return the valuation of
ideal
at this prime ideal.INPUT:
ideal
– fractional ideal
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 = F.maximal_order() sage: I = O.ideal(x, (1/(x^3 + x^2 + x))*y^2) sage: I.is_prime() True sage: J = O.ideal(y) sage: I.valuation(J) 2 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: O = L.maximal_order() sage: I = O.ideal(y) sage: [f.valuation(I) for f,_ in I.factor()] [-1, 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 = F.maximal_order() >>> I = O.ideal(x, (Integer(1)/(x**Integer(3) + x**Integer(2) + x))*y**Integer(2)) >>> I.is_prime() True >>> J = O.ideal(y) >>> I.valuation(J) 2 >>> # 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) >>> O = L.maximal_order() >>> I = O.ideal(y) >>> [f.valuation(I) for f,_ in I.factor()] [-1, 2]
The method closely follows Algorithm 4.8.17 of [Coh1993].