Skip to content

Adèles and Idèles ​

A number you only know modulo something is still a number you can compute with. "3 mod 12" is a set — every integer that leaves remainder 3 — and adding "5 mod 8" to it gives a set too: everything is , since 4 is all the two congruences agree on. The profinite integers are what those sets approximate: a profinite integer knows its residue modulo every at once, and an element "known modulo " is an open ball around it.

This page follows Mathé Hertogh's thesis Computing with adèles and idèles (Leiden, 2021) and its Sage package, over . Three value heads carry it — ProfiniteNumber, Adele and Idele — and everything else is an existing head that learned to take them.

Known modulo m ​

ProfiniteNumber(x, m) is the coset . It normalises to the representative in , and a modulus of 0 means exact, so it is just .

Sums and products

A sum is known modulo the gcd of the moduli; a product modulo the gcd of the cross terms — (3 + 12a)(5 + 8b) = 15 + 24a + 60b + 96ab, and gcd(24, 60, 96) = 12.

source · editable

Equality asks whether the two sets meet. That is the only honest question about values known approximately, and it is not transitive: 6 mod 20 meets 6 mod 40 and 26 mod 40, which do not meet each other.

Equal means the sets meet

6 mod 20 is compatible with both; the two finer values are not compatible with each other.

source · editable

One prime at a time ​

By the Chinese remainder theorem, knowing is knowing and separately: . The -adic components are the b-adic numbers the numerals package already has, so AdicNumeral(p, z) projects, and ProfiniteNumber of a list of them glues back.

ℤ̂ = ∏ ℤ_p

100 mod 24 is 4 mod 8 at 2 and 1 mod 3 at 3; gluing the pieces gives it back. At 5 nothing is known, so the projection declines.

source · editable

Profinite rationals ​

allows rational values and rational moduli: is a perfectly good element. It is integral when some clears it into , and Numerator and Denominator split it that way.

Rational values and moduli

gcd(97/5, 10) = 1/5, and 1/2 + 1/3 = 5/6 ≡ 1/30 mod 1/5. 2/3 mod 5 is (2 mod 15)/3.

source · editable

Profinite Fibonacci numbers ​

is periodic in , so it depends only on modulo the period. Read the other way round (Lenstra, Profinite Fibonacci numbers): knowing modulo pins down modulo every whose Pisano period divides — the largest is . So Fibonacci is a continuous function , and so is LucasL.

Fibonacci on ℤ̂

The Pisano period of 11 is 10, so n ≡ 3 mod 10 fixes Fₙ ≡ 2 mod 11 and Lₙ ≡ 4 mod 11.

source · editable

A function on has a graph in , and Hertogh draws it by laying along the unit interval by its factorial digits, — residue classes mod become consecutive cells. ProfinitePlot(f, x, k) fills a cell when maps its column class into its row class. Lenstra's theorem that has exactly the solutions and two more in shows up where the graph crosses the diagonal.

The graph of Fibonacci on ℤ̂

The identity is a diagonal; Fibonacci is a fractal that keeps meeting it.

source · editable

Adèles ​

An adèle of adds the one place the profinite part leaves out — the real numbers — so . Adele(r, z) is the pair; a rational sits on the diagonal, Adele(q) being at every place, and arithmetic is componentwise.

ℝ × ℚ̂

A rational multiplies both components; adèles add componentwise.

source · editable

Idèles ​

The idèles are the units of the adèles, with a finer topology: a nonzero real and, at each prime, a nonzero -adic that is a unit at all but finitely many. Over each -component is with a unit, so Idele(r, s, [...]) keeps the valuations in one positive rational and lists the units that are known, as -adics known modulo — Hertogh's . A prime not listed has an unknown unit. Idele(r, q) is principal: itself at every prime.

The idèle group

7 and 1/7 are inverse. A listed component moves its valuation into the scale: 15/7 at 5 is 5 × (3/7), and 3/7 ≡ 54 mod 125.

source · editable

Every idèle is an adèle — the one whose component at is — and Adele(idèle) finds the coset in that holds it. Primes with no listed unit contribute only divisibility, and at 2 even an unknown unit is odd.

From idèles to adèles

At 3 the unit is 2 mod 9; at 2 it is odd: together 11 mod 18.

source · editable

Strong approximation ​

Every factors as with and — the matrix form of "", and the step Hertogh's algorithms for Shimura reciprocity rest on. ProfiniteDecomposition(m) finds from the Hermite normal form of the lattice 's rows span, and gives back . It declines when is known too coarsely for to be determined.

GL_n(ℚ̂) = GL_n(ℤ̂) · GL_n⁺(ℚ)

The rows of [[3, 1], [1, 1]] span the lattice with Hermite form [[1, 1], [0, 2]], and B = [[3, −1], [1, 0]] is unimodular. Known only modulo 12 — a multiple of the determinant — the same A comes out, and B is known modulo 12 in its first column and 6 in its second — A⁻¹ halves it.

source · editable

Not yet ​

Hertogh's package works over any number field : profinite completions of its ring of integers, idèles mapping to ray class groups, and — the thesis's destination — Hilbert class polynomials computed through Shimura reciprocity. All of that needs number fields, their ideals and class field theory underneath, which the engine does not have yet.