Hilbert-symbol existence theorem #
Given prescribed local Hilbert-symbol values (x, aᵢ)_v = e_{i,v} at all places v of ℚ,
one asks whether there is a single rational x realising all of them. The answer is given
by the classical necessary-and-sufficient conditions (Serre, Cours d'arithmétique, Ch. III):
- for each
i, almost all thee_{i,v}are1; - for each
i, the product of thee_{i,v}is1(the product formula); - the prescription is locally realisable at every place.
This file ports the constructive core of the HassePrinciple proof. Writing S for the
finite set of
prime numbers dividing some aᵢ (together with 2) and T for the finite set of primes at
which some e_{i,p} equals -1, the construction produces
x = A · q with A = ∏_{t ∈ T} t and q a prime chosen by Dirichlet's theorem so that
q ≡ A (mod 4·∏_{s ∈ S} s). This x is a square at every prime of S, has p-adic
valuation 1 at every prime of T and valuation 0 at the remaining primes — exactly the
three facts on which the place-by-place verification rests.
Status #
This file provides the Dirichlet/CRT construction of S, T, A, M, the
squareness/valuation lemmas at each place, the disjoint case of the existence theorem
(exists_disjoint, WP3.1 of Plan-v3.md), and the general existence theorem
(exists_rat_hilbertSym, WP3.2, Serre III Thm 4), which reduces to the disjoint case. No
sorry is introduced.
Provenance #
This file is a derived work. It is based on HilbertSymbol/ExistenceTheorem.lean of the
HassePrinciple project (https://github.com/mariainesdff/HassePrinciple,
Apache-2.0, Copyright (c) 2026 Nirvana Coppola,
María Inés de Frutos-Fernández), a Women in Numbers 7 collaboration.
It has been modified: the statements and proofs were rewritten for Lean 4.33 /
Mathlib without upstream's module system, and the development is extended beyond
what upstream proves. Upstream declaration names are kept so that the two
developments can be compared side by side. See the repository NOTICE file.
S is the finite set of primes dividing the numerator or the denominator of some a i,
together with 2. (In Serre, S also contains ∞.)
Equations
- HasseMinkowski.Existence.S a = ((Finset.univ.biUnion fun (i : I) => (a i).natAbs.primeFactors) ∪ {2}).preimage Subtype.val ⋯
Instances For
T is the finite set of primes such that at least one of the e_{i,v} is -1.
Equations
- HasseMinkowski.Existence.T hep h1 = ⋯.toFinset
Instances For
A is the product of all primes of T.
Equations
- HasseMinkowski.Existence.A hep h1 = ∏ t ∈ HasseMinkowski.Existence.T hep h1, ↑t
Instances For
M = 4 · ∏_{s ∈ S} s, the modulus used in the congruence defining q.
Equations
- HasseMinkowski.Existence.M a = 4 * ∏ s ∈ HasseMinkowski.Existence.S a, ↑s
Instances For
WP3.1 sub-lemmas: the auxiliary prime ℓ #
The construction x = A · ℓ needs ℓ to be a prime larger than every prime of S ∪ T
and congruent to A modulo M. These lemmas record the elementary consequences of those
two hypotheses: ℓ ∉ T (hence ε_{i,ℓ} = 1), the congruence M ∣ ℓ - A, and the
divisibility of A by exactly the primes of T.
The symbol at a p-adic unit against an arbitrary element #
For odd p, if the first argument is a unit then only the parity of the valuation of the
second argument matters: (u,b)_p = χ(u) for odd valuation and = 1 for even valuation.
The product-formula obstruction #
The hypotheses of exists_disjoint force the construction x = A · ℓ, but they do not
constrain the product of the prescribed values ep i p. The lemma below shows this is a
genuine obstruction: if a > 0 and a nonzero rational x realises the sign pattern that is
-1 at a single prime p₀ and 1 at every other finite place, then Hilbert reciprocity
(whose archimedean factor is 1 because a > 0) is violated. Thus no version of
exists_disjoint without a hypothesis ∏ᶠ p, ep i p = 1 can be true.
The ℓ-place and the assembly #
At the new prime ℓ we use Hilbert reciprocity. Since x = A·ℓ > 0, the archimedean factor
is 1, so the product of all finite symbols is 1; all finite places other than ℓ have
symbol ep i p (cases S, T, and the unit place), and the product of the ep i p is 1
by h2. Hence the symbol at ℓ is 1, matching ep i ℓ = 1.
WP3.2: the general existence theorem #
We now drop the disjointness assumption. The proof reduces a to squarefree integers,
approximates the local realisations by a rational x' whose quotients are local squares,
shifts the prescription by (α i, x'), and applies the disjoint-case
exists_disjoint to the shifted prescription.