Exact p-adic fields
Contents
- Creation of p-adic fields
- Creation of p-adic numbers
- Basic operations
- Arithmetic
- Valuation
- Extensions
- Residue class field
- Linear algebra
- Standard form
- Minimal polynomials
- Subfields
- Ramification polynomials and polygons
- Hasse-Herbrand transition function
- Homomorphisms
- Internals
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:
- A positive integer: constructs an unramified extension of this degree.
- Coercible to a inertial polynomial over
F
: constructs an unramified extension. - Coercible to an Eisenstein polynomial over
F
: constructs a totally ramified extension. - Two
FldPad
s, forming an extensionxE/xF
: constructs an extensionE/F
isomorphic toxE/xF
.
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
CheckUnique := true
: Whentrue
, checks that the input is precise enough to determine the field up to isomorphism.
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
CheckUnique := true
: Whentrue
, checks that the input is precise enough to determine the field up to isomorphism.
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
:
- An element of
F
- An integer or rational
- Anything coercible to the base field of
F
- Anything coercible to a number field that
F
is a completion of
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
Minimize := false
: Whentrue
, the returned epoch is minimal.
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
Safe := false
: (Divide and power only.) When true, this may be used as an intermediate variable inWithDependencies
with theFast
option.
ShiftValuation (x :: FldPadExactElt, m :: RngIntElt)
-> FldPadExactElt
Multiplies x
by the m
th 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
Isomorphism := false
: When true, also returns an isomorphism between the old and new representations.
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
Check := true
: Checks that the returned polynomial evaluated at x is weakly zero each time an approximation is generated.
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
Limit
: Limits the number of homomorphisms returned.
Isomorphisms (E :: FldPadExact, C :: FldPadExact, F :: FldPadExact)
-> []
The isomorphsisms of E
to C
fixing F
.
Parameters
Limit
: Limits the number of isomorphisms returned.
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
BaseName
: If given, this is used to describe the base field. Otherwise, the base field is not described.
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.