Ramification polygons
A PadRamifPgon
represents a set of points defining a ramification polygon, which is the Newton polygon of the ramification polygon r(x) = f(pi x + pi) / pi^n
of the Eisenstein polynomial f(x)
of degree n
. Some of the points need not be vertices, but can lie on the interior of faces, and therefore this is a more refined invariant than just the polygon itself. The points must be of the form [<1, J_0>, <p^s_1, J_1>, ..., <p^s_u, 0>, ..., <n, 0>]
where s_u = v_p(n)
.
To each point, we can also assign a non-zero element of the residue class field, which is the leading p-adic coefficient of the corresponding ramification polygon. These are collectively called the residues of the ramification polygon. If we multiply the uniformizer of the corresponding extension by the residue u
, then the residues are all multplied by u^n
. This defines an equivalence relation between different sets of residues.
Additionally, we can assign a single non-zero element of the residue class field, which is the uniformizer residue (as defined here) of an extension defined by f
. That is, it is the leading p-adic coefficient of the constant coefficient of f
.
Contents
Creation
RamificationPolygon (f :: RngUPolElt_FldPadTmpl)
-> PadRamifPgon
The ramification polygon of f
.
Parameters
Fine := false
: When true, creates the fine ramification polygonRes := false
: When true, creates the fine ramification polygon with residues (implies Fine)URes := false
: When true, assigns the uniformizer residue
RamificationPolygon (F :: FldPadTmpl, X)
-> PadRamifPgon
A ramification polygon over F
, defined by X
, which must be one of:
- A sequence or list of points (defined below)
- A Newton polygon
A point is a tuple <j,R_j,ord,res>
where:
j
andR_j
have the meaning defined at the top of this sectionord
(optional) when given it must be one of:"eq"
meaning the point is present"gt"
meaning the point is not present"ge"
meaning the point may or may not be present At vertices, it is assumed to be"eq"
, and otherwise"ge"
.
res
(optional) when given is the residue to attach to the point. If it is zero, thenord
must be consistent with"gt"
and otherwise it must be consistent with"eq"
.
Parameters
Fine := false
: When true, creates a fine ramification polygon. In particular,ord
is assumed to be"gt"
for any points not specified, whereas the default behaviour is to assume"ge"
.
IsCoercibleToRamificationPolygon (F :: FldPadTmpl, X)
-> BoolElt, Any
True if X
is coercible to a ramification polygon.
The inputs and parameters are as in RamificationPolygon
above.
Basic properties
BaseField (P :: PadRamifPgon)
-> FldPadTmpl
The base field of P
.
Degree (P :: PadRamifPgon)
-> RngIntElt
The degree of P
.
Vertices (P :: PadRamifPgon)
-> []
The vertices of P
.
Points (P :: PadRamifPgon)
-> []
The points of P
.
There is a point for each power of p
, so some points may not be vertices. See Points.
Faces (P :: PadRamifPgon)
-> []
The faces of P
.
See Faces.
NewtonPolygon (P :: PadRamifPgon)
-> NwtnPgon
The Newton polygon around the vertices of P
.
Denominator (P :: PadRamifPgon)
-> RngIntElt
The least common multiple of the denominators of the faces.
DenominatorResidueDegree (P :: PadRamifPgon)
-> RngIntElt
The degree of the residue class field adjoin Denominator(P)
th roots of unity. This is the least common multiple of the denominator residue degrees of the faces of P
.
ResidualSplittingDegree (P :: PadRamifPgon)
-> RngIntElt
The degree of the splitting field of the residual polynomials of P
. This is the least common multiple of the residual splitting degrees of the faces of P
.
Points
IsVertex (pt :: PadRamifPgonPt)
-> BoolElt
True if pt
is a vertex in its ramification polygon.
IsDefinitelyOnPolygon (pt :: PadRamifPgonPt)
-> BoolElt
True if pt
is definitely on the ramification polygon.
IsDefinitelyNotOnPolygon (pt :: PadRamifPgonPt)
-> BoolElt
True if pt
is definitely not on the ramification polygon.
Coordinates (pt :: PadRamifPgonPt)
-> Tup
The coordinates <x,J>
of the point.
HasResidue (pt :: PadRamifPgonPt)
-> BoolElt, FldFinElt
True if pt
has a residue attached. Implies IsDefinitelyOnPolygon(pt)
. If so, returns the residue.
Residue (pt :: PadRamifPgonPt)
-> FldFinElt
The residue attached to pt
.
Faces
Points (F :: PadRamifPgonFace)
-> []
The points of the ramification polygon corresponding to the face.
Vertices (F :: PadRamifPgonFace)
-> []
The two end vertices of F
.
Slope (F :: PadRamifPgonFace)
-> FldRatElt
The slope of F
.
Denominator (F :: PadRamifPgonFace)
-> RngIntElt
The denominator of the slope of F
.
DenominatorResidueDegree (F :: PadRamifPgonFace)
-> RngIntElt
The degree of the residue class field adjoin Denominator(F)
th roots of unity.
HasResidualPolynomial (F :: PadRamifPgonFace)
-> BoolElt, RngUPolElt
True if the residual polynomial of F
is known. If so, also returns the polynomial.
ResidualPolynomial (F :: PadRamifPgonFace)
-> RngUPolElt
The residual polynomial of F
.
ResidualSplittingDegree (F :: PadRamifPgonFace)
-> RngIntElt
The degree of the splitting field of the residual polynomial.
Validity
IsValid (P :: PadRamifPgon)
-> BoolElt
True if P
is valid. That is, if there exists an Eisenstein polynomial with this ramification polygon.
IsWeaklyValid (P :: PadRamifPgon)
-> BoolElt
True if P
is weakly valid. This is weaker than validity, but is preserved under removing points from P
. Useful for enumerating all valid polygons.
IsValid_Points (P :: PadRamifPgon)
-> BoolElt
True if the points of P
are valid.
IsWeaklyValid_Points (P :: PadRamifPgon)
-> BoolElt
True if the points of P
are weakly valid.
IsValid_Residues (P :: PadRamifPgon)
-> BoolElt, Tup
True if the residues of P
are valid. If true, also returns <k,y>
such that the uniformizer residue is a k
th root of y
.
LowerBoundOnEisensteinCoefficient (P :: PadRamifPgon, i :: RngIntElt, s :: RngIntElt)
-> RngIntElt
The lower bound on the i
th coefficient of an Eisenstein polynomial generating P
due to the point with exponent s
.
LowerBoundOnEisensteinCoefficient (P :: PadRamifPgon, i :: RngIntElt)
-> RngIntElt
The lower bound on the i
th coefficient of an Eisenstein polynomial generating P
.
EisensteinCoefficientIsCritical (P :: PadRamifPgon, i :: RngIntElt)
-> RngIntElt
True if the i
th coefficient of an Eisenstein polynomial is critical in determining P
.
Equivalence
We say two ramification polygons are equivalent if the corresponding set of Eisenstein polynomials generates the same set of extensions (up to isomorphism).
Without any residual information, ramification polygons are already an invariant, and therefore are equivalent if and only if they are equal.
If there is residual information, then two polygons P1
and P2
are equivalent if they have residual information at the same points, and if there is a unit u
such that rho1_j = rho2_j u^R_j
for all (j,R_j,rho1_j)
in P1
and (j,R_j,rho2_j)
in P2
, and rho1_0 = rho2_0 u^n
where rho*_0
are the uniformizer residues.
IsEquivalent (P1 :: PadRamifPgon, P2 :: PadRamifPgon)
-> BoolElt, Any
True iff P1
and P2
are equivalent, that is, their corresponding Eisenstein polynomials generate the same extensions. If true, also returns <k,y>
such that any solution to x^k=y
conjugates one to the other. If false, also returns a reason.
EquivalenceClass (P :: PadRamifPgon)
-> {}
The elements of the equivalence class of P
.
EquivalenceClassSize (P :: PadRamifPgon)
-> RngIntElt
The size of the equivalence class of P
.
Counting extensions
From Lemma 4.4 of Sinclair, “Counting extensions of p-adic fields with given invariants”, we can count the number of extensions (inside an algebraic closure) with the given invariant based on the size of a template for the invariant. Note that this is different to counting the number of isomorphism classes: if an extension L/K
has no automorphisms, then it has (L:K)
conjugates in the algebraic closure, which are counted as distinct even though they are isomorphic.
NumberOfExtensions (P :: PadRamifPgon)
-> RngIntElt
The number of extensions (inside an algebraic closure) with this invariant.
Enumeration
AllRamificationPolygons (F :: FldPadTmpl, n :: RngIntElt)
-> []
All valid ramification polygons over F
of degree n
.
Parameters
J0
: When given, restrict to polygons with vertex<1,J0>
, i.e. with discriminant valuationJ0+n-1
. May also be a set of integers.Fine := false
: When true, produce fine ramification polygons, where every point is either in or out. Equivalent to callingAllRefinements
on the outputs.Res := false
: When true, produce polygons with residues. Equivalent to callingWithAllResidues
on the outputs. ImpliesFine:=true
.URes := false
: When true, produce polygons with uniformizer residues. Equivalent to callingWithAllUniformizerResidues
on the outputs.Classes := false
: When true, produce only one representative per equivalence class. Only makes a difference whenRes
orURes
are set.NumFaces
: When given, restrict to polygons with this many faces. May also be a set of integers.Denominator
: When given, restrict to polygons whose denominator is this. May also be a set of integers.ResidualSplittingDegree
: When given, restrict to polygons whose residual splitting degree is this. ImpliesRes:=true
.
AllRefinements (P :: PadRamifPgon)
-> []
All fine ramification polygons which refine P
.
Parameters
Res := false
: As forAllRamificationPolygons
.URes := false
: As forAllRamificationPolygons
.Classes := false
: As forAllRamificationPolygons
.
WithAllResidues (P :: PadRamifPgon)
-> []
All valid assignments of residues to P
.
Parameters
Classes := false
: When true, only return one representative per equivalence class.URes := false
: As forAllRamificationPolygons
.ResidualSplittingDegree
: As forAllRamificationPolygons
.
WithAllUniformizerResidues (P :: PadRamifPgon)
-> []
All valid assignments of uniformizer residues to P
.
Parameters
Classes := false
: When true, returns one per equivalence class
CorrectTamePoints (P :: PadRamifPgon)
-> []
The correct tame points for P
.
WithCorrectTamePoints (P :: PadRamifPgon)
-> PadRamifPgon
A copy of P
with the correct tame points.