Morphisms of function fields¶
Maps and morphisms useful for computations with function fields.
EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[]
sage: K.hom(1/x)
Function Field endomorphism of Rational function field in x over Rational Field
Defn: x |--> 1/x
sage: L.<y> = K.extension(y^2 - x)
sage: K.hom(y)
Function Field morphism:
From: Rational function field in x over Rational Field
To: Function field in y defined by y^2 - x
Defn: x |--> y
sage: L.hom([y,x])
Function Field endomorphism of Function field in y defined by y^2 - x
Defn: y |--> y
x |--> x
sage: L.hom([x,y])
Traceback (most recent call last):
...
ValueError: invalid morphism
For global function fields, which have positive characteristics, the higher derivation is available:
sage: K.<x> = FunctionField(GF(2)); _.<Y>=K[]
sage: L.<y> = K.extension(Y^3+x+x^3*Y)
sage: h = L.higher_derivation()
sage: h(y^2, 2)
((x^7 + 1)/x^2)*y^2 + x^3*y
AUTHORS:
William Stein (2010): initial version
Julian Rüth (2011-09-14, 2014-06-23, 2017-08-21): refactored class hierarchy; added derivation classes; morphisms to/from fraction fields
Kwankyu Lee (2017-04-30): added higher derivations and completions
- class sage.rings.function_field.maps.FractionFieldToFunctionField¶
Bases:
sage.rings.function_field.maps.FunctionFieldVectorSpaceIsomorphism
Isomorphism from a fraction field of a polynomial ring to the isomorphic function field.
EXAMPLES:
sage: K = QQ['x'].fraction_field() sage: L = K.function_field() sage: f = L.coerce_map_from(K); f Isomorphism: From: Fraction Field of Univariate Polynomial Ring in x over Rational Field To: Rational function field in x over Rational Field
See also
- section()¶
Return the inverse map of this isomorphism.
EXAMPLES:
sage: K = QQ['x'].fraction_field() sage: L = K.function_field() sage: f = L.coerce_map_from(K) sage: f.section() Isomorphism: From: Rational function field in x over Rational Field To: Fraction Field of Univariate Polynomial Ring in x over Rational Field
- class sage.rings.function_field.maps.FunctionFieldCompletion(field, place, name=None, prec=None, gen_name=None)¶
Bases:
sage.categories.map.Map
Completions on function fields.
INPUT:
field
– function fieldplace
– place of the function fieldname
– string for the name of the series variableprec
– positive integer; default precisiongen_name
– string; name of the generator of the residue field; used only when place is non-rational
EXAMPLES:
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: m = L.completion(p) sage: m Completion map: From: Function field in y defined by y^2 + y + (x^2 + 1)/x To: Laurent Series Ring in s over Finite Field of size 2 sage: m(x) s^2 + s^3 + s^4 + s^5 + s^7 + s^8 + s^9 + s^10 + s^12 + s^13 + s^15 + s^16 + s^17 + s^19 + O(s^22) sage: m(y) s^-1 + 1 + s^3 + s^5 + s^7 + s^9 + s^13 + s^15 + s^17 + O(s^19) sage: m(x*y) == m(x) * m(y) True sage: m(x+y) == m(x) + m(y) True
The variable name of the series can be supplied. If the place is not rational such that the residue field is a proper extension of the constant field, you can also specify the generator name of the extension:
sage: p2 = L.places_finite(2)[0] sage: p2 Place (x^2 + x + 1, x*y + 1) sage: m2 = L.completion(p2, 't', gen_name='b') sage: m2(x) (b + 1) + t + t^2 + t^4 + t^8 + t^16 + O(t^20) sage: m2(y) b + b*t + b*t^3 + b*t^4 + (b + 1)*t^5 + (b + 1)*t^7 + b*t^9 + b*t^11 + b*t^12 + b*t^13 + b*t^15 + b*t^16 + (b + 1)*t^17 + (b + 1)*t^19 + O(t^20)
- default_precision()¶
Return the default precision.
EXAMPLES:
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: m = L.completion(p) sage: m.default_precision() 20
- class sage.rings.function_field.maps.FunctionFieldConversionToConstantBaseField(parent)¶
Bases:
sage.categories.map.Map
Conversion map from the function field to its constant base field.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: QQ.convert_map_from(K) Conversion map: From: Rational function field in x over Rational Field To: Rational Field
- class sage.rings.function_field.maps.FunctionFieldDerivation(K)¶
Bases:
sage.categories.map.Map
Base class for derivations on function fields.
A derivation on \(R\) is a map \(R \to R\) with \(D(\alpha+\beta)=D(\alpha)+D(\beta)\) and \(D(\alpha\beta)=\beta D(\alpha)+\alpha D(\beta)\) for all \(\alpha,\beta\in R\).
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: d = K.derivation() sage: d Derivation map: From: Rational function field in x over Rational Field To: Rational function field in x over Rational Field Defn: x |--> 1
- is_injective()¶
Return
False
since a derivation is never injective.EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: d = K.derivation() sage: d.is_injective() False
- class sage.rings.function_field.maps.FunctionFieldDerivation_inseparable(L)¶
Bases:
sage.rings.function_field.maps.FunctionFieldDerivation
A generator of the space of derivations on
L
.INPUT:
L
– a function field which is an inseparable extension of its base field.
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: d = L.derivation()
This also works for iterated non-monic extensions:
sage: K.<x> = FunctionField(GF(2)) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - 1/x) sage: R.<z> = L[] sage: M.<z> = L.extension(z^2*y - x^3) sage: M.derivation() Derivation map: From: Function field in z defined by y*z^2 + x^3 To: Function field in z defined by y*z^2 + x^3 Defn: z |--> 1 y |--> 0 x |--> 0
- class sage.rings.function_field.maps.FunctionFieldDerivation_rational(K, u)¶
Bases:
sage.rings.function_field.maps.FunctionFieldDerivation
Derivations on rational function fields.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: K.derivation() Derivation map: From: Rational function field in x over Rational Field To: Rational function field in x over Rational Field Defn: x |--> 1
- class sage.rings.function_field.maps.FunctionFieldDerivation_separable(L, d)¶
Bases:
sage.rings.function_field.maps.FunctionFieldDerivation
Derivations of separable extensions.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: R.<y> = K[] sage: L.<y> = K.extension(y^2 - x) sage: L.derivation() Derivation map: From: Function field in y defined by y^2 - x To: Function field in y defined by y^2 - x Defn: y |--> 1/2/x*y x |--> 1
- class sage.rings.function_field.maps.FunctionFieldHigherDerivation(field)¶
Bases:
sage.categories.map.Map
Base class of higher derivations on function fields.
INPUT:
field
– function field on which the derivation operates
EXAMPLES:
sage: F.<x> = FunctionField(GF(2)) sage: F.higher_derivation() Higher derivation map: From: Rational function field in x over Finite Field of size 2 To: Rational function field in x over Finite Field of size 2
- class sage.rings.function_field.maps.FunctionFieldHigherDerivation_char_zero(field)¶
Bases:
sage.rings.function_field.maps.FunctionFieldHigherDerivation
Higher derivations of function fields of characteristic zero.
INPUT:
field
– function field on which the derivation operates
EXAMPLES:
sage: K.<x> = FunctionField(QQ); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x + x^3*Y) sage: h = L.higher_derivation() sage: h Higher derivation map: From: Function field in y defined by y^3 + x^3*y + x To: Function field in y defined by y^3 + x^3*y + x sage: h(y,1) == -(3*x^2*y+1)/(3*y^2+x^3) True sage: h(y^2,1) == -2*y*(3*x^2*y+1)/(3*y^2+x^3) True sage: e = L.random_element() sage: h(h(e,1),1) == 2*h(e,2) True sage: h(h(h(e,1),1),1) == 3*2*h(e,3) True
- class sage.rings.function_field.maps.FunctionFieldHigherDerivation_global(field)¶
Bases:
sage.rings.function_field.maps.FunctionFieldHigherDerivation
Higher derivations of global function fields.
INPUT:
field
– function field on which the derivation operates
EXAMPLES:
sage: K.<x> = FunctionField(GF(2)); _.<Y> = K[] sage: L.<y> = K.extension(Y^3 + x + x^3*Y) sage: h = L.higher_derivation() sage: h Higher derivation map: From: Function field in y defined by y^3 + x^3*y + x To: Function field in y defined by y^3 + x^3*y + x sage: h(y^2, 2) ((x^7 + 1)/x^2)*y^2 + x^3*y
- class sage.rings.function_field.maps.FunctionFieldLinearMap¶
Bases:
sage.categories.morphism.SetMorphism
Linear map to function fields.
- class sage.rings.function_field.maps.FunctionFieldLinearMapSection¶
Bases:
sage.categories.morphism.SetMorphism
Section of linear map from function fields.
- class sage.rings.function_field.maps.FunctionFieldMorphism(parent, im_gen, base_morphism)¶
Bases:
sage.rings.morphism.RingHomomorphism
Base class for morphisms between function fields.
EXAMPLES:
sage: K.<x> = FunctionField(QQ) sage: f = K.hom(1/x); f Function Field endomorphism of Rational function field in x over Rational Field Defn: x |--> 1/x
- class sage.rings.function_field.maps.FunctionFieldMorphism_polymod(parent, im_gen, base_morphism)¶
Bases:
sage.rings.function_field.maps.FunctionFieldMorphism
Morphism from a finite extension of a function field to a function field.
EXAMPLES:
sage: K.<x> = FunctionField(GF(7)); R.<y> = K[] sage: L.<y> = K.extension(y^3 + 6*x^3 + x) sage: f = L.hom(y*2); f Function Field endomorphism of Function field in y defined by y^3 + 6*x^3 + x Defn: y |--> 2*y sage: factor(L.polynomial()) y^3 + 6*x^3 + x sage: f(y).charpoly('y') y^3 + 6*x^3 + x
- class sage.rings.function_field.maps.FunctionFieldMorphism_rational(parent, im_gen, base_morphism)¶
Bases:
sage.rings.function_field.maps.FunctionFieldMorphism
Morphism from a rational function field to a function field.
- class sage.rings.function_field.maps.FunctionFieldRingMorphism¶
Bases:
sage.categories.morphism.SetMorphism
Ring homomorphism.
- class sage.rings.function_field.maps.FunctionFieldToFractionField¶
Bases:
sage.rings.function_field.maps.FunctionFieldVectorSpaceIsomorphism
Isomorphism from rational function field to the isomorphic fraction field of a polynomial ring.
EXAMPLES:
sage: K = QQ['x'].fraction_field() sage: L = K.function_field() sage: f = K.coerce_map_from(L); f Isomorphism: From: Rational function field in x over Rational Field To: Fraction Field of Univariate Polynomial Ring in x over Rational Field
See also
- section()¶
Return the inverse map of this isomorphism.
EXAMPLES:
sage: K = QQ['x'].fraction_field() sage: L = K.function_field() sage: f = K.coerce_map_from(L) sage: f.section() Isomorphism: From: Fraction Field of Univariate Polynomial Ring in x over Rational Field To: Rational function field in x over Rational Field
- class sage.rings.function_field.maps.FunctionFieldVectorSpaceIsomorphism¶
Bases:
sage.categories.morphism.Morphism
Base class for isomorphisms between function fields and vector spaces.
EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) sage: V, f, t = L.vector_space() sage: isinstance(f, sage.rings.function_field.maps.FunctionFieldVectorSpaceIsomorphism) True
- is_injective()¶
Return
True
, since the isomorphism is injective.EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) sage: V, f, t = L.vector_space() sage: f.is_injective() True
- is_surjective()¶
Return
True
, since the isomorphism is surjective.EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) sage: V, f, t = L.vector_space() sage: f.is_surjective() True
- class sage.rings.function_field.maps.MapFunctionFieldToVectorSpace(K, V)¶
Bases:
sage.rings.function_field.maps.FunctionFieldVectorSpaceIsomorphism
Isomorphism from a function field to a vector space.
EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) sage: V, f, t = L.vector_space(); t Isomorphism: From: Function field in y defined by y^2 - x*y + 4*x^3 To: Vector space of dimension 2 over Rational function field in x over Rational Field
- class sage.rings.function_field.maps.MapVectorSpaceToFunctionField(V, K)¶
Bases:
sage.rings.function_field.maps.FunctionFieldVectorSpaceIsomorphism
Isomorphism from a vector space to a function field.
EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) sage: V, f, t = L.vector_space(); f Isomorphism: From: Vector space of dimension 2 over Rational function field in x over Rational Field To: Function field in y defined by y^2 - x*y + 4*x^3
- codomain()¶
Return the function field which is the codomain of the isomorphism.
EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) sage: V, f, t = L.vector_space() sage: f.codomain() Function field in y defined by y^2 - x*y + 4*x^3
- domain()¶
Return the vector space which is the domain of the isomorphism.
EXAMPLES:
sage: K.<x> = FunctionField(QQ); R.<y> = K[] sage: L.<y> = K.extension(y^2 - x*y + 4*x^3) sage: V, f, t = L.vector_space() sage: f.domain() Vector space of dimension 2 over Rational function field in x over Rational Field
- class sage.rings.function_field.maps.RationalFunctionFieldHigherDerivation_global(field)¶
Bases:
sage.rings.function_field.maps.FunctionFieldHigherDerivation
Higher derivations of rational function fields over finite fields.
INPUT:
field
– function field on which the derivation operates
EXAMPLES:
sage: F.<x> = FunctionField(GF(2)) sage: h = F.higher_derivation() sage: h Higher derivation map: From: Rational function field in x over Finite Field of size 2 To: Rational function field in x over Finite Field of size 2 sage: h(x^2,2) 1