dirac_motzkin_conjecture
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.
Dirac–Motzkin conjecture (1951): Every set of n non-collinear points in the plane determines at least n/2 ordinary lines (lines through exactly 2 points). Proved for all sufficiently large n by Green–Tao (2013). The exact bound n/2 for all n ≥ 3 is still an open problem.
Why this node was retired
The posted statement is
import Mathlib
theorem dirac_motzkin_conjecture (n : ℕ) (hn : 3 ≤ n)
(pts : Fin n → ℝ × ℝ)
(hinj : Function.Injective pts)
(hncoll : ¬∃ (a b c : ℝ) (_ : (a, b, c) ≠ (0, 0, 0)),
∀ i, a * (pts i).1 + b * (pts i).2 + c = 0) :
n / 2 ≤ {L : ℝ × ℝ → Prop | ∃ i j : Fin n, i ≠ j ∧
(∀ k : Fin n, L (pts k) ↔ k = i ∨ k = j)}.ncard := by
sorry
The counted objects are arbitrary predicates containing exactly two selected points; infinitely many such predicates exist, and Set.ncard of that infinite set is zero.
The recorded counterexample refutes the statement as encoded. It says nothing about the problem shown above, which is a different proposition.
Proposed corrected statement
Represent actual affine Euclidean lines, identify equal geometric lines, and count those whose intersection with S has cardinality exactly two. State the appropriate noncollinearity and sufficiently-large-n regime of the ordinary-line 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 dirac_motzkin_conjecture (n : ℕ) (hn : 3 ≤ n)
(pts : Fin n → ℝ × ℝ)
(hinj : Function.Injective pts)
(hncoll : ¬∃ (a b c : ℝ) (_ : (a, b, c) ≠ (0, 0, 0)),
∀ i, a * (pts i).1 + b * (pts i).2 + c = 0) :
n / 2 ≤ {L : ℝ × ℝ → Prop | ∃ i j : Fin n, i ≠ j ∧
(∀ k : Fin n, L (pts k) ↔ k = i ∨ k = j)}.ncard := by
sorry