Local-global conjecture for Apollonian circle packings
DefinitionGeneral linear group action on primitive vectors#✓fully proved
Call \(v \in \mathbb{Z}^4\) primitive when the greatest common divisor of its four entries is \(1\). For every \(X \in \mathrm{GL}_4(\mathbb{Z})\) and every primitive \(v\), the vector \(Xv\) is primitive, so \(\mathrm{GL}_4(\mathbb{Z})\) acts on the primitive vectors of \(\mathbb{Z}^4\) by \(v \mapsto Xv\).
MathlibExt.NumberTheory.LocalGlobalApollonianCirclePackingsWanted.LocalGlobalApollonianCirclePackings.GeneralLinearGroupAction · 16 lines
def GeneralLinearGroupAction : SubMulAction (GL (Fin 4) ℤ) (Fin 4 → ℤ) where
carrier := { v | Finset.univ.gcd v = 1}
smul_mem' X v hv := by
rw [Set.mem_ofPred_eq] at hv ⊢
apply Int.eq_one_of_dvd_one
· rw [← Finset.normalize_gcd, ← Int.abs_eq_normalize]
apply abs_nonneg
· rw [← hv, Finset.dvd_gcd_iff]
intro i _
have key : v i = ((X⁻¹).1 *ᵥ (X.1 *ᵥ v)) i := by simp
rw [key, mulVec_eq_sum (X.1 *ᵥ v) (X⁻¹).1]
simp only [op_smul_eq_smul, Finset.sum_apply]
apply Finset.dvd_sum
intro i hi
apply dvd_mul_of_dvd_left
apply Finset.gcd_dvd hi
Used by 1
DefinitionDescartes matrix#✓fully proved
The Descartes matrix is the \(4 \times 4\) integer matrix \(M\) with \(M_{ii} = 1\) for every \(i\) and \(M_{ij} = -1\) for \(i \ne j\). It is the matrix of the Descartes form: for \(v = (a, b, c, d) \in \mathbb{Z}^4\) one has \(v^{\mathsf T} M v = 2(a^2 + b^2 + c^2 + d^2) - (a + b + c + d)^2\).
DefinitionDescartes orthogonal group#✓fully proved
Let \(M\) be the Descartes matrix. The Descartes orthogonal group is the subgroup of \(\mathrm{GL}_4(\mathbb{Z})\) consisting of the matrices \(X\) with \(X^{\mathsf T} M X = M\), that is, the invertible integer matrices that preserve the Descartes form \(2(a^2 + b^2 + c^2 + d^2) - (a + b + c + d)^2\).
def DescartesOrthogonalGroup : Subgroup (GL (Fin 4) ℤ) where
carrier := {X | star X * DescartesMatrix * X = DescartesMatrix}
one_mem' := by simp
inv_mem' hX := by grind [star_inv, Units.inv_mul_cancel_left, Units.mul_inv]
mul_mem' hX hY := by grind [Units.val_mul, StarMul.star_mul]
def DescartesMatrix : Matrix (Fin 4) (Fin 4) ℤ :=
!![1, -1, -1, -1;
-1, 1, -1, -1;
-1, -1, 1, -1;
-1, -1, -1, 1]
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:87
Uses 1 · Used by 2
DefinitionDescartes orthogonal group action#✓fully proved
Let \(Q\) be the set of vectors \((a, b, c, d) \in \mathbb{Z}^4\) with \((a + b + c + d)^2 = 2(a^2 + b^2 + c^2 + d^2)\) and \(\gcd(a, b, c, d) = 1\). For every matrix \(X\) in the Descartes orthogonal group and every \(v \in Q\), the vector \(Xv\) lies in \(Q\), so the Descartes orthogonal group acts on \(Q\) by \(v \mapsto Xv\).
def DescartesOrthogonalGroupAction : SubMulAction DescartesOrthogonalGroup (Fin 4 → ℤ) where
carrier := { v | (∑ i, v i) ^ 2 = 2 * ∑ i, v i ^ 2 ∧ Finset.univ.gcd v = 1}
smul_mem' := by
rintro ⟨X, hX⟩ v ⟨hv1, hv2⟩
rw [mem_descartesOrthogonalGroup_iff, Units.coe_star,
star_eq_conjTranspose, conjTranspose_eq_transpose_of_trivial] at hX
refine ⟨?_, GeneralLinearGroupAction.smul_mem X hv2⟩
rw [descartes_iff] at hv1 ⊢
rwa [Subgroup.mk_smul, GeneralLinearGroup.smul_def,
vecMul_mulVec, dotProduct_mulVec, vecMul_vecMul, hX]
def DescartesOrthogonalGroup : Subgroup (GL (Fin 4) ℤ) where
carrier := {X | star X * DescartesMatrix * X = DescartesMatrix}
one_mem' := by simp
inv_mem' hX := by grind [star_inv, Units.inv_mul_cancel_left, Units.mul_inv]
mul_mem' hX hY := by grind [Units.val_mul, StarMul.star_mul]
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:94
Uses 3 · Used by 1
DefinitionIntegral primitive Descartes quadruple#✓fully proved
An integral primitive Descartes quadruple is a vector \((a, b, c, d) \in \mathbb{Z}^4\) such that \(a + b + c + d > 0\), the Descartes equation \((a + b + c + d)^2 = 2(a^2 + b^2 + c^2 + d^2)\) holds, and \(\gcd(a, b, c, d) = 1\).
def integralPrimitiveDescartesQuadruple : Set (Fin 4 → ℤ) :=
{ v | ∑ i, v i > 0 ∧ (∑ i, v i) ^ 2 = 2 * ∑ i, v i ^ 2 ∧ Finset.univ.gcd v = 1}
Sources
- S. Haag, C. Kertzer, J. Rickards, and K. E. Stange,
The local-global conjecture for Apollonian circle packings is false, Annals of Math, 200 (2) 2024, Section 1.1.
AbbreviationThe Apollonian generator \(S_1\)#✓fully proved
\(S_1\) is the element of \(\mathrm{GL}_4(\mathbb{Z})\) given by the \(4 \times 4\) integer matrix whose first row is \((-1, 2, 2, 2)\) and whose other rows are those of the identity matrix; it is its own inverse. Acting on column vectors, it sends \((a, b, c, d)\) to \((-a + 2b + 2c + 2d, b, c, d)\).
It is one of the four generators of the Apollonian group defined at the start of Section 3 of Haag, Kertzer, Rickards and Stange.
abbrev S₁ : GL (Fin 4) ℤ :=
⟨!![-1, 2, 2, 2; 0, 1, 0, 0; 0, 0, 1, 0; 0, 0, 0, 1],
!![-1, 2, 2, 2; 0, 1, 0, 0; 0, 0, 1, 0; 0, 0, 0, 1],
by decide, by decide⟩
AbbreviationThe Apollonian generator \(S_2\)#✓fully proved
\(S_2\) is the element of \(\mathrm{GL}_4(\mathbb{Z})\) given by the \(4 \times 4\) integer matrix whose second row is \((2, -1, 2, 2)\) and whose other rows are those of the identity matrix; it is its own inverse. Acting on column vectors, it sends \((a, b, c, d)\) to \((a, 2a - b + 2c + 2d, c, d)\).
It is one of the four generators of the Apollonian group defined at the start of Section 3 of Haag, Kertzer, Rickards and Stange.
abbrev S₂ : GL (Fin 4) ℤ :=
⟨!![1, 0, 0, 0; 2, -1, 2, 2; 0, 0, 1, 0; 0, 0, 0, 1],
!![1, 0, 0, 0; 2, -1, 2, 2; 0, 0, 1, 0; 0, 0, 0, 1],
by decide, by decide⟩
AbbreviationThe Apollonian generator \(S_3\)#✓fully proved
\(S_3\) is the element of \(\mathrm{GL}_4(\mathbb{Z})\) given by the \(4 \times 4\) integer matrix whose third row is \((2, 2, -1, 2)\) and whose other rows are those of the identity matrix; it is its own inverse. Acting on column vectors, it sends \((a, b, c, d)\) to \((a, b, 2a + 2b - c + 2d, d)\).
It is one of the four generators of the Apollonian group defined at the start of Section 3 of Haag, Kertzer, Rickards and Stange.
abbrev S₃ : GL (Fin 4) ℤ :=
⟨!![1, 0, 0, 0; 0, 1, 0, 0; 2, 2, -1, 2; 0, 0, 0, 1],
!![1, 0, 0, 0; 0, 1, 0, 0; 2, 2, -1, 2; 0, 0, 0, 1],
by decide, by decide⟩
AbbreviationThe Apollonian generator \(S_4\)#✓fully proved
\(S_4\) is the element of \(\mathrm{GL}_4(\mathbb{Z})\) given by the \(4 \times 4\) integer matrix whose fourth row is \((2, 2, 2, -1)\) and whose other rows are those of the identity matrix; it is its own inverse. Acting on column vectors, it sends \((a, b, c, d)\) to \((a, b, c, 2a + 2b + 2c - d)\).
It is one of the four generators of the Apollonian group defined at the start of Section 3 of Haag, Kertzer, Rickards and Stange.
abbrev S₄ : GL (Fin 4) ℤ :=
⟨!![1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0; 2, 2, 2, -1],
!![1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0; 2, 2, 2, -1],
by decide, by decide⟩
DefinitionApollonian group#✓fully proved
The Apollonian group is the subgroup of \(\mathrm{GL}_4(\mathbb{Z})\) generated by the four matrices \(S_1, S_2, S_3, S_4\), where \(S_i\) agrees with the \(4 \times 4\) identity matrix except in row \(i\), which has entry \(-1\) in column \(i\) and entry \(2\) in each of the other three columns.
def ApollonianGroup : Subgroup (GL (Fin 4) ℤ) := Subgroup.closure {S₁, S₂, S₃, S₄}
abbrev S₁ : GL (Fin 4) ℤ :=
⟨!![-1, 2, 2, 2; 0, 1, 0, 0; 0, 0, 1, 0; 0, 0, 0, 1],
!![-1, 2, 2, 2; 0, 1, 0, 0; 0, 0, 1, 0; 0, 0, 0, 1],
by decide, by decide⟩
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:139
abbrev S₂ : GL (Fin 4) ℤ :=
⟨!![1, 0, 0, 0; 2, -1, 2, 2; 0, 0, 1, 0; 0, 0, 0, 1],
!![1, 0, 0, 0; 2, -1, 2, 2; 0, 0, 1, 0; 0, 0, 0, 1],
by decide, by decide⟩
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:145
abbrev S₃ : GL (Fin 4) ℤ :=
⟨!![1, 0, 0, 0; 0, 1, 0, 0; 2, 2, -1, 2; 0, 0, 0, 1],
!![1, 0, 0, 0; 0, 1, 0, 0; 2, 2, -1, 2; 0, 0, 0, 1],
by decide, by decide⟩
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:151
abbrev S₄ : GL (Fin 4) ℤ :=
⟨!![1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0; 2, 2, 2, -1],
!![1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 1, 0; 2, 2, 2, -1],
by decide, by decide⟩
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:157
Sources
- S. Haag, C. Kertzer, J. Rickards, and K. E. Stange,
The local-global conjecture for Apollonian circle packings is false, Annals of Math, 200 (2) 2024, start of Section 3.
DefinitionThe transformation group#✓fully proved
The transformation group is the subgroup of \(\mathrm{GL}_4(\mathbb{Z})\) generated by the Apollonian group together with all \(4 \times 4\) permutation matrices.
def TransformationGroup : Subgroup (GL (Fin 4) ℤ) :=
ApollonianGroup ⊔ permMatrixHom.toHomUnits.range
def ApollonianGroup : Subgroup (GL (Fin 4) ℤ) := Subgroup.closure {S₁, S₂, S₃, S₄}
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:163
Uses 1 · Used by 5
TheoremThe transformation group preserves integral primitive Descartes quadruples#✓fully proved
For every \(g\) in the transformation group, \(g\) maps the set of integral primitive Descartes quadruples into itself: if \(v \in \mathbb{Z}^4\) is an integral primitive Descartes quadruple, then so is \(g v\).
theorem transformationGroup_smul_integralPrimitiveDescartesQuadruple
(g : GL (Fin 4) ℤ) (hg : g ∈ TransformationGroup) :
g • integralPrimitiveDescartesQuadruple ⊆ integralPrimitiveDescartesQuadruple
def TransformationGroup : Subgroup (GL (Fin 4) ℤ) :=
ApollonianGroup ⊔ permMatrixHom.toHomUnits.range
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:170
def integralPrimitiveDescartesQuadruple : Set (Fin 4 → ℤ) :=
{ v | ∑ i, v i > 0 ∧ (∑ i, v i) ^ 2 = 2 * ∑ i, v i ^ 2 ∧ Finset.univ.gcd v = 1}
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:125
Uses 10 · Used by 1
DefinitionAction of the transformation group on integral primitive Descartes quadruples#✓fully proved
Each element \(g\) of the transformation group sends an integral primitive Descartes quadruple \(v\) to \(g v\), by matrix–vector multiplication: this is the restriction of the action of the transformation group on \(\mathbb{Z}^4\) to the set of integral primitive Descartes quadruples, which is closed under the action.
def TransformationGroupAction : SubMulAction TransformationGroup (Fin 4 → ℤ) where
carrier := integralPrimitiveDescartesQuadruple
smul_mem' X v hv :=
transformationGroup_smul_integralPrimitiveDescartesQuadruple X X.2 ⟨v, hv, rfl⟩
def TransformationGroup : Subgroup (GL (Fin 4) ℤ) :=
ApollonianGroup ⊔ permMatrixHom.toHomUnits.range
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:170
def integralPrimitiveDescartesQuadruple : Set (Fin 4 → ℤ) :=
{ v | ∑ i, v i > 0 ∧ (∑ i, v i) ^ 2 = 2 * ∑ i, v i ^ 2 ∧ Finset.univ.gcd v = 1}
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:125
theorem transformationGroup_smul_integralPrimitiveDescartesQuadruple
(g : GL (Fin 4) ℤ) (hg : g ∈ TransformationGroup) :
g • integralPrimitiveDescartesQuadruple ⊆ integralPrimitiveDescartesQuadruple
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:176
DefinitionPrimitive Apollonian circle packing#✓fully proved
A primitive Apollonian circle packing is an orbit of the transformation group acting on the set of integral primitive Descartes quadruples.
def PrimitiveApollonianCirclePacking :=
MulAction.orbitRel.Quotient TransformationGroup integralPrimitiveDescartesQuadruple
def TransformationGroup : Subgroup (GL (Fin 4) ℤ) :=
ApollonianGroup ⊔ permMatrixHom.toHomUnits.range
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:170
def integralPrimitiveDescartesQuadruple : Set (Fin 4 → ℤ) :=
{ v | ∑ i, v i > 0 ∧ (∑ i, v i) ^ 2 = 2 * ∑ i, v i ^ 2 ∧ Finset.univ.gcd v = 1}
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:125
Uses 3 · Used by 4
DefinitionCurvature set#✓fully proved
Let \(A\) be a primitive Apollonian circle packing, viewed as an orbit of integral primitive Descartes quadruples. The curvature set of \(A\) is the set of all integers that occur as an entry of some quadruple in \(A\).
def curvatureSet (A : PrimitiveApollonianCirclePacking) : Set ℤ :=
⋃ v ∈ A.orbit, Set.range v.1
def PrimitiveApollonianCirclePacking :=
MulAction.orbitRel.Quotient TransformationGroup integralPrimitiveDescartesQuadruple
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:221
TheoremA packing with no square curvatures#●ready to prove
Let \(\mathcal{A}\) be the primitive Apollonian circle packing generated by the integral primitive Descartes quadruple \((-3, 5, 8, 8)\). For every integer \(n\), \(n^2\) does not belong to the curvature set of \(\mathcal{A}\).
public theorem_wanted theorem_1_6 : ∀ n, n ^ 2 ∉ curvatureSet ⟦⟨![-3, 5, 8, 8], by decide⟩⟧
def curvatureSet (A : PrimitiveApollonianCirclePacking) : Set ℤ :=
⋃ v ∈ A.orbit, Set.range v.1
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:225
Sources
- S. Haag, C. Kertzer, J. Rickards, and K. E. Stange,
The local-global conjecture for Apollonian circle packings is false, Annals of Math, 200 (2) 2024. Statement taken from https://github.com/ImperialCollegeLondon/AnnalsChallenge. Problemannals_local_global_apollonian_circle_packingsof the lean-eval benchmark.
DefinitionMissing curvature set#✓fully proved
Let \(A\) be a primitive Apollonian circle packing. The missing curvature set of \(A\) is the set of positive integers \(n\) that do not lie in the curvature set of \(A\) but are congruent modulo \(24\) to some element of the curvature set of \(A\).
def missingCurvatureSet (A : PrimitiveApollonianCirclePacking) : Set ℤ :=
{n | n > 0 ∧ n ∉ curvatureSet A ∧ ∃ k ∈ curvatureSet A, k ≡ n [ZMOD 24]}
def PrimitiveApollonianCirclePacking :=
MulAction.orbitRel.Quotient TransformationGroup integralPrimitiveDescartesQuadruple
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:221
def curvatureSet (A : PrimitiveApollonianCirclePacking) : Set ℤ :=
⋃ v ∈ A.orbit, Set.range v.1
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:225
Sources
- S. Haag, C. Kertzer, J. Rickards, and K. E. Stange,
The local-global conjecture for Apollonian circle packings is false, Annals of Math, 200 (2) 2024, start of Section 1.2.
Uses 2 · Used by 1
DefinitionNumber of missing curvatures#✓fully proved
For a primitive Apollonian circle packing \(A\) and a real number \(N\), the number of missing curvatures of \(A\) up to \(N\) is the number of elements \(n\) of the missing curvature set of \(A\) with \(n \le N\), regarded as a real number.
noncomputable def missingCurvatures (A : PrimitiveApollonianCirclePacking) (N : ℝ) : ℝ :=
(missingCurvatureSet A ∩ {x | x ≤ N}).ncard
def PrimitiveApollonianCirclePacking :=
MulAction.orbitRel.Quotient TransformationGroup integralPrimitiveDescartesQuadruple
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:221
def missingCurvatureSet (A : PrimitiveApollonianCirclePacking) : Set ℤ :=
{n | n > 0 ∧ n ∉ curvatureSet A ∧ ∃ k ∈ curvatureSet A, k ≡ n [ZMOD 24]}
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:238
Uses 2 · Used by 1
TheoremInfinitely many packings with many missing curvatures#●ready to prove
For a primitive Apollonian circle packing \(\mathcal{A}\) and a real number \(N\), let \(M_{\mathcal{A}}(N)\) be the number of missing curvatures of \(\mathcal{A}\) up to \(N\). There are infinitely many primitive Apollonian circle packings \(\mathcal{A}\) such that \(\sqrt{N} = O(M_{\mathcal{A}}(N))\) as \(N\) tends to infinity. In other words, for these packings the number of missing curvatures up to \(N\) is \(\Omega(\sqrt{N})\).
public theorem_wanted theorem_1_3 : {A : PrimitiveApollonianCirclePacking |
Real.sqrt =O[Filter.atTop] missingCurvatures A}.Infinite
def PrimitiveApollonianCirclePacking :=
MulAction.orbitRel.Quotient TransformationGroup integralPrimitiveDescartesQuadruple
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:221
noncomputable def missingCurvatures (A : PrimitiveApollonianCirclePacking) (N : ℝ) : ℝ :=
(missingCurvatureSet A ∩ {x | x ≤ N}).ncard
WantedExt/NumberTheory/LocalGlobalApollonianCirclePackingsWanted.lean:242
Sources
- S. Haag, C. Kertzer, J. Rickards, and K. E. Stange,
The local-global conjecture for Apollonian circle packings is false, Annals of Math, 200 (2) 2024. Statement taken from https://github.com/ImperialCollegeLondon/AnnalsChallenge. Problemannals_local_global_apollonian_circle_packingsof the lean-eval benchmark.
Uses 2
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.