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 n
th 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 ifF
is a completion) - a
FldPadElt
coercible 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 thaty
is nonzero.
'^' (x :: FldPadExactElt, n :: RngIntElt)
-> FldPadExactElt
Powering.
Parameters
Strategy
: Used whenn
is negative to confirm thatx
is nonzero.
ShiftValuation (x :: FldPadExactElt, n)
-> FldPadExactElt
Multiplies x
by the n
th 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 n
th 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
Strategy
Unique
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
Strategy
Unique
Smallest (xs :: [FldPadExactElt])
-> FldPadExactElt, RngIntElt
The smallest element of xs
, and its index.
Parameters
Strategy
Unique
Closest (x :: FldPadExactElt, ys :: [FldPadExactElt])
-> FldPadExactElt, RngIntElt
The closest element y of ys
to x
and its index.
Parameters
Strategy
Unique
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 i
th 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
Eisenstein
Inertial
Monic
Irreducible
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 ofx
until 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