FLINT3.7.0-dev
Algorithm

Frobenius automorphism and Teichmüller lifts in unramified extensions

Cost
Σe(X)\Sigma^e(X) modulo pNp^N: O(elog⁡p)O(e \log p) multiplications modulo pp, then O(d)O(\sqrt d) multiplications in Zq\mathbf{Z}_q and O(d)O(d) scalar operations at each of O(log⁡N)O(\log N) precisions; applying Σe\Sigma^e to an element: O(d)O(\sqrt d) multiplications in Zq\mathbf{Z}_q. Teichmüller lift: O(dlog⁡p)O(d \log p) multiplications in Zq\mathbf{Z}_q at each precision.

The extension Qq/Qp\mathbf{Q}_q/\mathbf{Q}_p of degree dd, q=pdq = p^d, is Galois with cyclic Galois group of order dd, and reduction modulo pp identifies it with the Galois group of Fq/Fp\mathbf{F}_q/\mathbf{F}_p [Rob2000, Ch. 3]. The generator Σ\Sigma corresponding to the Frobenius σ(x)=xp\sigma(x) = x^p of Fq\mathbf{F}_q is the Frobenius automorphism of Qq\mathbf{Q}_q; it is the basic tool of pp-adic point counting algorithms such as Kedlaya's [Ked2001] and of the canonical lift methods of Satoh, Skjernaa and Taguchi [SST2003]. The representation of Qq=Qp[X]/(f)\mathbf{Q}_q = \mathbf{Q}_p[X]/(f) is described in Arithmetic in unramified extensions.

The Frobenius automorphism#

Since Σ\Sigma fixes Qp\mathbf{Q}_p, it is determined by the image of the generator: for g=∑iciXig = \sum_i c_i X^i with ci∈Qpc_i \in \mathbf{Q}_p, Σe(g)=∑ici Σe(X)i=g(Σe(X))\Sigma^e(g) = \sum_i c_i \, \Sigma^e(X)^i = g(\Sigma^e(X)).

Proposition 1. Σe(X)\Sigma^e(X) is the unique root ξ∈Zq\xi \in \mathbf{Z}_q of ff with ξ≡Xpe(modp)\xi \equiv X^{p^e} \pmod p.

Proof. Σe(X)\Sigma^e(X) is a root of ff since Σe\Sigma^e is an automorphism, and it reduces to σe(Xˉ)=Xˉpe\sigma^e(\bar X) = \bar X^{p^e}. The reduction fˉ\bar f is irreducible over the finite field Fp\mathbf{F}_p, hence separable, so f′(ξ)≢0(modp)f'(\xi) \not\equiv 0 \pmod p and Hensel's lemma (Lemma 1 of Hensel lifting of inverses, square roots and Teichmüller lifts) gives uniqueness.

_qadic_frobenius_a computes ξ\xi modulo pNp^N by Newton's method. It computes XpeX^{p^e} modulo (f,p)(f, p) by binary powering, inverts f′(ξ)f'(\xi) modulo (f,p)(f, p), and then, along the precision sequence N,⌈N/2⌉,…N, \lceil N/2 \rceil, \ldots of The precision sequence, applies

ξ←ξ−f(ξ) s,s←s(2−f′(ξ)s),\xi \gets \xi - f(\xi) \, s, \qquad s \gets s\bigl(2 - f'(\xi) s\bigr),

where ss approximates f′(ξ)−1f'(\xi)^{-1}; by Lemma 1 of Hensel lifting of inverses, square roots and Teichmüller lifts the precision of ξ\xi and of ss doubles in each step. The polynomials f(ξ)f(\xi) and f′(ξ)f'(\xi) are compositions: polynomials of degree dd and d−1d - 1 with coefficients in Zp\mathbf{Z}_p evaluated at an element of Zq\mathbf{Z}_q.

Algorithm 1: Composition modulo f by rectangular splitting

Input: g=∑i<ℓciXig = \sum_{i < \ell} c_i X^i with ci∈Zc_i \in \mathbb{Z}, an element ξ\xi of Zq\mathbf{Z}_q, a modulus pMp^M.

Output: g(ξ) mod (f,pM)g(\xi) \bmod (f, p^M).

  1. Let B=⌊ℓ⌋B = \lfloor \sqrt{\ell} \rfloor and compute ξ2,…,ξB\xi^2, \ldots, \xi^B modulo (f,pM)(f, p^M).
  2. For h=⌈ℓ/B⌉−1,…,0h = \lceil \ell/B \rceil - 1, \ldots, 0: set r←rξB+∑k<BchB+kξkr \gets r \xi^B + \sum_{k < B} c_{hB + k} \xi^k, reducing modulo (f,pM)(f, p^M).

This is the Paterson–Stockmeyer scheme [PS1973]: about 2ℓ2\sqrt\ell multiplications in Zq\mathbf{Z}_q and ℓ\ell scalar multiplications of elements by integers. FLINT uses it for ℓ≥6\ell \ge 6 and Horner's rule for shorter gg.

_qadic_frobenius then applies Σe\Sigma^e to an element gg by evaluating g(Σe(X))g(\Sigma^e(X)) with the same algorithm. Two special cases avoid the lifting: an element of Qp\mathbf{Q}_p (length 1) is fixed, and for N=1N = 1 the image is gpeg^{p^e} computed by binary powering modulo (f,p)(f, p). qadic_frobenius reduces ee modulo dd, so that negative ee give the inverse automorphisms, and applies the map to the unit part, the valuation being unchanged.

qadic_frobenius recomputes Σe(X)\Sigma^e(X) on every call. A caller that applies the same power of Σ\Sigma to many elements can call _qadic_frobenius_a once and evaluate the elements at its result.

Teichmüller lifts#

The Teichmüller lift ω(x)\omega(x) of a unit x∈Zqx \in \mathbf{Z}_q is the unique (q−1)(q - 1)-th root of unity congruent to xx modulo pp. The map x↦ω(x)x \mapsto \omega(x) is multiplicative, the roots of unity of order prime to pp in Qq\mathbf{Q}_q are exactly the Teichmüller lifts, and

Σ(ω(x))=ω(x)p,\Sigma(\omega(x)) = \omega(x)^p ,

because both sides are (q−1)(q - 1)-th roots of unity congruent to xpx^p modulo pp. _qadic_teichmuller computes ω(x)\omega(x) as the root of tq−tt^q - t congruent to xx, by the iteration t←t−(q−1)−1(tq−t)t \gets t - (q - 1)^{-1}(t^q - t) of Teichmüller lifts, the inverse of q−1q - 1 being lifted alongside. Each step computes tqt^q by binary powering with exponent q=pdq = p^d, which takes about dlog⁡2pd \log_2 p squarings in Zq\mathbf{Z}_q, so the cost is O(dlog⁡p)O(d \log p) multiplications at precision NN, against O(d)O(\sqrt d) for one application of Σ\Sigma. For an element of Zp\mathbf{Z}_p the lift is computed in Zp\mathbf{Z}_p by _padic_teichmuller, where the exponent is pp.

Use in FLINT#

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
  • [Ked2001] K. S. Kedlaya. Counting points on hyperelliptic curves using Monsky–Washnitzer cohomology. Journal of the Ramanujan Mathematical Society 16 (2001), 323–338.
  • [SST2003] T. Satoh, B. Skjernaa and Y. Taguchi. Fast computation of canonical lifts of elliptic curves and its application to point counting. Finite Fields and Their Applications 9 (2003), 89–101. https://doi.org/10.1016/S1071-5797(02)00013-8
  • [PS1973] M. S. Paterson and L. J. Stockmeyer, "On the number of nonscalar multiplications necessary to evaluate polynomials", SIAM J. Comput (1973)
Cite this page

The FLINT team, “Frobenius automorphism and Teichmüller lifts in unramified extensions,” FLINT: Fast Library for Number Theory, documentation, version 3.7.0-dev, 2026. https://flintlib.org/doc/algorithms/p-adic/frobenius.html (generated 2026-11-02).