Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Finite anchor-list polygonal screening

Proved
FiniteAnchorListPolygonalScreening

by xuanji · Sep 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

geometry

For a positive radius and a finite anchor list of length at least three, beginning at a and ending at target, one can perturb the list to a same-length vertex list beginning and ending at those points, staying within the prescribed radius at every index and satisfying the point-avoidance, non-overlap, and interior transversality conditions for every consecutive segment relative to a finite polygonal set K.

Preamble
import Definitions.Def_FinitePolygonalSet
open Classical
noncomputable section
Formal statement
lemma FiniteAnchorListPolygonalScreening
    (K : FinitePolygonalSet) (a target : EuclideanSpace ℝ (Fin 2))
    (anchors : List (EuclideanSpace ℝ (Fin 2))) (ρ : ℝ) :
    0 < ρ →
      a ∉ K.carrier →
        target ∉ K.carrier →
          (∀ _h : 0 < anchors.length, dist a anchors[0] < ρ) →
            anchors.getLast? = some target →
              3 ≤ anchors.length →
                ∃ xs : List (EuclideanSpace ℝ (Fin 2)),
                  xs.length = anchors.length ∧
                    xs.head? = some a ∧
                      xs.getLast? = some target ∧
                        (∀ (i : ℕ) (hxi : i < xs.length) (hai : i < anchors.length),
                          dist xs[i] anchors[i] < ρ) ∧
                          (∀ v : EuclideanSpace ℝ (Fin 2), v ∈ xs → v ∉ K.carrier) ∧
                            (∀ (i : ℕ) (hi : i + 1 < xs.length)
                                (p : EuclideanSpace ℝ (Fin 2)),
                                p ∈ K.points → p ∉ segment ℝ xs[i] xs[i + 1]) ∧
                              (∀ (i : ℕ) (hi : i + 1 < xs.length)
                                  (s : EuclideanSpace ℝ (Fin 2) × EuclideanSpace ℝ (Fin 2)),
                                  s ∈ K.segments →
                                    ¬ ∃ p q : EuclideanSpace ℝ (Fin 2), p ≠ q ∧
                                      segment ℝ p q ⊆
                                        segment ℝ xs[i] xs[i + 1] ∩ segment ℝ s.1 s.2) ∧
                                (∀ (i : ℕ) (hi : i + 1 < xs.length)
                                    (s : EuclideanSpace ℝ (Fin 2) × EuclideanSpace ℝ (Fin 2))
                                    (_hs : s ∈ K.segments)
                                    (p : EuclideanSpace ℝ (Fin 2)),
                                    p ∈ openSegment ℝ xs[i] xs[i + 1] →
                                      p ∈ openSegment ℝ s.1 s.2 →
                                        ¬ ∃ c : ℝ,
                                          s.2 - s.1 = c • (xs[i + 1] - xs[i])) := by sorry
Source
https://github.com/wpegden/crossing-consequences/blob/8769d142033fce042f502bf2857afb6b1375b5c3/Tablet/FiniteAnchorListPolygonalScreening.lean#L1-L195

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me