Ideals of function fields: extension#

class sage.rings.function_field.ideal_polymod.FunctionFieldIdealInfinite_polymod(ring, ideal)#

Bases: FunctionFieldIdealInfinite

Ideals of the infinite maximal order of an algebraic function field.

INPUT:

  • ring – infinite maximal order of the function field

  • ideal – ideal in the inverted function field

EXAMPLES:

sage: K.<x> = FunctionField(GF(3^2)); R.<t> = PolynomialRing(K)                                                 # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 + t^2 - x^4)                                                                      # optional - sage.rings.finite_rings
sage: Oinf = F.maximal_order_infinite()                                                                         # optional - sage.rings.finite_rings
sage: Oinf.ideal(1/y)                                                                                           # optional - sage.rings.finite_rings
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()#

Return a set of generators of this ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(3^2)); R.<t> = PolynomialRing(K)                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 + t^2 - x^4)                                                                  # optional - sage.rings.finite_rings
sage: Oinf = F.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(x + y)                                                                                 # optional - sage.rings.finite_rings
sage: I.gens()                                                                                              # optional - sage.rings.finite_rings
(x, y, 1/x^2*y^2)

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: Oinf = L.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(x + y)                                                                                 # optional - sage.rings.finite_rings
sage: I.gens()                                                                                              # optional - sage.rings.finite_rings
(x, y)
gens_over_base()#

Return a set of generators of this ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(3^2)); _.<t> = K[]                                                           # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 + t^2 - x^4)                                                                  # optional - sage.rings.finite_rings
sage: Oinf = F.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(x + y)                                                                                 # optional - sage.rings.finite_rings
sage: I.gens_over_base()                                                                                    # optional - sage.rings.finite_rings
(x, y, 1/x^2*y^2)
gens_two()#

Return a set of at most two generators of this ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(3^2)); R.<t> = PolynomialRing(K)                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 + t^2 - x^4)                                                                  # optional - sage.rings.finite_rings
sage: Oinf = F.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(x + y)                                                                                 # optional - sage.rings.finite_rings
sage: I.gens_two()                                                                                          # optional - sage.rings.finite_rings
(x, y)

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: Oinf = L.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(x + y)                                                                                 # optional - sage.rings.finite_rings
sage: I.gens_two()                                                                                          # optional - sage.rings.finite_rings
(x,)
ideal_below()#

Return a set of generators of this ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(3^2)); _.<t> = K[]                                                           # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 + t^2 - x^4)                                                                  # optional - sage.rings.finite_rings
sage: Oinf = F.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(1/y^2)                                                                                 # optional - sage.rings.finite_rings
sage: I.ideal_below()                                                                                       # optional - sage.rings.finite_rings
Ideal (x^3) of Maximal order of Rational function field
in x over Finite Field in z2 of size 3^2
is_prime()#

Return True if this ideal is a prime ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(3^2)); _.<t> = PolynomialRing(K)                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 + t^2 - x^4)                                                                  # optional - sage.rings.finite_rings
sage: Oinf = F.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(1/x)                                                                                   # optional - sage.rings.finite_rings
sage: I.factor()                                                                                            # optional - sage.rings.finite_rings
(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()                                                                                          # optional - sage.rings.finite_rings
False
sage: J = I.factor()[0][0]                                                                                  # optional - sage.rings.finite_rings
sage: J.is_prime()                                                                                          # optional - sage.rings.finite_rings
True

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: Oinf = L.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(1/x)                                                                                   # optional - sage.rings.finite_rings
sage: I.factor()                                                                                            # optional - sage.rings.finite_rings
(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()                                                                                          # optional - sage.rings.finite_rings
False
sage: J = I.factor()[0][0]                                                                                  # optional - sage.rings.finite_rings
sage: J.is_prime()                                                                                          # optional - sage.rings.finite_rings
True
prime_below()#

Return the prime of the base order that underlies this prime ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(3^2)); _.<t> = PolynomialRing(K)                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 + t^2 - x^4)                                                                  # optional - sage.rings.finite_rings
sage: Oinf = F.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(1/x)                                                                                   # optional - sage.rings.finite_rings
sage: I.factor()                                                                                            # optional - sage.rings.finite_rings
(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]                                                                                  # optional - sage.rings.finite_rings
sage: J.is_prime()                                                                                          # optional - sage.rings.finite_rings
True
sage: J.prime_below()                                                                                       # optional - sage.rings.finite_rings
Ideal (1/x) of Maximal infinite order of Rational function field
in x over Finite Field in z2 of size 3^2

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: Oinf = L.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(1/x)                                                                                   # optional - sage.rings.finite_rings
sage: I.factor()                                                                                            # optional - sage.rings.finite_rings
(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]                                                                                  # optional - sage.rings.finite_rings
sage: J.is_prime()                                                                                          # optional - sage.rings.finite_rings
True
sage: J.prime_below()                                                                                       # optional - sage.rings.finite_rings
Ideal (1/x) of Maximal infinite order of Rational function field in x
over Finite Field of size 2
valuation(ideal)#

Return the valuation of ideal with respect to this prime ideal.

INPUT:

  • ideal – fractional ideal

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: Oinf = L.maximal_order_infinite()                                                                     # optional - sage.rings.finite_rings
sage: I = Oinf.ideal(y)                                                                                     # optional - sage.rings.finite_rings
sage: [f.valuation(I) for f,_ in I.factor()]                                                                # optional - sage.rings.finite_rings
[-1]
class sage.rings.function_field.ideal_polymod.FunctionFieldIdeal_global(ring, hnf, denominator=1)#

Bases: FunctionFieldIdeal_polymod

Fractional ideals of canonical function fields

INPUT:

  • ring – order in a function field

  • hnf – matrix in hermite normal form

  • denominator – denominator

The rows of hnf is a basis of the ideal, which itself is denominator times the fractional ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); R.<y> = K[]                                                                 # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(y^2 - x^3*y - x)                                                                      # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                     # optional - sage.rings.finite_rings
sage: O.ideal(y)                                                                                                # optional - sage.rings.finite_rings
Ideal (y) of Maximal order of Function field in y defined by y^2 + x^3*y + x
gens()#

Return a set of generators of this ideal.

This provides whatever set of generators as quickly as possible.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 - x^3*Y - x)                                                                  # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x + y)                                                                                    # optional - sage.rings.finite_rings
sage: I.gens()                                                                                              # optional - sage.rings.finite_rings
(x^4 + x^2 + x, y + x)

sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x + y)                                                                                    # optional - sage.rings.finite_rings
sage: I.gens()                                                                                              # optional - sage.rings.finite_rings
(x^3 + 1, y + x)
gens_two()#

Return two generators of this fractional ideal.

If the ideal is principal, one generator may be returned.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<t> = K[]                                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2)                                                        # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: I  # indirect doctest                                                                                 # optional - sage.rings.finite_rings
Ideal (y) of Maximal order of Function field
in y defined by y^3 + x^6 + x^4 + x^2
sage: ~I  # indirect doctest                                                                                # optional - sage.rings.finite_rings
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: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: I  # indirect doctest                                                                                 # optional - sage.rings.finite_rings
Ideal (y) of Maximal order of Function field in y
defined by y^2 + y + (x^2 + 1)/x
sage: ~I  # indirect doctest                                                                                # optional - sage.rings.finite_rings
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)#

Bases: FunctionFieldIdeal

Fractional ideals of algebraic function fields

INPUT:

  • ring – order in a function field

  • hnf – matrix in hermite normal form

  • denominator – denominator

The rows of hnf is a basis of the ideal, which itself is denominator times the fractional ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); R.<y> = K[]                                                                 # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(y^2 - x^3*y - x)                                                                      # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                     # optional - sage.rings.finite_rings
sage: O.ideal(y)                                                                                                # optional - sage.rings.finite_rings
Ideal (y) of Maximal order of Function field in y defined by y^2 + x^3*y + x
basis_matrix()#

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: K.<x> = FunctionField(GF(2)); R.<t> = PolynomialRing(K)                                               # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2)                                                            # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x, 1/y)                                                                                   # optional - sage.rings.finite_rings
sage: I.denominator() * I.basis_matrix() == I.hnf()                                                         # optional - sage.rings.finite_rings
True
denominator()#

Return the denominator of this fractional ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(y^2 - x^3 - 1)                                                                    # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y/(y+1))                                                                                  # optional - sage.rings.finite_rings
sage: d = I.denominator(); d                                                                                # optional - sage.rings.finite_rings
x^3
sage: d in O                                                                                                # optional - sage.rings.finite_rings
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
gens()#

Return a set of generators of this ideal.

This provides whatever set of generators as quickly as possible.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 - x^3*Y - x)                                                                  # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x + y)                                                                                    # optional - sage.rings.finite_rings
sage: I.gens()                                                                                              # optional - sage.rings.finite_rings
(x^4 + x^2 + x, y + x)

sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x + y)                                                                                    # optional - sage.rings.finite_rings
sage: I.gens()                                                                                              # optional - sage.rings.finite_rings
(x^3 + 1, y + x)
gens_over_base()#

Return the generators of this ideal as a module over the maximal order of the base rational function field.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 - x^3*Y - x)                                                                  # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x + y)                                                                                    # optional - sage.rings.finite_rings
sage: I.gens_over_base()                                                                                    # optional - sage.rings.finite_rings
(x^4 + x^2 + x, y + x)

sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x + y)                                                                                    # optional - sage.rings.finite_rings
sage: I.gens_over_base()                                                                                    # optional - sage.rings.finite_rings
(x^3 + 1, y + x)
hnf()#

Return the matrix in hermite normal form representing this ideal.

See also denominator()

EXAMPLES:

sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(y^2 - x^3 - 1)                                                                    # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y*(y+1)); I.hnf()                                                                         # optional - sage.rings.finite_rings
[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]
ideal_below()#

Return the ideal below this ideal.

This is defined only for integral ideals.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<t> = K[]                                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2)                                                            # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x, 1/y)                                                                                   # optional - sage.rings.finite_rings
sage: I.ideal_below()                                                                                       # optional - sage.rings.finite_rings
Traceback (most recent call last):
...
TypeError: not an integral ideal
sage: J = I.denominator() * I                                                                               # optional - sage.rings.finite_rings
sage: J.ideal_below()                                                                                       # optional - sage.rings.finite_rings
Ideal (x^3 + x^2 + x) of Maximal order of Rational function field
in x over Finite Field of size 2

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x, 1/y)                                                                                   # optional - sage.rings.finite_rings
sage: I.ideal_below()                                                                                       # optional - sage.rings.finite_rings
Traceback (most recent call last):
...
TypeError: not an integral ideal
sage: J = I.denominator() * I                                                                               # optional - sage.rings.finite_rings
sage: J.ideal_below()                                                                                       # optional - sage.rings.finite_rings
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
intersect(other)#

Intersect this ideal with the other ideal as fractional ideals.

INPUT:

  • other – ideal

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 - x^3*Y - x)                                                                  # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x + y)                                                                                    # optional - sage.rings.finite_rings
sage: J = O.ideal(x)                                                                                        # optional - sage.rings.finite_rings
sage: I.intersect(J) == I * J * (I + J)^-1                                                                  # optional - sage.rings.finite_rings
True
is_integral()#

Return True if this is an integral ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K)                                               # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2)                                                            # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x, 1/y)                                                                                   # optional - sage.rings.finite_rings
sage: I.is_integral()                                                                                       # optional - sage.rings.finite_rings
False
sage: J = I.denominator() * I                                                                               # optional - sage.rings.finite_rings
sage: J.is_integral()                                                                                       # optional - sage.rings.finite_rings
True

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x, 1/y)                                                                                   # optional - sage.rings.finite_rings
sage: I.is_integral()                                                                                       # optional - sage.rings.finite_rings
False
sage: J = I.denominator() * I                                                                               # optional - sage.rings.finite_rings
sage: J.is_integral()                                                                                       # optional - sage.rings.finite_rings
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
is_prime()#

Return True if this ideal is a prime ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K)                                               # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2)                                                            # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: [f.is_prime() for f,_ in I.factor()]                                                                  # optional - sage.rings.finite_rings
[True, True]

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: [f.is_prime() for f,_ in I.factor()]                                                                  # optional - sage.rings.finite_rings
[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]
module()#

Return the module, that is the ideal viewed as a module over the base maximal order.

EXAMPLES:

sage: K.<x> = FunctionField(GF(7)); R.<y> = K[]                                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(y^2 - x^3 - 1)                                                                    # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x, 1/y)                                                                                   # optional - sage.rings.finite_rings
sage: I.module()                                                                                            # optional - sage.rings.finite_rings
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()#

Return the norm of this fractional ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<t> = PolynomialRing(K)                                               # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 - x^2*(x^2+x+1)^2)                                                            # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: i1 = O.ideal(x)                                                                                       # optional - sage.rings.finite_rings
sage: i2 = O.ideal(y)                                                                                       # optional - sage.rings.finite_rings
sage: i3 = i1 * i2                                                                                          # optional - sage.rings.finite_rings
sage: i3.norm() == i1.norm() * i2.norm()                                                                    # optional - sage.rings.finite_rings
True
sage: i1.norm()                                                                                             # optional - sage.rings.finite_rings
x^3
sage: i1.norm() == x ** F.degree()                                                                          # optional - sage.rings.finite_rings
True
sage: i2.norm()                                                                                             # optional - sage.rings.finite_rings
x^6 + x^4 + x^2
sage: i2.norm() == y.norm()                                                                                 # optional - sage.rings.finite_rings
True

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: i1 = O.ideal(x)                                                                                       # optional - sage.rings.finite_rings
sage: i2 = O.ideal(y)                                                                                       # optional - sage.rings.finite_rings
sage: i3 = i1 * i2                                                                                          # optional - sage.rings.finite_rings
sage: i3.norm() == i1.norm() * i2.norm()                                                                    # optional - sage.rings.finite_rings
True
sage: i1.norm()                                                                                             # optional - sage.rings.finite_rings
x^2
sage: i1.norm() == x ** L.degree()                                                                          # optional - sage.rings.finite_rings
True
sage: i2.norm()                                                                                             # optional - sage.rings.finite_rings
(x^2 + 1)/x
sage: i2.norm() == y.norm()                                                                                 # optional - sage.rings.finite_rings
True
prime_below()#

Return the prime lying below this prime ideal.

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(Y^3 - x^2*(x^2 + x + 1)^2)                                                        # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: [f.prime_below() for f,_ in I.factor()]                                                               # optional - sage.rings.finite_rings
[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: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: [f.prime_below() for f,_ in I.factor()]                                                               # optional - sage.rings.finite_rings
[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]
valuation(ideal)#

Return the valuation of ideal at this prime ideal.

INPUT:

  • ideal – fractional ideal

EXAMPLES:

sage: K.<x> = FunctionField(GF(2)); _.<t> = K[]                                                             # optional - sage.rings.finite_rings
sage: F.<y> = K.extension(t^3 - x^2*(x^2 + x + 1)^2)                                                        # optional - sage.rings.finite_rings
sage: O = F.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(x, (1/(x^3 + x^2 + x))*y^2)                                                               # optional - sage.rings.finite_rings
sage: I.is_prime()                                                                                          # optional - sage.rings.finite_rings
True
sage: J = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: I.valuation(J)                                                                                        # optional - sage.rings.finite_rings
2

sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[]                                                             # optional - sage.rings.finite_rings
sage: L.<y> = K.extension(Y^2 + Y + x + 1/x)                                                                # optional - sage.rings.finite_rings
sage: O = L.maximal_order()                                                                                 # optional - sage.rings.finite_rings
sage: I = O.ideal(y)                                                                                        # optional - sage.rings.finite_rings
sage: [f.valuation(I) for f,_ in I.factor()]                                                                # optional - sage.rings.finite_rings
[-1, 2]

The method closely follows Algorithm 4.8.17 of [Coh1993].