Maps from and to Henselizations of rings

AUTHORS:

  • Julian Rüth (2016-12-01): initial version
class henselization.sage.rings.padics.henselization.maps.ConvertMap_generic

Bases: Morphism

Conversion map for codomains which can handle elements in the fraction field of the base of a Henselization.

EXAMPLES:

sage: from henselization import *
sage: K = QQ.henselization(5)
sage: QQ.convert_map_from(K)
Generic morphism:
    From: Henselization of Rational Field with respect to 5-adic valuation
    To:   Rational Field
class henselization.sage.rings.padics.henselization.maps.ExtensionCoercion_generic

Bases: henselization.sage.rings.padics.henselization.maps.ConvertMap_generic

Coercion map from a Henselization to an algebraic extension.

EXAMPLES:

sage: from henselization import *
sage: K = QQ.henselization(2)
sage: R.<x> = K[]
sage: L = K.extension(x^2 + x + 1)
sage: L.coerce_map_from(K)
Generic morphism:
    From: Henselization of Rational Field with respect to 2-adic valuation
    To:   Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation
is_injective()

Return whether this coercion is injective.

EXAMPLES:

sage: from henselization import *
sage: S = ZZ.henselization(2)
sage: R.<x> = S[]
sage: T = S.extension(x^2 + x + 1)
sage: T.coerce_map_from(S).is_injective()
True
class henselization.sage.rings.padics.henselization.maps.QuotientConversion_generic

Bases: Morphism

A conversion between two quotients that is induced by a conversion between their bases.

class henselization.sage.rings.padics.henselization.maps.RelativeExtensionCoercion_generic

Bases: Morphism

A coercion between extensions of complete rings which extend each other.

EXAMPLES:

sage: from henselization import *
sage: K = QQ.henselization(2)
sage: R.<x> = K[]
sage: L = K.extension(x^2 + x + 1)
sage: R.<y> = L[]
sage: M = L.extension(y^2 + 2)
sage: f = M.coerce_map_from(L); f
Generic morphism:
  From: Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation
  To:   Extension defined by y^2 + 2 of Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation

TESTS:

sage: from sage.rings.padics.henselization.maps import RelativeExtensionCoercion_generic
sage: isinstance(f, RelativeExtensionCoercion_generic)
True
sage: TestSuite(f).run()
is_injective()

Return whether this coercion is injective, which is the case since it is the embedding of a ring extension.

EXAMPLES:

sage: from henselization import *
sage: K = QQ.henselization(2)
sage: R.<x> = K[]
sage: L = K.extension(x^2 + x + 1)
sage: R.<y> = L[]
sage: M = L.extension(y^2 + 2)
sage: M.coerce_map_from(L).is_injective()
True
is_surjective()

Return whether this coercion is surjective, which is only the case for trivial extensions.

EXAMPLES:

sage: from henselization import *
sage: K = QQ.henselization(2)
sage: R.<x> = K[]
sage: L = K.extension(x^2 + x + 1)
sage: R.<y> = L[]
sage: M = L.extension(y^2 + 2)
sage: M.coerce_map_from(L).is_surjective()
False

sage: R.<z> = M[]
sage: N = M.extension(z - 1)
sage: N.coerce_map_from(M).is_surjective()
True

^

class henselization.sage.rings.padics.henselization.maps.VectorSpaceHenselizationIsomorphism

Bases: Morphism

Base class for isomorphisms of Henselizations and vector spaces.

TESTS:

sage: from henselization import *
sage: K = QQ.henselization(2)
sage: R.<x> = K[]
sage: L = K.extension(x^2 + x + 1)
sage: f = L.module()[1]
sage: from sage.rings.padics.henselization.maps import VectorSpaceHenselizationIsomorphism
sage: isinstance(f, VectorSpaceHenselizationIsomorphism)
True
is_injective()

Return that this isomorphism is injective.

EXAMPLES:

sage: from henselization import *
sage: K = QQ.henselization(2)
sage: R.<x> = K[]
sage: L = K.extension(x^2 + x + 1)
sage: f = L.module()[1]
sage: f.is_injective()
True
is_surjective()

Return that this isomorphism is surjective.

EXAMPLES:

sage: from henselization import *
sage: K = QQ.henselization(2)
sage: R.<x> = K[]
sage: L = K.extension(x^2 + x + 1)
sage: f = L.module()[1]
sage: f.is_surjective()
True