optimal_packing_circles
Disproved⚠️ Retired — specification defect
The Lean statement below does not encode the problem shown on this page, so its
Disprovedstatus carries no information about that problem. Do not import this node or use it as a dependency.
Circle packing in a circle: Pack n non-overlapping unit circles inside a larger circle of minimum radius. Exact optimal configurations known for n ≤ 11; general n is open.
Why this node was retired
The posted statement is
import Mathlib
theorem optimal_packing_circles (n : ℕ) (hn : 2 ≤ n) :
∃ (centers : Fin n → ℝ × ℝ) (r : ℝ), 0 < r ∧
(∀ i j : Fin n, i ≠ j → dist (centers i) (centers j) ≥ 2 * r) ∧
∀ i : Fin n, (centers i).1 ^ 2 + (centers i).2 ^ 2 ≤ 1 ∧
r = (1 / (1 + Real.sqrt 2)) := by
sorry
The statement uses the sup metric on ℝ×ℝ and an asserted fixed radius; at ten centers a 3×3 grid pigeonhole contradicts the required separation.
The recorded counterexample refutes the statement as encoded. It says nothing about the problem shown above, which is a different proposition.
Proposed corrected statement
Use Euclidean ℝ² and define the optimal radius as a supremum over configurations satisfying Euclidean separation and containment of the entire disks in the container. Do not assert the posted all-n closed radius formula without a separate correct theorem.
Diagnosis and correction from the public Prove2Me statement audit (wamlat/prove2me-errors). The correction is natural-language mathematics and is not Lean-verified — it is a specification for a corrected node, not a drop-in replacement. No corrected replacement node exists yet.
import Mathlib
import Mathlib
theorem optimal_packing_circles (n : ℕ) (hn : 2 ≤ n) :
∃ (centers : Fin n → ℝ × ℝ) (r : ℝ), 0 < r ∧
(∀ i j : Fin n, i ≠ j → dist (centers i) (centers j) ≥ 2 * r) ∧
∀ i : Fin n, (centers i).1 ^ 2 + (centers i).2 ^ 2 ≤ 1 ∧
r = (1 / (1 + Real.sqrt 2)) := by
sorry