View on GitHub

Exact p-Adics 2

A Magma package for exact p-adic computation

Exact p-adic fields

Contents

Creation of p-adic fields

Prime fields

ExactpAdicField (p :: RngIntElt)

-> FldPadExact

The p-adic field.

Extensions

ext <F :: FldPadExact | …>

-> FldPadExact

Constructs an extension of F.

Its arguments must be either:

UnramifiedExtension (F :: FldPadExact, f)

-> FldPadExact

An unramified extension of F defined by f.

UnramifiedExtension (f :: RngUPolElt_FldPadExact)

-> FldPadExact

An unramified extension defined by f.

UnramifiedExtension (F :: FldPadExact, d :: RngIntElt)

-> FldPadExact

An unramified extension of F of degree d.

TotallyRamifiedExtension (F :: FldPadExact, f)

-> FldPadExact

A totally ramified extension of F defined by f.

TotallyRamifiedExtension (f :: RngUPolElt_FldPadExact)

-> FldPadExact

A totally ramified extension defined by f.

Completions

ExactCompletion (F :: FldRat, p)

ExactCompletion (F :: FldNum, p)

-> FldPadExact, Map

The completion of F at p as an exact p-adic field. Also returns the embedding of F. The inverse of the embedding takes a p-adic number to its best current approximation, and therefore depends on the current precision of the element.

From approximate fields

ExactpAdicField (xF :: FldPad)

-> FldPadExact

An exact p-adic field isomorphic to xF.

Parameters

ExactpAdicField (xE :: FldPad, xF :: FldPad, F :: FldPadExact)

-> FldPadExact

Given an extension xE/xF, such that xF is parallel-coercible to and from any approximation field of F, returns E such that E/F is isomorphic to xE/xF. Note that ext<F | xE, xF> is shorthand for this.

Parameters

Creation of p-adic numbers

Distinguished elements

Zero (F :: FldPadExact)

One (F :: FldPadExact)

-> FldPadExactElt

Zero and one.

Generator (F :: FldPadExact)

-> FldPadExactElt

A generator of F.

Generator (E :: FldPadExact, F :: FldPadExact)

-> FldPadExactElt

A generator for E/F.

If E/F is trivial, this is 0. If unramified, this is a residue generator. If totally ramified, this is a uniformizing element. Otherwise it is the sum of the two.

UniformizingElement (F :: FldPadExact)

-> FldPadExactElt

A uniformizing element of F.

ResidueGenerator (F :: FldPadExact)

-> FldPadExactElt

A residue generator of F. That is, an element whose residue class generates the residue class field over its prime subfield.

AbsoluteGenerator (F :: FldPadExact)

-> FldPadExactElt

A generator of F over its prime subfield. Equivalent to Generator(F, PrimeField(F)).

From coefficients

Not implemented.

Coercion

We can coerce the following to an element of F:

IsCoercible (F :: FldPadExact, X)

-> BoolElt, Any

True if X is coercible to F. If so, also returns the coerced element.

Random

RandomInteger (F :: FldPadExact)

-> FldPadExactElt

A random integer of F.

RandomUnit (F :: FldPadExact)

-> FldPadExactElt

A random unit of F.

Basic operations

Prime (F :: FldPadExact)

-> RngIntElt

The prime of F.

DefiningPolynomial (F :: FldPadExact)

-> RngUPolElt_FldPadExact

The defining polynomial of F.

DefiningPolynomial (E :: FldPadExact, F :: FldPadExact)

-> RngUPolElt_FldPadExact

A defining polynomial for E/F.

Specifically, it is the minimal polynomial for Generator(E,F). In particular, if the extension is trivial then this is x and if F is the base field of E, then this is DefiningPolynomial(E).

Valuation (x :: FldPadExactElt)

-> ValFldPadExactElt

The valuation of x. If x is zero, this will hang.

IsDefinitelyNonzero (x :: FldPadExactElt)

-> BoolElt, RngIntElt

True if x is nonzero. If so, returns an epoch in which the approximation is nonzero.

Parameters

Eltseq (x :: FldPadExactElt)

-> []

The coefficients of x as a vector over the base field.

Arithmetic

'-' (x :: FldPadExactElt)

'+' (x :: FldPadExactElt, y :: FldPadExactElt)

'-' (x :: FldPadExactElt, y :: FldPadExactElt)

'*' (x :: FldPadExactElt, y :: FldPadExactElt)

'/' (x :: FldPadExactElt, y :: FldPadExactElt)

'^' (x :: FldPadExactElt, m :: RngIntElt)

'&+' (xs :: [FldPadExactElt])

'&*' (xs :: [FldPadExactElt])

-> FldPadExactElt

Negate, add, subtract, multiply, divide, power, sum and product.

Parameters

ShiftValuation (x :: FldPadExactElt, m :: RngIntElt)

-> FldPadExactElt

Multiplies x by the mth power of the uniformizer.

Valuation

Comparison to constant

ValuationEq (x :: FldPadExactElt, v)

ValuationNe (x :: FldPadExactElt, v)

ValuationGe (x :: FldPadExactElt, v)

ValuationGt (x :: FldPadExactElt, v)

ValuationLe (x :: FldPadExactElt, v)

ValuationLt (x :: FldPadExactElt, v)

-> BoolElt

Compares the valuation of x with v.

IsUniformizingElement (x :: FldPadExactElt)

-> BoolElt

True if x is a uniformizing element; that is, its valuation is 1.

IsUnit (x :: FldPadExactElt)

-> BoolElt

True if x is a unit; that is, its valuation is 0.

IsIntegral (x :: FldPadExactElt)

-> BoolElt

True if x is an integer; that is, its valuation is at least 0.

Comparison between elements

ValuationEqValuation (x :: FldPadExactElt, y :: FldPadExactElt)

ValuationNeValuation (x :: FldPadExactElt, y :: FldPadExactElt)

ValuationGeValuation (x :: FldPadExactElt, y :: FldPadExactElt)

ValuationGtValuation (x :: FldPadExactElt, y :: FldPadExactElt)

ValuationLeValuation (x :: FldPadExactElt, y :: FldPadExactElt)

ValuationLtValuation (x :: FldPadExactElt, y :: FldPadExactElt)

-> BoolElt

Compares the valuation of x with the valuation of y.

Smallest and closest

Not implemented.

Extensions

Basic information

IsPrimeField (F :: FldPadExact)

-> BoolElt

True if F is a prime field.

BaseField (E :: FldPadExact)

-> FldPadExact

The base field of E, which must be an extension.

PrimeField (E :: FldPadExact)

-> FldPadExact

The prime subfield of E.

IsExtensionOf (E :: FldPadExact, F :: FldPadExact)

-> BoolElt, ExtFldPadExact

True if E is an extension of F. If so, also returns an object representing the extension.

Invariants

Degree (E :: FldPadExact, F :: FldPadExact)

-> RngIntElt

The degree of E over F.

InertiaDegree (E :: FldPadExact, F :: FldPadExact)

-> RngIntElt

The inertia degree of E over F.

RamificationDegree (E :: FldPadExact, F :: FldPadExact)

-> RngIntElt

The ramification degree of E over F.

Degree (F :: FldPadExact)

-> RngIntElt

The degree of F over its base field.

InertiaDegree (F :: FldPadExact)

-> RngIntElt

The inertia degree of F over its base field.

RamificationDegree (F :: FldPadExact)

-> RngIntElt

The ramification degree of F over its base field.

AbsoluteDegree (F :: FldPadExact)

-> RngIntElt

The absolute degree of F.

AbsoluteInertiaDegree (F :: FldPadExact)

-> RngIntElt

The absolute inertia degree of F.

AbsoluteRamificationDegree (F :: FldPadExact)

-> RngIntElt

The absolute ramification degree of F.

Ramification predicates

IsUnramified (E :: FldPadExact)

IsUnramified (E :: FldPadExact, F :: FldPadExact)

-> BoolElt

True if E is unramified over F or its base field. That is, the ramification degree is 1.

IsRamified (E :: FldPadExact)

IsRamified (E :: FldPadExact, F :: FldPadExact)

-> BoolElt

True if E is ramified over F or its base field. That is, the ramification degree is not 1.

IsTotallyRamified (E :: FldPadExact)

IsTotallyRamified (E :: FldPadExact, F :: FldPadExact)

-> BoolElt

True if E is totally ramified over F or its base field. That is, the inertia degree is 1.

IsTamelyRamified (E :: FldPadExact)

IsTamelyRamified (E :: FldPadExact, F :: FldPadExact)

-> BoolElt

True if E is tamely ramified over F or its base field. That is, the ramification degree is indivisible by p.

IsWildlyRamified (E :: FldPadExact)

IsWildlyRamified (E :: FldPadExact, F :: FldPadExact)

-> BoolElt

True if E is wildly ramified over F or its base field. That is, the ramification degree is divisible by p.

IsTotallyWildlyRamified (E :: FldPadExact)

IsTotallyWildlyRamified (E :: FldPadExact, F :: FldPadExact)

-> BoolElt

True if E is totally wildly ramified over F or its base field. That is, the inertia degree is 1 and the ramification degree is a power of p.

Residue class field

ResidueClassField (F :: FldPadExact)

-> FldFin, Map

The residue class field FF of F, and the quotient map from F to FF.

Note that the quotient map has an inverse whose approximations always have absolute precision 1, that is, the precision does not increase with epoch. Use WeakApproximation to choose a representative to infinite precision.

ResidueClass (x :: FldPadExactElt)

-> FldFinElt

The residue class of x.

Linear algebra

VectorSpace (E :: FldPadExact, F :: FldPadExact)

-> ModTupFld_FldPadExact, Map

A vector space over F isomorphic to E, and the isomorphism.

Standard form

IsInStandardForm (E :: FldPadExact, F :: FldPadExact)

-> BoolElt, FldPadExact

True if E/F is in standard form, i.e. it is a totally ramified extension of an unramified extension. If so, returns the unramified subfield.

StandardForm (E :: FldPadExact, F :: FldPadExact)

-> FldPadExact, HomFldPadExact

Standard form E’ of E/F and the F-isomorphism E to E’.

OptimizedRepresentation (F :: FldPadExact)

-> FldPadExact, HomFldPadExact

An optimized representation of F. For extensions, this will truncate the precision of the defining polynomial.

Parameters

Minimal polynomials

MinimalPolynomialAssumingDegree (x :: FldPadExactElt, F :: FldPadExact, d :: RngIntElt)

-> RngUPolElt_FldPadExact

Minimal polynomial of x over F, assuming it is degree d. If d is incorrect but divides the true degree, then this will return an incorrect polynomial; otherwise it will likely raise an error.

Parameters

Subfields

Ramification polynomials and polygons

In this package, if $f(x)$ is an Eisenstein polynomial with a root $\pi$, then we define the ramification polynomial of $f$ to be $f(x+\pi)$ and the ramification polygon of $f$ to be the Newton polygon of this. Observe that since $f(\pi)=0$ then the ramification polygon has end vertices at 1 and $\deg f$.

If $L/K$ is totally ramified, then the ramification polygon of $L/K$ is the ramification polygon of any Eisenstein polynomial defining the extension. If $L/U$ is totally ramified and $U/K$ is unramified then the ramification polygon of $L/K$ is that of $L/U$ with an additional horizontal face from $((L:U),0)$ to $((L:K),0)$.

The Newton polygon is an invariant of an extension and describes the ramification breaks of the Galois set $\Gamma(L/K)$ of embeddings $L \hookrightarrow \bar{K}$. This generalizes ramification theory of Galois extensions, where the Galois set is equal to the Galois group.

See also the pAdicExtensions package which includes a more specialised, and more general, representation of ramification polygons.

DiscriminantValuation (E :: FldPadExact, F :: FldPadExact)

DiscriminantValuation (E :: FldPadExact)

-> RngIntElt

The valuation of the discriminant of E over F (or its base field).

RamificationResidualPolynomials (f :: RngUPolElt_FldPadExact)

-> []

The residual polynomials of the ramification polygon of f.

RamificationResidualPolynomial (f :: RngUPolElt_FldPadExact, face :: NwtnPgonFace)

-> RngUPolElt

The residual polynomial of the given face of the ramification polygon of f.

RamificationPolynomial (L :: FldPadExact)

-> RngUPolElt_FldPadExact

The ramification polynomial of L with respect to its defining polynomial.

RamificationPolygon (f :: RngUPolElt_FldPadExact)

-> NwtnPgon

The ramification polygon of the extension defined by f.

RamificationPolygon (E :: FldPadExact)

RamificationPolygon (E :: FldPadExact, F :: FldPadExact)

-> NwtnPgon

The ramification polygon of E over its base field or F.

RamificationFiltration (E :: FldPadExact, F :: FldPadExact)

-> []

The ramification filtration of E/F.

Hasse-Herbrand transition function

Creation

TransitionFunction (E :: FldPadExact)

TransitionFunction (E :: FldPadExact, F :: FldPadExact)

TransitionFunction (E :: FldPad)

TransitionFunction (E :: FldPad, F :: FldPad)

-> HassHerbTransFunc

The Hasse-Herbrand transition function of E over its base field or F.

Operations

Degree (h :: HassHerbTransFunc)

-> RngIntElt

The degree of the extension this is the transition function of.

Vertices (h :: HassHerbTransFunc)

-> []

The vertices of the function.

LowerBreaks (h :: HassHerbTransFunc)

-> []

The lower breaks of h.

UpperBreaks (h :: HassHerbTransFunc)

-> []

The upper breaks of h.

'eq' (h1 :: HassHerbTransFunc, h2 :: HassHerbTransFunc)

-> BoolElt

True if h1 and h2 are equal as field invariants, i.e. they define the same function.

'@' (v, h :: HassHerbTransFunc)

-> Any

Evaluates h at v.

'@@' (u, h :: HassHerbTransFunc)

-> Any

The inverse of h at u.

RamificationPolygon (h :: HassHerbTransFunc)

-> NwtnPgon

The ramification polygon of a totally ramified extension with the given transition function.

Homomorphisms

Creation

TrivialHomomorphism (E :: FldPadExact, C :: FldPadExact, F :: FldPadExact)

-> HomFldPadExact

The trivial F-homomorphism of E into C, which must be an extension of E.

TrivialHomomorphism (E :: FldPadExact, C :: FldPadExact)

-> HomFldPadExact

The trivial E-homomorphism of E into C, which must be an extension of E.

TrivialIsomorphism (E :: FldPadExact, F :: FldPadExact)

-> HomFldPadExact

The trivial F-isomorphism of E.

Homomorphism (E :: FldPadExact, g :: FldPadExactElt)

-> HomFldPadExact

The homomorphism sending the generator of E to g.

Homomorphism (E :: FldPadExact, gs :: [FldPadExactElt], F :: FldPadExact)

-> HomFldPadExact

The homomorphism of E fixing F sending the generators of E/F to gs.

Homomorphism (E :: FldPadExact, h0 :: HomFldPadExact, gs :: [FldPadExactElt])

-> HomFldPadExact

The homomorphism extending h0, sending the generators of E over the domain of h0 to gs.

Homomorphisms (E :: FldPadExact, C :: FldPadExact, F :: FldPadExact)

-> []

The homomorphisms of E to C fixing F.

Parameters

Isomorphisms (E :: FldPadExact, C :: FldPadExact, F :: FldPadExact)

-> []

The isomorphsisms of E to C fixing F.

Parameters

HasIsomorphism (E :: FldPadExact, C :: FldPadExact, F :: FldPadExact)

-> BoolElt, HomFldPadExact

True if there is an isomorphism of E to C fixing F. If so, also returns an isomorphism.

Automorphisms (E :: FldPadExact, F :: FldPadExact)

-> []

The automorphisms of E fixing F.

Inspection

Domain (h :: HomFldPadExact)

-> FldPadExact

The domain of h.

Codomain (h :: HomFldPadExact)

-> FldPadExact

The codomain of h.

BaseField (h :: HomFldPadExact)

-> FldPadExact

The field fixed by h.

HasInverse (h :: HomFldPadExact)

-> BoolElt, HomFldPadExact

True if h has an inverse defined. If so, also returns the inverse.

Inverse (h :: HomFldPadExact)

-> HomFldPadExact

The inverse of h.

GeneratorImages (h :: HomFldPadExact)

-> []

The sequence of images of the generators of the intermediate fields from the base field up to the domain.

Application

'@' (x, h :: HomFldPadExact)

-> FldPadExactElt

The image of x under the homomorphism.

'@@' (x, h :: HomFldPadExact)

-> FldPadExactElt

The image of x under the inverse homomorphism.

'*' (h1 :: HomFldPadExact, h2 :: HomFldPadExact)

-> HomFldPadExact

Composition, such that x @ (h1 * h2) = x @ h1 @ h2.

Automorphism group

AutomorphismGroup (E :: FldPadExact, F :: FldPadExact)

-> GrpPerm, Map

The automorphism group of E/F as a permutation group, and the map from the group to the set of automorphisms.

Internals

Approximations

WeakValuation (x :: FldPadExactElt)

-> ValFldPadExactElt

The weak valuation of x.

AbsolutePrecision (x :: FldPadExactElt)

-> ValFldPadExactElt

The absolute precision of x.

IsWeaklyZero (x :: FldPadExactElt)

-> BoolElt

True if x is weakly zero.

IsDefinitelyZero (x :: FldPadExactElt)

-> BoolElt

True if x is definitely zero. That is, it is weakly zero and has infinite absolute precision.

WeakApproximation (x :: FldPadExactElt)

-> FldPadExactElt

An element weakly equal to x at its current precision.

EnsureAllApproximationsNonzero (x :: FldPadExactElt)

Ensures that all approximations of x are non-zero.

ExtFldPadExact

This type represents an extension of p-adic fields. It is the second return value of IsExtensionOf, and each field caches the extensions of which it is the top field. It can be used to cache information about an extension, such as its degree.

For most intrinsics which take two fields forming an extension, there is an alternative form taking a single extension.

'/' (E :: FldPadExact, F :: FldPadExact)

-> ExtFldPadExact

The extension E/F.

Description (X :: ExtFldPadExact)

-> MonStgElt

A string describing the extension.

Parameters

TopField (X :: ExtFldPadExact)

-> FldPadExact

The top field of the extension.

BaseField (X :: ExtFldPadExact)

-> FldPadExact

The base field of the extension.

Tower (X :: ExtFldPadExact)

-> []

The tower of intermediate fields.

Its length is at least 1. The first entry is the base field, the last entry is the top field, and each entry is the base field of the next.

Tower0 (X :: ExtFldPadExact)

-> []

Same as Tower but with the first entry (the base field) omitted.