Exact p-adic fields
Contents
- Creation of p-adic fields
- Creation of p-adic numbers
- Basic operations on p-adic numbers
- Arithmetic
- Valuation
- Extensions
- Residue class field
- Ramification polynomials and polygons
- Hasse-Herbrand transition function
- Primitivity and minimal polynomials
- Quotient ring
- Homomorphisms (incomplete feature)
- Temporary field (incomplete feature)
- Integer ring (incomplete feature)
- Approximation
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:
- an integer, giving the unramified extension of this degree
- coercible to a defining polynomial (Eisenstein or inertial)
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
NoCheckUnique
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
NoCheckUnique
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
NoCheckUnique
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
NoCheckUnique
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:
- a single element, coercible to
E - multiple elements, coercible to the base field of
E, interpreted as coefficients
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:
- an element of
F - an integer or rational
- coercible to the base field of
F - coercible to a field embedded in
F(such as ifFis a completion) - a
FldPadEltcoercible to the approximation field ofF - a sequence of elements coercible to the base field of
F - a tuple
<init, mkupdate>or<init, mkupdate, data>defining the element directly
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
Strategy: Used to confirm thatyis nonzero.
'^' (x :: FldPadExactElt, n :: RngIntElt)
-> FldPadExactElt
Powering.
Parameters
Strategy: Used whennis negative to confirm thatxis nonzero.
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
Strategy
IsPower (x :: FldPadExactElt, n :: RngIntElt)
-> BoolElt, FldPadExactElt
True iff x is an nth power. (Strategy is used to determine if x is nonzero.)
Parameters
Strategy
Valuation
Valuation (x :: FldPadExactElt)
-> RngIntElt
The valuation of x.
Parameters
Strategy
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
Strategy
ValuationGtValuation_Lazy (x :: FldPadExactElt, y :: FldPadExactElt)
-> ExactpAdics_Gettr
ValuationGtValuation (x :: FldPadExactElt, y :: FldPadExactElt)
-> BoolElt
True iff x has greater valuation than y.
Parameters
Strategy
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
StrategyUnique
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
StrategyUnique
Smallest (xs :: [FldPadExactElt])
-> FldPadExactElt, RngIntElt
The smallest element of xs, and its index.
Parameters
StrategyUnique
Closest (x :: FldPadExactElt, ys :: [FldPadExactElt])
-> FldPadExactElt, RngIntElt
The closest element y of ys to x and its index.
Parameters
StrategyUnique
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
BaseName
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
Strategy
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
Strategy
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
APr
Format (f :: RngUPolElt_FldPadExact)
-> MonStgElt
Returns a string representation of f.
Parameters
APr
Random (R :: RngUPol_FldPadExact, d :: RngIntElt)
-> RngUPolElt_FldPadExact
A random element of R of the given degree.
Parameters
EisensteinInertialMonicIrreducible
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
Strategy := false: When notfalse, this is a strategy used to increase the precision ofxuntil it is non-zero.
AreAllWeaklyZero (xs :: [FldPadExactElt])
-> BoolElt, RngIntElt
True if each x in xs is weakly zero. If not, returns the index of a nonzero element.
Parameters
Strategy
IsWeaklyEqual (x :: FldPadExactElt, y :: FldPadExactElt)
-> BoolElt
True if x and y are weakly equal up to precision.
Parameters
Strategy