View on GitHub

Exact p-Adics

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 exact p-adic field.

Extensions

ext <E :: FldPadExact | …>

-> FldPadExact

An extension of E, where the right hand side is either:

Extension (f :: RngUPolElt_FldPadExact)

Extension (F :: FldPadExact, f)

-> FldPadExact

The extension defined by f over its base field or F.

UnramifiedExtension (f :: RngUPolElt_FldPadExact)

UnramifiedExtension (F :: FldPadExact, f)

-> FldPadExact

The unramified extension defined by f over its base field or F.

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

-> FldPadExact

The unramified extension of F of degree n.

TotallyRamifiedExtension (f :: RngUPolElt_FldPadExact)

TotallyRamifiedExtension (F :: FldPadExact, f)

-> FldPadExact

The totally ramified extension defined by f over its base field or F.

TotallyRamifiedExtension (F :: FldPadExact, n :: RngIntElt, pi)

TotallyRamifiedExtension (F :: FldPadExact, n :: RngIntElt)

-> FldPadExact

The totally ramified extension of F of degree n got by adjoining the nth root of pi (or the default uniformizer of F).

Completions

ExactCompletion (K :: FldRat, P :: RngIntElt)

ExactCompletion (K :: FldRat, P :: RngInt)

ExactCompletion (K :: FldNum, P :: RngOrdIdl)

ExactCompletion (K :: FldNum, P :: PlcNumElt)

-> FldPadExact, Map, Map

The completion C of K at P as an exact p-adic field. Also returns the embedding K to C, and the invertible map K to xC (the approximation field for C).

From approximate fields

ExactpAdicField (xxL :: FldPad)

-> FldPadExact, Map

Given a p-adic field xxL, returns L isomorphic to xxL and a map xxL -> xL.

Parameters

ExactpAdicField (xxL :: FldPad, mK :: Map, K :: FldPadExact)

-> FldPadExact, Map

Given an extension xxL/xxK and mK : xxK -> xK where xK is the approximation field of K, returns L/K isomorphic to xxL/xxK and a map xxL -> xL.

Parameters

ExactpAdicField (xxL :: FldPad, xxK :: FldPad, K :: FldPadExact)

-> FldPadExact, Map

Given xxL/xxK where xxK is coercible to and from xK where xK is the approximation field of K, returns L/K isomorphic to xxL/xxK, and a map xxL -> xL.

Parameters

ExactpAdicField (xxL :: FldPad, K :: FldPadExact)

-> FldPadExact, Map

Given xxL/xK where xK is the approximation field of K, returns L/K isomorphic to xxL/xK, and a map xL -> xxL.

Parameters

Creation of p-adic numbers

Distinguished elements

Zero (F :: FldPadExact)

-> FldPadExactElt

Zero.

One (F :: FldPadExact)

-> FldPadExactElt

One.

UniformizingElement (F :: FldPadExact)

-> FldPadExactElt

The uniformizing element of F.

InertiaGenerator (F :: FldPadExact)

-> FldPadExactElt

An element of F generating the maximal unramified subextension of F over its prime subfield, and its minimal polynomial.

PrimitiveElement (E :: FldPadExact)

PrimitiveElement (E :: FldPadExact, F :: FldPadExact)

-> FldPadExactElt

A primitive element of E over its prime subfield or F.

From coefficients

elt <E :: FldPadExact | …>

-> FldPadExactElt

Constructs an element of E, where the right hand side is either:

Coercion

IsCoercible (F :: FldPadExact, X)

-> BoolElt, Any

True if X is coercible to an element of F, and the coerced element.

X must be either:

Random

RandomInteger (F :: FldPadExact)

-> FldPadExactElt

A random integer of F.

Random (F :: FldPadExact, v :: RngIntElt)

-> FldPadExactElt

A random element of F of value at least v.

RandomUnit (F :: FldPadExact)

-> FldPadExactElt

A random unit of F.

RandomUnit (F :: FldPadExact, v :: RngIntElt)

-> FldPadExactElt

A random element of F of value v.

Basic operations on p-adic numbers

Coefficient (x :: FldPadExactElt, i :: RngIntElt)

-> FldPadExactElt

The generator^i coefficient of x in K(generator)/K.

Coefficients (x :: FldPadExactElt)

Eltseq (x :: FldPadExactElt)

-> []

The coefficients of x in the basis generator^i in K(generator)/K.

Arithmetic

'-' (x :: FldPadExactElt)

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

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

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

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

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

-> FldPadExactElt

Negate, add, subtract, sum, multiply, product.

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

-> FldPadExactElt

Division.

Parameters

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

-> FldPadExactElt

Powering.

Parameters

ShiftValuation (x :: FldPadExactElt, n)

-> FldPadExactElt

Multiplies x by the nth power of the uniformizing element.

IsSquare (x :: FldPadExactElt)

-> BoolElt, FldPadExactElt

True iff x is a square. (Strategy is used to determine if x is nonzero.)

Parameters

IsPower (x :: FldPadExactElt, n :: RngIntElt)

-> BoolElt, FldPadExactElt

True iff x is an nth power. (Strategy is used to determine if x is nonzero.)

Parameters

Valuation

Valuation (x :: FldPadExactElt)

-> RngIntElt

The valuation of x.

Parameters

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

ValuationCmpValuation_Lazy (x :: FldPadExactElt, y :: FldPadExactElt)

-> ExactpAdics_Gettr

ValuationCmpValuation (x :: FldPadExactElt, y :: FldPadExactElt)

-> RngIntElt

Respectively <0, 0 or >0 if the valuation of x is less than, equal to or greater than the valuation of y.

Parameters

ValuationGtValuation_Lazy (x :: FldPadExactElt, y :: FldPadExactElt)

-> ExactpAdics_Gettr

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

-> BoolElt

True iff x has greater valuation than y.

Parameters

Smallest and closest

IndexOfSmallest (xs :: [FldPadExactElt])

-> RngIntElt

The index i maximizing Valuation(xs[i]). If Unique, raises an error if there is no unique smallest.

Parameters

IndexOfClosest (x :: FldPadExactElt, ys :: [FldPadExactElt])

-> RngIntElt

The index i maximizing Valuation(x-ys[i]). If Unique, raises an error if there is no unique closest.

Parameters

Smallest (xs :: [FldPadExactElt])

-> FldPadExactElt, RngIntElt

The smallest element of xs, and its index.

Parameters

Closest (x :: FldPadExactElt, ys :: [FldPadExactElt])

-> FldPadExactElt, RngIntElt

The closest element y of ys to x and its index.

Parameters

Extensions

BaseField (F :: FldPadExact)

-> FldPadExact

The base field of F.

IsPrimeField (F :: FldPadExact)

-> BoolElt

True if F is a prime p-adic field.

PrimeField (F :: FldPadExact)

-> BoolElt

The prime field of F.

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

-> BoolElt, ExtDataFldPadExact

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

ExistsCoveringStructure (E :: FldPadExact, F :: FldPadExact)

ExistsCoveringStructure (E :: FldPadExact, F :: RngInt)

ExistsCoveringStructure (E :: RngInt, F :: FldPadExact)

ExistsCoveringStructure (E :: FldPadExact, F :: FldRat)

ExistsCoveringStructure (E :: FldRat, F :: FldPadExact)

-> BoolElt, Any

True if there is a structure containing E and F, and the common structure.

Basic information

DefiningPolynomial (K :: FldPadExact)

-> RngUPolElt_FldPadExact

The defining polynomial of K.

AssignNames (~F :: FldPadExact, names :: [MonStgElt])

Assigns a name to the generator of F.

Name (F :: FldPadExact, i :: RngIntElt)

'.' (F :: FldPadExact, i :: RngIntElt)

-> FldPadExactElt

The ith generator of F.

Generator (F :: FldPadExact)

-> FldPadExactElt

The generating element of F.

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

-> BoolElt

Equality.

Invariants

Prime (F :: FldPadExact)

-> RngIntElt

The p in p-adic.

Degree (E :: FldPadExact)

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

-> RngIntElt

The degree of E over its base field or F.

AbsoluteDegree (F :: FldPadExact)

-> RngIntElt

The degree of F over its prime field.

InertiaDegree (E :: FldPadExact)

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

-> RngIntElt

The inertia degree of E over its base field or F.

AbsoluteInertiaDegree (F :: FldPadExact)

-> RngIntElt

The inertia degree of F over its prime field.

RamificationDegree (E :: FldPadExact)

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

-> RngIntElt

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

AbsoluteRamificationDegree (F :: FldPadExact)

-> RngIntElt

The ramification degree of F over its prime field.

DiscriminantValuation (E :: FldPadExact)

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

-> RngIntElt

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

Ramification predicates

IsUnramified (E)

IsUnramified (E, F)

-> BoolElt

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

IsRamified (E)

IsRamified (E, F)

-> BoolElt

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

IsTotallyRamified (E)

IsTotallyRamified (E, F)

-> BoolElt

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

IsWildlyRamified (E)

IsWildlyRamified (E, F)

-> BoolElt

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

IsTotallyWildlyRamified (E)

IsTotallyWildlyRamified (E, F)

-> BoolElt

True if E is totally wildly ramified over its base field or F; that is, if it is totally ramified and the ramification degree is a power of the prime p.

Printing

DescribeExtension (E :: FldPadExact, F :: FldPadExact)

-> MonStgElt

A string describing the extension E/F with F described as FName.

Parameters

Standard form

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

-> BoolElt

True if E/F is in standard form: E is a totally ramified extension of an unramified extension of F.

Residue class field

ResidueClassField (F :: FldPadExact)

-> FldFin, Map, Map

The residue class field R of F, the map F to R, and the map from the approximation of F to R.

ResidueClass (x :: FldPadExactElt)

-> FldFinElt

The residue class of x.

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.

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.

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.

Primitivity and minimal polynomials

IsDefinitelyPrimitive (x, E :: FldPadExact, F :: FldPadExact)

IsDefinitelyPrimitive (x :: FldPadExactElt, F :: FldPadExact)

-> BoolElt, RngUPolElt_FldPadExact

True if x is a primitive element for E (or Parent(x)) over F.

Parameters

MinimalPolynomial (x :: FldPadExactElt, F :: FldPadExact)

-> RngUPolElt_FldPadExact

The minimal polynomial of x over F. Requires that x is a primitive element for E/F where E is the field containing x.

Parameters

Quotient ring

Quotient (F :: FldPadExact, n :: RngIntElt)

-> RngPadRes, Map

The integers Q of F mod pi^n, and the map F to Q.

quo <F :: FldPadExact | …>

-> RngPadRes, Map

Quotient of the ring of integers of F by the elements on the right hand side.

Homomorphisms (incomplete feature)

BaseField (h :: HomFldPadExact)

-> FldPadExact

The base field of h, which is fixed.

Domain (h :: HomFldPadExact)

-> FldPadExact

The domain of h.

Codomain (h :: HomFldPadExact)

-> FldPadExact

The codomain of h.

'@' (x, h :: HomFldPadExact)

-> FldPadExactElt

Applies the map.

IsInvertible (h :: HomFldPadExact)

-> BoolElt, HomFldPadExact

True if h has an inverse, and the inverse.

Inverse (h :: HomFldPadExact)

-> HomFldPadExact

The inverse of h.

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

-> FldPadExactElt

Applies the inverse map.

TrivialEmbedding (X :: ExtDataFldPadExact)

-> HomFldPadExact

The trivial embedding of BaseField(X) into TopField(X).

TrivialEmbedding (F :: FldPadExactElt, E :: FldPadExactElt)

-> HomFldPadExact

The trivial embedding of F into E.

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

-> HomFldPadExact

The composition x @ (h1 * h2) = x @ h1 @ h2.

Embeddings (X :: ExtDataFldPadExact, h :: HomFldPadExact)

-> []

The embeddings of TopField(X) into Codomain(h) extending h:BaseField(X)->Codomain(h).

Embeddings (X1 :: ExtDataFldPadExact, X2 :: ExtDataFldPadExact, h0 :: HomFldPadExact)

-> []

The embeddings of TopField(X1) into TopField(X2) extending h0:BaseField(X1)->BaseField(X2).

Embeddings (X1 :: ExtDataFldPadExact, X2 :: ExtDataFldPadExact)

-> []

The embeddings of TopField(X1) into TopField(X2) fixing BaseField(X1)=BaseField(X2).

Temporary field (incomplete feature)

Temporary (F :: FldPadExact)

-> TmpFldPadExact

The temporary elements of F.

Temporary (x :: FldPadExactElt)

-> TmpFldPadExactElt

A temporary representation of x.

Parent (t :: TmpFldPadExactElt)

-> TmpFldPadExact

The parent of t.

Print (T :: TmpFldPadExact, lvl :: MonStgElt)

Print T.

Print (t :: TmpFldPadExactElt, lvl :: MonStgElt)

Print t.

Evaluate (t :: TmpFldPadExactElt)

-> FldPadExactElt

Returns a permanent version of t.

WeakValuation (t :: TmpFldPadExactElt)

-> RngIntElt

A lower bound on the valuation of t.

AbsolutePrecision (t :: TmpFldPadExactElt)

-> RngIntElt

The absolute precision to which a permanent version of t will be made.

'&+' (ts :: [TmpFldPadExactElt])

'+' (s :: TmpFldPadExactElt, t :: TmpFldPadExactElt)

-> TmpFldPadExactElt

Addition.

BaseField (T :: TmpFldPadExactElt)

-> TmpFldPadExactElt

The base field of T.

ExistsCoveringStructure (S :: TmpFldPadExact, T :: TmpFldPadExact)

ExistsCoveringStructure (S :: TmpFldPadExact, T :: Str)

ExistsCoveringStructure (S :: Str, T :: TmpFldPadExact)

-> BoolElt, Any

True if there is a structure containing both S and T.

'eq' (S :: TmpFldPadExact, T :: TmpFldPadExact)

-> BoolElt

Equality.

IsCoercible (T :: TmpFldPadExact, X)

IsCoercible (T :: TmpFldPadExact, X :: TmpFldPadExactElt)

IsCoercible (T :: TmpFldPadExact, X :: RngIntElt)

IsCoercible (T :: TmpFldPadExact, X :: FldRatElt)

-> BoolElt, Any

True if X is coercible to T, and the coerced element.

Eltseq (x :: TmpFldPadExactElt)

-> []

Eltseq.

Coefficient (x :: TmpFldPadExactElt, i :: RngIntElt)

-> TmpFldPadExactElt

Eltseq[i].

Integer ring (incomplete feature)

Integers (F :: FldPadExact, v :: RngIntElt)

-> RngPadExact

The ring of elements of F of valuation at least v.

Integers (F :: FldPadExact)

-> RngPadExact

The ring of integers of F.

FieldOfFractions (F :: FldPadExact)

FieldOfFractions (R :: RngPadExact)

-> FldPadExact

The field of fractions.

'eq' (R :: RngPadExact, S :: RngPadExact)

-> BoolElt

Equality.

IsCoercible (R :: RngPadExact, X)

IsCoercible (R :: RngPadExact, X :: FldPadExactElt)

IsCoercible (R :: RngPadExact, X :: RngPadExactElt)

-> BoolElt, Any

True if X is coercible into R and the coerced element.

Parent (x :: RngPadExactElt)

-> RngPadExact

Parent of x.

Print (x :: RngPadExactElt, lvl :: MonStgElt)

Print.

Random (R :: RngPadExact)

-> RngPadExactElt

A random element of R.

Format (x :: FldPadExactElt)

-> MonStgElt

Returns a string representation of x.

Parameters

Format (f :: RngUPolElt_FldPadExact)

-> MonStgElt

Returns a string representation of f.

Parameters

Random (R :: RngUPol_FldPadExact, d :: RngIntElt)

-> RngUPolElt_FldPadExact

A random element of R of the given degree.

Parameters

Approximation

Intrinsics to do with the current approximation of a p-adic number.

SetBaselineValuation (x :: FldPadExactElt, n)

Sets the baseline valuation.

IncreaseBaselinePrecision (x :: FldPadExactElt, n)

Increases the baseline precision.

WeakApproximation (x :: FldPadExactElt)

-> FldPadExactElt

An element weakly equal to x.

_ExactpAdics_PrecisionRequired (F :: FldPadExact, xx :: FldPadElt, apr)

-> RngIntElt

(A bound on) the precision required in the parent field of x to approximate x to the given absolute precision.

_ExactpAdics_PrecisionRequired (R :: RngUPol_FldPadExact, xf :: RngUPolElt[FldPad], apr)

-> RngIntElt

The precision required to approximate f with the given parameters.

IncreaseAbsolutePrecision_Lazy (F :: FldPadExact, pr :: RngIntElt)

-> ExactpAdics_Gettr

Getter which, when evaluated, the approximation field of F has at least precision pr.

Approximation_Lazy (F :: FldPadExact, pr)

-> ExactpAdics_Gettr

The approximating field of F with default precision pr.

UpdateZero (x :: FldPadExactElt, apr :: RngIntElt)

Updates x to O(pi^apr).

IsDefinitelyZero (x :: FldPadExactElt)

-> BoolElt

True if x is precisely zero.

IsWeaklyZero (x :: FldPadExactElt)

-> BoolElt

True if x is zero up to precision.

Parameters

AreAllWeaklyZero (xs :: [FldPadExactElt])

-> BoolElt, RngIntElt

True if each x in xs is weakly zero. If not, returns the index of a nonzero element.

Parameters

IsWeaklyEqual (x :: FldPadExactElt, y :: FldPadExactElt)

-> BoolElt

True if x and y are weakly equal up to precision.

Parameters