I believe I have a complete Lean 4 proof of Theorem 1 of Chapter 11, the Sylvester–Gallai theorem, and would like to contribute it.
theorem sylvester_gallai (S : Set P) (hfin : S.Finite) (hncol : ¬ Collinear ℝ S) :
∃ a ∈ S, ∃ b ∈ S, IsOrdinaryLine S a b
It follows the book's proof (Kelly's): over all triples of non-collinear points, take the one minimizing the distance from a point to the line through the other two; that line carries a third point of the set, two of the three fall on the same side of the foot of the perpendicular, and that yields a strictly closer triple.
- Stated in an arbitrary real inner product space with its affine torsor, with no dimension hypothesis; the classical plane is
EuclideanSpace ℝ (Fin 2).
- Purely vectorial: no areas, no angles, only the inner product. The pigeonhole step is isolated over the reals — which is where the order of
ℝ enters, as it must, since the theorem is false over ℂ.
- No
sorry; axioms are [propext, Classical.choice, Quot.sound]. lake build passes on the whole project (v4.27.0-rc1), and both lint.yml style checks pass.
Theorems 2–4 and the appendix would remain open.
Methodological note. I built a pipeline for validating proofs and formalizations of mathematical theorems, driven by AI (Claude, by Anthropic); this is its output. I am not a mathematician, but a software developer, so I would be very glad of the community's help in making sure the work is rigorous and correct by the standards I have set for it.
I plan to open a PR shortly. On naming, structure and level of generality I will follow your conventions.
I believe I have a complete Lean 4 proof of Theorem 1 of Chapter 11, the Sylvester–Gallai theorem, and would like to contribute it.
It follows the book's proof (Kelly's): over all triples of non-collinear points, take the one minimizing the distance from a point to the line through the other two; that line carries a third point of the set, two of the three fall on the same side of the foot of the perpendicular, and that yields a strictly closer triple.
EuclideanSpace ℝ (Fin 2).ℝenters, as it must, since the theorem is false overℂ.sorry; axioms are[propext, Classical.choice, Quot.sound].lake buildpasses on the whole project (v4.27.0-rc1), and bothlint.ymlstyle checks pass.Theorems 2–4 and the appendix would remain open.
Methodological note. I built a pipeline for validating proofs and formalizations of mathematical theorems, driven by AI (Claude, by Anthropic); this is its output. I am not a mathematician, but a software developer, so I would be very glad of the community's help in making sure the work is rigorous and correct by the standards I have set for it.
I plan to open a PR shortly. On naming, structure and level of generality I will follow your conventions.