Arithmetic in unramified extensions
- Cost
- Multiplication: by Kronecker substitution plus for the reduction ( terms in ); trace: operations modulo ; norm: one determinant modulo , or a logarithm, a trace and an exponential.
An unramified extension of of degree is , , for a monic whose reduction modulo is irreducible over . It depends only on , its ring of integers is , and its residue field is . In particular is still a uniformiser: every nonzero element is with , and is a unit if and only if its reduction in is nonzero [Rob2000, Ch. 3]. The Frobenius automorphism and Teichmüller lifts are treated in Frobenius automorphism and Teichmüller lifts in unramified extensions.
Representation#
A qadic_ctx_t stores with integer coefficients in as a sparse list of terms , , . By default (qadic_ctx_init) is the Conway polynomial for if the database has it, otherwise the polynomial chosen by nmod_poly_minimal_irreducible for word-size , or a random sparse irreducible polynomial for larger ; any monic polynomial irreducible modulo can be supplied instead (Defining polynomials).
An element is a padic_poly_t with , where the coefficients of are reduced modulo and not all divisible by ; this is the fixed-precision model of The fixed-precision model of padic and qadic. Since has a coefficient that is a unit of , its image in is nonzero, so is the valuation of the element and represents a unit of .
Multiplication and reduction#
The product of and is ; as in the field , the product is again canonical and no factor of has to be removed. qadic_mul multiplies and in (_fmpz_poly_mul, which uses Kronecker substitution or other methods depending on the sizes, Multiplying polynomials over Z) and reduces the product modulo and .
Input: and .
Output: , of length at most .
- For : for each , subtract from ; then set .
Each step removes the term by subtracting , so the result is congruent to modulo . The reduction costs multiply-subtracts, which is small compared with the product when is sparse, as Conway polynomials and the minimal-weight polynomials used by default usually are. The coefficients are reduced modulo once, after the reduction modulo (_fmpz_mod_poly_reduce). The same functions serve qadic_reduce and the powering, inversion, Frobenius and series evaluation routines of qadic. The finite field modules use the same sparse elimination (Reduction modulo the defining polynomial).
qadic_pow uses left-to-right binary exponentiation with this reduction.
Inversion#
The inverse of is , and is computed by the Newton iteration in (Inverses), starting from the inverse of in , which _qadic_inv computes by the extended Euclidean algorithm in modulo . The total cost is a constant number of multiplications in at precision .
Trace#
The trace of is the trace of multiplication by as a -linear map, equivalently the sum of the images of under the embeddings into an algebraic closure. For it is , where are the power sums of the roots of .
Proposition 1 (Newton's identities). For monic the power sums satisfy and, for ,
_qadic_trace evaluates this recurrence on the sparse representation, in which only the with contribute, so that for an element of length cost operations modulo , and then forms . As is unramified, ; the trace of is , which may have valuation larger than , and qadic_trace canonicalises it.
Norm#
The norm is the determinant of multiplication by , or the product of the conjugates of ; , and is a unit for a unit . FLINT has two methods.
The resultant method uses for monic , which holds because . _qadic_norm_resultant builds the Sylvester matrix of and , of dimension at most , and computes its determinant modulo with fmpz_mod_mat_det, which uses Gaussian elimination when the pivots it meets are invertible and falls back to the division-free Berkowitz algorithm otherwise.
The analytic method applies when (modulo 4 if ).
Proposition 2. If ( if ), then .
Proof. The automorphisms of are continuous, so they commute with the power series: . Hence . Both and its trace lie in (in for ), where converges and inverts , and (respectively ), so .
_qadic_norm_analytic computes the logarithm in , its trace and the exponential in (The p-adic exponential and logarithm); its cost is quasi-linear in and . _qadic_norm chooses the analytic method when it applies and , and the resultant method otherwise; for elements of (length 1) it returns .
Square roots#
A nonzero is a square in if and only if is even and is a square in . For odd , Hensel's lemma reduces the latter to being a square in . qadic_sqrt computes a square root in by if , by Atkin's formula if (with , the root is or ), and otherwise by the Tonelli–Shanks algorithm with a quadratic non-residue found by enumerating the elements of in a fixed order (Frobenius map, norm, trace and roots). It then lifts the inverse square root as in Square roots.
For every element of is a square, being the square root of , but not every unit of is a square. Let and let lift the square root of . A lift is an inverse square root of modulo 8 if and only if . This requires , a condition independent of the choice of , and then, with and , the Artin–Schreier equation
The map is -linear with kernel , so the equation is solved by linear algebra over : qadic_sqrt builds the matrix of the map and its LUP decomposition, and _qadic_char2_sqrt_precomp_init stores that decomposition so that _qadic_char2_sqrt_with_precomp can reuse it for many square roots in the same field. If the equation has no solution, is not a square. Otherwise the lift is refined by the 2-adic inverse square root iteration of Lemma 3 of Hensel lifting of inverses, square roots and Teichmüller lifts.
Use in FLINT#
- Reduction:
_fmpz_poly_reduce,_fmpz_mod_poly_reduce,qadic_reduce; multiplication and powering:qadic_mul,_qadic_pow,qadic_pow. - Inversion:
_qadic_inv,qadic_inv. - Trace and norm:
_qadic_trace,qadic_trace,_qadic_norm,qadic_norm,_qadic_norm_resultant,qadic_norm_resultant,_qadic_norm_analytic,qadic_norm_analytic. - Square roots:
qadic_sqrt,_qadic_char2_sqrt_precomp_init,_qadic_char2_sqrt_with_precomp,_qadic_char2_sqrt_precomp_clear. - Exponential and logarithm: The p-adic exponential and logarithm.
Referenced from#
References#
- [Rob2000] A. M. Robert. A Course in p-adic Analysis. Graduate Texts in Mathematics 198, Springer, 2000. https://doi.org/10.1007/978-1-4757-3254-2
The FLINT team, “Arithmetic in unramified extensions,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/algorithms/p-adic/unramified-extensions.html (generated 2026-11-02).
@misc{flint-doc-algorithms-p-adic-unramified-extensions,
author = {{The FLINT team}},
title = {{Arithmetic in unramified extensions}},
howpublished = {FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev},
year = {2026},
url = {https://flintlib.org/doc/algorithms/p-adic/unramified-extensions.html},
note = {Generated 2026-11-02}
}