You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Eventually Sage should be able to create an arbitrary extension (ramified or not) of any p-adic field (Qp or one of its extension). However, for speed and numerical stability, it's convenient to represent internally all p-adic fields as an Eisenstein extension over an unramified extension.
In order to conceal this, David Roe and I (discussion on zulip) propose to make the following changes:
we add the attributes base, ram_name (optional) and unram_name (optional) to the factory
we add a method standard_basis (we should find a better wording) that returns a basis of the field over Qp coming from the presentation "Eisenstein over unramified"
when we create a new p-adic field with base base, we compute and store the transformation matrix between the standard basis of the current field and the basis coming from the given generator and the standard basis of the base
when we create a new p-adic field with base base, we register a coercion map from the base to the field (this coercion map has to implement a method section... which could use the method polynomial discussed below)
we modify the method polynomial so that x.polynomial() returns a polynomial P over the base such that P(self.gen()) = x (this should take advantage of the transformation matrix we stored before)
we modify the printing mode terse so that it uses the method polynomial described above
if either ram_name (except for unramified extensions) or unram_name (except for totally ramified extensions) is not given, the printing mode series should raise an error
Eventually Sage should be able to create an arbitrary extension (ramified or not) of any p-adic field (Qp or one of its extension). However, for speed and numerical stability, it's convenient to represent internally all p-adic fields as an Eisenstein extension over an unramified extension.
In order to conceal this, David Roe and I (discussion on zulip) propose to make the following changes:
base
,ram_name
(optional) andunram_name
(optional) to the factorystandard_basis
(we should find a better wording) that returns a basis of the field over Qp coming from the presentation "Eisenstein over unramified"base
, we compute and store the transformation matrix between the standard basis of the current field and the basis coming from the given generator and the standard basis of the basebase
, we register a coercion map from the base to the field (this coercion map has to implement a methodsection
... which could use the methodpolynomial
discussed below)polynomial
so thatx.polynomial()
returns a polynomialP
over the base such thatP(self.gen()) = x
(this should take advantage of the transformation matrix we stored before)terse
so that it uses the methodpolynomial
described aboveram_name
(except for unramified extensions) orunram_name
(except for totally ramified extensions) is not given, the printing modeseries
should raise an errorCC: @roed314
Component: padics
Keywords: padicBordeaux
Issue created by migration from https://trac.sagemath.org/ticket/26615
The text was updated successfully, but these errors were encountered: