Places of function fields: extension¶
- class sage.rings.function_field.place_polymod.FunctionFieldPlace_polymod(parent, prime)[source]¶
Bases:
FunctionFieldPlace
Places of extensions of function fields.
- degree()[source]¶
Return the degree of the place.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x^3*Y + x) sage: OK = K.maximal_order() sage: OL = L.maximal_order() sage: p = OK.ideal(x^2 + x + 1) sage: dec = OL.decomposition(p) sage: q = dec[0][0].place() sage: q.degree() 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(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1) >>> OK = K.maximal_order() >>> OL = L.maximal_order() >>> p = OK.ideal(x**Integer(2) + x + Integer(1)) >>> dec = OL.decomposition(p) >>> q = dec[Integer(0)][Integer(0)].place() >>> q.degree() 2
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^3 + x^3*Y + x) OK = K.maximal_order() OL = L.maximal_order() p = OK.ideal(x^2 + x + 1) dec = OL.decomposition(p) q = dec[0][0].place() q.degree()
- gaps()[source]¶
Return the gap sequence for the place.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x^3*Y + x) sage: O = L.maximal_order() sage: p = O.ideal(x,y).place() sage: p.gaps() # a Weierstrass place [1, 2, 4] sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] # needs sage.rings.finite_rings sage: L.<y> = K.extension(Y^3 + x^3 * Y + x) # needs sage.rings.finite_rings sage: [p.gaps() for p in L.places()] # needs sage.rings.finite_rings [[1, 2, 4], [1, 2, 4], [1, 2, 4]]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(4)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1) >>> O = L.maximal_order() >>> p = O.ideal(x,y).place() >>> p.gaps() # a Weierstrass place [1, 2, 4] >>> 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(3) + x**Integer(3) * Y + x, names=('y',)); (y,) = L._first_ngens(1)# needs sage.rings.finite_rings >>> [p.gaps() for p in L.places()] # needs sage.rings.finite_rings [[1, 2, 4], [1, 2, 4], [1, 2, 4]]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(4)); _.<Y> = K[] L.<y> = K.extension(Y^3 + x^3*Y + x) O = L.maximal_order() p = O.ideal(x,y).place() p.gaps() # a Weierstrass place K.<x> = FunctionField(GF(2)); _.<Y> = K[] # needs sage.rings.finite_rings L.<y> = K.extension(Y^3 + x^3 * Y + x) # needs sage.rings.finite_rings [p.gaps() for p in L.places()] # needs sage.rings.finite_rings
- is_infinite_place()[source]¶
Return
True
if the place is above the unique infinite place of the underlying rational function field.EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x^3*Y + x) sage: pls = L.places() sage: [p.is_infinite_place() for p in pls] [True, True, False] sage: [p.place_below() for p in pls] [Place (1/x), Place (1/x), Place (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(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1) >>> pls = L.places() >>> [p.is_infinite_place() for p in pls] [True, True, False] >>> [p.place_below() for p in pls] [Place (1/x), Place (1/x), Place (x)]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^3 + x^3*Y + x) pls = L.places() [p.is_infinite_place() for p in pls] [p.place_below() for p in pls]
- local_uniformizer()[source]¶
Return an element of the function field that has a simple zero at the place.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(4)); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x^3*Y + x) sage: pls = L.places() sage: [p.local_uniformizer().valuation(p) for p in pls] [1, 1, 1, 1, 1]
>>> from sage.all import * >>> # needs sage.rings.finite_rings >>> K = FunctionField(GF(Integer(4)), names=('x',)); (x,) = K._first_ngens(1); _ = K['Y']; (Y,) = _._first_ngens(1) >>> L = K.extension(Y**Integer(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1) >>> pls = L.places() >>> [p.local_uniformizer().valuation(p) for p in pls] [1, 1, 1, 1, 1]
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(4)); _.<Y> = K[] L.<y> = K.extension(Y^3 + x^3*Y + x) pls = L.places() [p.local_uniformizer().valuation(p) for p in pls]
- place_below()[source]¶
Return the place lying below the place.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x^3*Y + x) sage: OK = K.maximal_order() sage: OL = L.maximal_order() sage: p = OK.ideal(x^2 + x + 1) sage: dec = OL.decomposition(p) sage: q = dec[0][0].place() sage: q.place_below() Place (x^2 + x + 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(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1) >>> OK = K.maximal_order() >>> OL = L.maximal_order() >>> p = OK.ideal(x**Integer(2) + x + Integer(1)) >>> dec = OL.decomposition(p) >>> q = dec[Integer(0)][Integer(0)].place() >>> q.place_below() Place (x^2 + x + 1)
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^3 + x^3*Y + x) OK = K.maximal_order() OL = L.maximal_order() p = OK.ideal(x^2 + x + 1) dec = OL.decomposition(p) q = dec[0][0].place() q.place_below()
- relative_degree()[source]¶
Return the relative degree of the place.
EXAMPLES:
sage: # needs sage.rings.finite_rings sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x^3*Y + x) sage: OK = K.maximal_order() sage: OL = L.maximal_order() sage: p = OK.ideal(x^2 + x + 1) sage: dec = OL.decomposition(p) sage: q = dec[0][0].place() sage: q.relative_degree() 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(3) + x**Integer(3)*Y + x, names=('y',)); (y,) = L._first_ngens(1) >>> OK = K.maximal_order() >>> OL = L.maximal_order() >>> p = OK.ideal(x**Integer(2) + x + Integer(1)) >>> dec = OL.decomposition(p) >>> q = dec[Integer(0)][Integer(0)].place() >>> q.relative_degree() 1
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^3 + x^3*Y + x) OK = K.maximal_order() OL = L.maximal_order() p = OK.ideal(x^2 + x + 1) dec = OL.decomposition(p) q = dec[0][0].place() q.relative_degree()
- residue_field(name=None)[source]¶
Return the residue field of the place.
INPUT:
name
– string; name of the generator of the residue field
OUTPUT:
a field isomorphic to the residue field
a ring homomorphism from the valuation ring to the field
a ring homomorphism from the field to the valuation ring
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: p = L.places_finite()[0] sage: k, fr_k, to_k = p.residue_field() sage: k Finite Field of size 2 sage: fr_k Ring morphism: From: Finite Field of size 2 To: Valuation ring at Place (x, x*y) sage: to_k Ring morphism: From: Valuation ring at Place (x, x*y) To: Finite Field of size 2 sage: to_k(y) Traceback (most recent call last): ... TypeError: y fails to convert into the map's domain Valuation ring at Place (x, x*y)... sage: to_k(1/y) 0 sage: to_k(y/(1+y)) 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) >>> p = L.places_finite()[Integer(0)] >>> k, fr_k, to_k = p.residue_field() >>> k Finite Field of size 2 >>> fr_k Ring morphism: From: Finite Field of size 2 To: Valuation ring at Place (x, x*y) >>> to_k Ring morphism: From: Valuation ring at Place (x, x*y) To: Finite Field of size 2 >>> to_k(y) Traceback (most recent call last): ... TypeError: y fails to convert into the map's domain Valuation ring at Place (x, x*y)... >>> to_k(Integer(1)/y) 0 >>> to_k(y/(Integer(1)+y)) 1
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) p = L.places_finite()[0] k, fr_k, to_k = p.residue_field() k fr_k to_k to_k(y) to_k(1/y) to_k(y/(1+y))
- valuation_ring()[source]¶
Return the valuation ring at the place.
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: p = L.places_finite()[0] sage: p.valuation_ring() Valuation ring at Place (x, 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) >>> p = L.places_finite()[Integer(0)] >>> p.valuation_ring() Valuation ring at Place (x, x*y)
# needs sage.rings.finite_rings K.<x> = FunctionField(GF(2)); _.<Y> = K[] L.<y> = K.extension(Y^2 + Y + x + 1/x) p = L.places_finite()[0] p.valuation_ring()