Sums of three squares: the case m ≡ 3 (mod 8) #
This file formalises the m ≡ 3 (mod 8) case of the three-squares theorem of
N. C. Ankeny: every positive integer not of the form 4ᵃ(8n + 7) is a sum of
three squares. The proof follows Davenport's geometry-of-numbers argument via
Minkowski's theorem (see LeanPool.SumsThreeSquares.MinkowskiConvex).
The main result is blueprint_case_mod8_eq3.
The linear map M of the geometry-of-numbers argument.
Equations
Instances For
theorem
LeanPool.SumsThreeSquares.det_linear_map_M_ne_zero
(m q : ℕ)
(t b : ℤ)
(hm : 0 < m)
(hq : 0 < q)
:
@[reducible, inline]
The linear map M reinterpreted on EuclideanSpace ℝ (Fin 3).
Equations
- LeanPool.SumsThreeSquares.linearMapMEuclidean m q t b = ↑↑(EuclideanSpace.equiv (Fin 3) ℝ).symm ∘ₗ LeanPool.SumsThreeSquares.linearMapM m q t b ∘ₗ ↑↑(EuclideanSpace.equiv (Fin 3) ℝ)
Instances For
theorem
LeanPool.SumsThreeSquares.det_linear_map_M_euclidean
(m q : ℕ)
(t b : ℤ)
(hm : 0 < m)
(hq : 0 < q)
:
theorem
LeanPool.SumsThreeSquares.vol_preimage_ball_euclidean
(m q : ℕ)
(t b : ℤ)
(hm : 0 < m)
(hq : 0 < q)
:
MeasureTheory.volume (⇑(linearMapMEuclidean m q t b) ⁻¹' Metric.ball 0 √(2 * ↑m)) = ENNReal.ofReal (4 / 3 * Real.pi * (2 * ↑m) ^ (3 / 2) / (↑m * √↑m))
theorem
LeanPool.SumsThreeSquares.exists_R_v_of_mod8_eq3
(m : ℕ)
(hm : Squarefree m)
(hm_pos : 0 < m)
(hmod : m % 8 = 3)
:
There exist q, b, h, t, x, y, z yielding R² + 2v = m with v > 0.
theorem
LeanPool.SumsThreeSquares.p_mod4_of_dvd_v_dvd_m
(p q : ℕ)
(b h x y R v : ℤ)
(m : ℕ)
(hp : Nat.Prime p)
(hp3 : p % 4 = 3)
(hm_sq : Squarefree m)
(hv : v = ↑q * x ^ 2 + b * x * y + h * y ^ 2)
(hbqm : b ^ 2 - 4 * ↑q * h = -↑m)
(hRv : R ^ 2 + 2 * v = ↑m)
(hpv : ↑p ∣ v)
(hpm : p ∣ m)
(hjac : jacobiSym (-2 * ↑q) p = 1)
:
theorem
LeanPool.SumsThreeSquares.even_padicVal_of_mod4_eq3
(p q : ℕ)
(b h x y R : ℤ)
(v m : ℕ)
(hp : Nat.Prime p)
(hp3 : p % 4 = 3)
(hm_sq : Squarefree m)
(hv_pos : 0 < v)
(hv_def : ↑v = ↑q * x ^ 2 + b * x * y + h * y ^ 2)
(hbqm : b ^ 2 - 4 * ↑q * h = -↑m)
(hRv : R ^ 2 + 2 * ↑v = ↑m)
(hjac : ∀ (p' : ℕ), p' ∣ m → Nat.Prime p' → jacobiSym (-2 * ↑q) p' = 1)
:
Even (padicValNat p (2 * v))
theorem
LeanPool.SumsThreeSquares.two_v_sum_two_squares
(q : ℕ)
(b h x y R : ℤ)
(v m : ℕ)
(hm_sq : Squarefree m)
(hv_pos : 0 < v)
(hv_def : ↑v = ↑q * x ^ 2 + b * x * y + h * y ^ 2)
(hbqm : b ^ 2 - 4 * ↑q * h = -↑m)
(hRv : R ^ 2 + 2 * ↑v = ↑m)
(hjac : ∀ (p : ℕ), p ∣ m → Nat.Prime p → jacobiSym (-2 * ↑q) p = 1)
:
theorem
LeanPool.SumsThreeSquares.blueprint_case_mod8_eq3
(m : ℕ)
(hm_sq : Squarefree m)
(hm_pos : 0 < m)
(hm_mod : m % 8 = 3)
:
The m ≡ 3 (mod 8) case of the three-squares theorem.