Henselizations of rings¶
AUTHORS:
- Julian Rüth (2016-11-15): initial version
-
class
henselization.sage.rings.padics.henselization.henselization.
ExtensionFactory
(name)¶ Bases:
UniqueFactory
Return the algebraic extension which adjoins to
base
a root ofpolynomial
.Do not call this factory directly, but call
base.extension()
instead.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(5) sage: R.<x> = K[] sage: K.extension(x^2 - 5) # indirect doctest Extension defined by x^2 - 5 of Henselization of Rational Field with respect to 5-adic valuation
-
create_key
(base, polynomial, name, check=True)¶ Return a key that uniquely defines this extension.
TESTS:
sage: from henselization import * sage: K = QQ.henselization(5) sage: R.<x> = K[] sage: K.extension(x^2 - 5) is K.extension(x^2 - 5) # indirect doctest True
-
create_object
(version, key)¶ Return the extension defined by
key
.TESTS:
sage: from henselization import * sage: K = QQ.henselization(5) sage: R.<x> = K[] sage: K.extension(x^2 - 5) # indirect doctest Extension defined by x^2 - 5 of Henselization of Rational Field with respect to 5-adic valuation
-
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtension
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.Henselization_base
Abstract base class for the extension of a Henselization by adjunction of a root of
polynomial
to the complete ringbase_ring
.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<x> = K[] sage: L.<a> = K.extension(x^2 + x + 1); L Extension defined by a^2 + a + 1 of Henselization of Rational Field with respect to 2-adic valuation sage: R.<x> = L[] sage: M.<b> = L.extension(x^12 - 4*x^11 + 2*x^10 + 13*x^8 - 16*x^7 - 36*x^6 + 168*x^5 - 209*x^4 + 52*x^3 + 26*x^2 + 8*x - 13); M Extension defined by b^12 - 4*b^11 + 2*b^10 + 13*b^8 - 16*b^7 - 36*b^6 + 168*b^5 - 209*b^4 + 52*b^3 + 26*b^2 + 8*b - 13 of Extension defined by a^2 + a + 1 of Henselization of Rational Field with respect to 2-adic valuation
-
base_ring
()¶ Return the base ring of this ring, i.e., the ring from which this algebraic extension has been created.
TESTS:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<x> = K[] sage: L = K.extension(x^2 + x + 1) sage: L.base_ring() is K True
-
degree
()¶ Return the degree of this extension over its base.
EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<x> = K[] sage: L = K.extension(x^2 + x + 1) sage: L.degree() 2 sage: R.<y> = L[] sage: M = L.extension(y^2 + y + L.gen()) sage: M.degree() 2
-
ngens
()¶ Return the number of generators of this ring.
EXAMPLES:
This extension is generated by a root of its defining polynomial:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<a> = K[] sage: L = K.extension(a^2 + a + 1) sage: L.ngens() 1 sage: L.gens() (a,)
-
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionAbsolute
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtension
Extension of a
Henselization
whose model is an absolute extension.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: L.<x> = K[] sage: K.extension(x^2 + x + 1) Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionAbsolute_Field
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionAbsolute
,henselization.sage.rings.padics.henselization.henselization.HenselizationExtension_Field
Extension of a field
Henselization
whose model is an absolute extension.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: L.<x> = K[] sage: L = K.extension(x^2 + 2); L Extension defined by x^2 + 2 of Henselization of Rational Field with respect to 2-adic valuation
TESTS:
sage: from sage.rings.padics.henselization.henselization import HenselizationExtensionAbsolute_Field sage: isinstance(L, HenselizationExtensionAbsolute_Field) True sage: TestSuite(L).run() # long time
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionIteratedAbsolute
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionAbsolute
Extension of a
HenselizationExtension
that is realized as an absolute 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: L.extension(y^2 - 2) 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
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionIteratedAbsolute_Field
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionIteratedAbsolute
,henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionAbsolute_Field
Extension of a
HenselizationExtension
field that is realized as an absolute 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^4 - 2); M Extension defined by y^4 - 2 of Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuationTESTS:
sage: from sage.rings.padics.henselization.henselization import HenselizationExtensionIteratedAbsolute_Field sage: isinstance(M, HenselizationExtensionIteratedAbsolute_Field) True sage: TestSuite(M).run() # long time
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionIteratedAbsolute_Ring
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionIteratedAbsolute
,henselization.sage.rings.padics.henselization.henselization.HenselizationExtension_Ring
Extension of a
HenselizationExtension
that is not a field and realized as an absolute extension.EXAMPLES:
sage: from henselization import * sage: S = ZZ.henselization(2) sage: R.<x> = S[] sage: T = S.extension(x^2 + x + 1) sage: R.<y> = T[] sage: U = T.extension(y^4 - 2); U # known bug, see https://github.com/MCLF/henselization/issues/15 Extension defined by y^4 - 2 of Extension defined by x^2 + x + 1 of Henselization of Integer Ring with respect to 2-adic valuation
TESTS:
sage: from sage.rings.padics.henselization.henselization import HenselizationExtensionIteratedAbsolute_Ring sage: isinstance(U, HenselizationExtensionIteratedAbsolute_Ring) # known bug, see https://github.com/MCLF/henselization/issues/15 True sage: TestSuite(U).run() # long time, known bug, see https://github.com/MCLF/henselization/issues/15
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionIteratedQuotient
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtension
Extension of a
HenselizationExtensionAbsolute
that is realized as a quotient over its model.EXAMPLES:
Instances of this class are not exposed through public methods but only exist internally when building iterated extensions:
sage: K = QQ.henselization(2) sage: R.<x> = K[] sage: L = K.extension(x^2 + x + 1) sage: R.<y> = L[] sage: from sage.rings.padics.henselization.henselization import Extension sage: Extension._create_extension(L, y^2 - 2) 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
-
gen
(i=0)¶ Return the
i
-th generator of this ring.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: from sage.rings.padics.henselization.henselization import Extension sage: M = Extension._create_extension(L, y^2 - 2) sage: M.gen(0) ybar sage: M.gen(1) Traceback (most recent call last): ... ValueError: ring has only one generator
-
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionIteratedQuotient_Field
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionIteratedQuotient
,henselization.sage.rings.padics.henselization.henselization.HenselizationExtension_Field
Extension of a
HenselizationExtensionAbsolute
field that is realized as a quotient over its model.EXAMPLES:
Instances of this class are not exposed through public methods but only exist internally when building iterated extensions:
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: from sage.rings.padics.henselization.henselization import Extension sage: M = Extension._create_extension(L, y^4 - 2); M Extension defined by y^4 - 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.henselization import HenselizationExtensionIteratedQuotient_Field sage: isinstance(M, HenselizationExtensionIteratedQuotient_Field) True sage: TestSuite(M).run() # long time
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionIteratedQuotient_Ring
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionIteratedQuotient
,henselization.sage.rings.padics.henselization.henselization.HenselizationExtension_Ring
Extension of a
HenselizationExtensionAbsolute
domain that is not a field that is realized as a quotient over its model.EXAMPLES:
Instances of this class are not exposed through public methods but only exist internally when building iterated extensions:
sage: from henselization import * sage: S = ZZ.henselization(2) sage: R.<x> = S[] sage: T = S.extension(x^2 + x + 1) sage: R.<y> = T[] sage: U.<y> = T.extension(y^4 - 2); U # known bug, see https://github.com/MCLF/henselization/issues/15 Extension defined by y^4 - 2 of Extension defined by x^2 + x + 1 of Henselization of Integer Ring with respect to 2-adic valuation
-
fraction_field
()¶ Return the fraction field of this ring.
EXAMPLES:
sage: from henselization import * sage: S = ZZ.henselization(2) sage: R.<x> = S[] sage: T = S.extension(x^2 + x + 1) sage: R.<y> = T[] sage: U.<y> = T.extension(y^4 - 2) # known bug, see https://github.com/MCLF/henselization/issues/15 sage: U.fraction_field() # known bug, see https://github.com/MCLF/henselization/issues/15 Extension defined by y^4 - 2 of Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation
-
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionSimple
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionAbsolute
Simple extension of a
Henselization
.EXAMPLES:
sage: from henselization import * sage: S = ZZ.henselization(2) sage: R.<x> = S[] sage: S.extension(x^2 + x + 1) Extension defined by x^2 + x + 1 of Henselization of Integer Ring with respect to 2-adic valuation
-
gen
(i=0)¶ Return the
i
-th generator of this ring.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<a> = K[] sage: L = K.extension(a^2 + a + 1) sage: L.gen(0) a sage: L.gen(1) Traceback (most recent call last): ... ValueError: ring has only one generator
-
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionSimple_Field
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionSimple
,henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionAbsolute_Field
Simple extension of a
Henselization_Field
that is not an extension.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<x> = K[] sage: L = K.extension(x^2 + x + 1); L 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.henselization import HenselizationExtensionSimple_Field sage: isinstance(L, HenselizationExtensionSimple_Field) True sage: TestSuite(L).run() # long time
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtensionSimple_Ring
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtensionSimple
,henselization.sage.rings.padics.henselization.henselization.HenselizationExtension_Ring
Simple extension of a
Henselization_Ring
that is not an extension.EXAMPLES:
sage: from henselization import * sage: S = ZZ.henselization(2) sage: R.<x> = S[] sage: T = S.extension(x^2 + x + 1); T Extension defined by x^2 + x + 1 of Henselization of Integer Ring with respect to 2-adic valuation
TESTS:
sage: from sage.rings.padics.henselization.henselization import HenselizationExtensionSimple_Ring sage: isinstance(T, HenselizationExtensionSimple_Ring) True sage: TestSuite(T).run() # long time
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtension_Field
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtension
,henselization.sage.rings.padics.henselization.henselization.Henselization_Field
A
HenselizationExtension
that is a field.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(3) sage: R.<x> = K[] sage: K.extension(x^2 + 3) Extension defined by x^2 + 3 of Henselization of Rational Field with respect to 3-adic valuation
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationExtension_Ring
(base_ring, polynomial, model, model_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.HenselizationExtension
,henselization.sage.rings.padics.henselization.henselization.Henselization_Ring
A
HenselizationExtension
that is not a field.EXAMPLES:
sage: from henselization import * sage: S = ZZ.henselization(3) sage: R.<x> = S[] sage: T = S.extension(x^2 + 3); T Extension defined by x^2 + 3 of Henselization of Integer Ring with respect to 3-adic valuation
TESTS:
sage: from sage.rings.padics.henselization.henselization import HenselizationExtension_Ring sage: isinstance(T, HenselizationExtension_Ring) True sage: TestSuite(T).run() # long time
-
fraction_field
()¶ Return the fraction field of this ring.
EXAMPLES:
sage: from henselization import * sage: S = ZZ.henselization(3) sage: R.<x> = S[] sage: T = S.extension(x^2 + 3) sage: T.fraction_field() Extension defined by x^2 + 3 of Henselization of Rational Field with respect to 3-adic valuation
-
-
class
henselization.sage.rings.padics.henselization.henselization.
HenselizationFactory
(name)¶ Bases:
UniqueFactory
Return the Henselization of
R
with respect tov
.INPUT:
R
– a field or an excellent integral domain whose localization at the maximal ideal ofv
is the discrete valuation ring ofv
. (Most of these conditions are not verified by this factory.)v
– a non-trivial discrete valuation onR
.
EXAMPLES:
sage: from henselization import * sage: QQ.henselization(5) # indirect doctest Henselization of Rational Field with respect to 5-adic valuation
-
create_key
(R, v)¶ Create a key which uniquely identifies this Henselization.
TESTS:
sage: from henselization import * sage: QQ.henselization(5) is QQ.henselization(5) # indirect doctest True
-
create_object
(version, key)¶ Create the Henselization identified by
key
.TESTS:
sage: from henselization import * sage: Henselization(QQ, QQ.valuation(5)) # indirect doctest Henselization of Rational Field with respect to 5-adic valuation
-
class
henselization.sage.rings.padics.henselization.henselization.
Henselization_Field
(base, base_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.Henselization_base
,Field
The Henselization of the field
base
with respect tobase_valuation
.EXAMPLES:
sage: from henselization import * sage: Henselization(QQ, QQ.valuation(2)) Henselization of Rational Field with respect to 2-adic valuation
-
class
henselization.sage.rings.padics.henselization.henselization.
Henselization_Ring
(base, base_valuation, category=None)¶ Bases:
henselization.sage.rings.padics.henselization.henselization.Henselization_base
The Henselization of
base
with respect tobase_valuation
.EXAMPLES:
sage: from henselization import * sage: Henselization(ZZ, ZZ.valuation(2)) Henselization of Integer Ring with respect to 2-adic valuation
-
fraction_field
()¶ Return the fraction field of this ring.
EXAMPLES:
sage: from henselization import * sage: R = ZZ.henselization(2) sage: R.fraction_field() Henselization of Rational Field with respect to 2-adic valuation
-
is_field
(*args, **kwargs)¶ Return whether this ring is a field.
EXAMPLES:
sage: from henselization import * sage: R = ZZ.henselization(2) sage: R.is_field() False
-
-
class
henselization.sage.rings.padics.henselization.henselization.
Henselization_base
(base, base_valuation, category)¶ Bases:
CommutativeRing
Abstract base class for the Henselization of
base
with respect tobase_valuation
.EXAMPLES:
sage: from henselization import * sage: Henselization(ZZ, ZZ.valuation(2)) Henselization of Integer Ring with respect to 2-adic valuation
-
base_ring
()¶ Return the base ring of this ring.
There are two different base rings for Henselizations. The
base()
which is the ring that the Henselization completes and thebase_ring()
which is the ring from which the Henselization has been constructed.EXAMPLES:
For Henselizations that are not algebraical extensions of another Henselization, these two concepts coincide:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.base_ring() is K.base() is QQ True
-
characteristic
()¶ Return the characteristic of this ring.
EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.characteristic() 0
-
extension
(f, names=None, name=None, check=True)¶ Return the algebraic extension of this ring obtained by adjoining a root of the irreducible polynomial
f
.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<x> = K[] sage: K.extension(x^2 + x + 1) Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation
-
gen
(i=0)¶ Return the
i
-th generator of this ring.EXAMPLES:
This ring is generated by its one element:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.gen(0) 1 sage: K.gen(1) Traceback (most recent call last): ... ValueError: ring has only one generator
-
ideal
(*args, **kwds)¶ Essentially a monkey-patched version of
ideal
which only reduces the generators through gcd if the ring is a PrincipalIdealDomain (i.e., it has that type). We are a principal ideal domain (by category) but do not inherit from that deprecated type.EXAMPLES:
sage: from henselization import * sage: R = ZZ.henselization(2) sage: R.ideal(1, 1) Principal ideal (1) of Henselization of Integer Ring with respect to 2-adic valuation
-
is_finite
()¶ Return whether this ring is finite.
EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.is_finite() False
-
module
(base=None)¶ Return a free
base
-module isomorphic to this ring together with isomorphisms to and from this module.INPUT:
base
– a ring of which this ring is a finite extension (default: the ring itself)
EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: R.<x> = K[] sage: L = K.extension(x^2 + x + 1) sage: L.module(base=L) (Vector space of dimension 1 over Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation, Isomorphism morphism: From: Vector space of dimension 1 over Extension defined by x^2 + x + 1 of 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, Isomorphism morphism: From: Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation To: Vector space of dimension 1 over Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation) sage: L.module(base=K) (Vector space of dimension 2 over Henselization of Rational Field with respect to 2-adic valuation, Isomorphism morphism: From: Vector space of dimension 2 over 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, Isomorphism morphism: From: Extension defined by x^2 + x + 1 of Henselization of Rational Field with respect to 2-adic valuation To: Vector space of dimension 2 over Henselization of Rational Field with respect to 2-adic valuation)
-
ngens
()¶ Return the number of generators of this ring.
EXAMPLES:
This ring is generated by its one element:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.ngens() 1 sage: K.gens() (1,)
-
residue_field
()¶ Return the residue field, i.e., the elements of non-negative valuation module elements of positive valuation.
EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.residue_field() Finite Field of size 2
-
some_elements
()¶ Return some typical elements of this ring.
EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: len(K.some_elements()) 100
-
uniformizer
()¶ Return a uniformizing element for
valuation()
.EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.uniformizer() 2
-
valuation
()¶ Return the valuation on this complete ring.
EXAMPLES:
sage: from henselization import * sage: K = QQ.henselization(2) sage: K.valuation() 2-adic valuation
-