Skip to content

Chapter 11, Theorem 1: formalize the Sylvester–Gallai theorem #139

Description

@Solarys431

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions