Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Finite-nine escaped-class forms

Definition
Erdos9796FiniteNine_Forms

by mysticflounder · Sep 9, 2026 · Mathlib 0df444a (Lean v4.33.1)

discrete-geometryerdos-97finite-ninesupport

Witness classes, their nine geometric forms, and the public form-exclusion predicates.

Definition code
/-
Copyright (c) 2026 Adam McKenna. All rights reserved.
Released under GPL-3.0-or-later as described in the file LICENSE.
Authors: Adam McKenna
-/

import Definitions.Def_Erdos9796FiniteNine_Shell

/-! Definition-only N4 witness forms and public exclusion predicates. -/

set_option backward.isDefEq.respectTransparency false
open scoped EuclideanGeometry
open Finset

namespace Batch3N9
namespace Problem97
namespace FiniteEndpointShell

@[reducible] noncomputable def witnessClassAt_v1 {A : Finset ℝ²}
    (S : FiniteEndpointShell A) (r : ℝ) : Finset ℝ² :=
  A.filter (fun x => dist S.triangle.v1 x = r)
@[reducible] noncomputable def witnessClassAt_v2 {A : Finset ℝ²}
    (S : FiniteEndpointShell A) (r : ℝ) : Finset ℝ² :=
  A.filter (fun x => dist S.triangle.v2 x = r)
@[reducible] noncomputable def witnessClassAt_v3 {A : Finset ℝ²}
    (S : FiniteEndpointShell A) (r : ℝ) : Finset ℝ² :=
  A.filter (fun x => dist S.triangle.v3 x = r)

def IsFormA_v1 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ x y : ℝ²,
    x ∈ S.I2 ∧
    y ∈ S.I3 ∧
    (S.witnessClassAt_v1 r ∩ S.CP.C2 = ({x} : Finset ℝ²)) ∧
    (S.witnessClassAt_v1 r ∩ S.CP.C3 = ({y} : Finset ℝ²))
def IsFormB_v1 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ x : ℝ²,
    x ∈ S.I2 ∧
    (S.witnessClassAt_v1 r ∩ S.CP.C2 = ({x} : Finset ℝ²)) ∧
    (S.witnessClassAt_v1 r ∩ S.CP.C3 = ({S.triangle.v2} : Finset ℝ²))
def IsFormC_v1 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ y : ℝ²,
    y ∈ S.I3 ∧
    (S.witnessClassAt_v1 r ∩ S.CP.C2 = ({S.triangle.v3} : Finset ℝ²)) ∧
    (S.witnessClassAt_v1 r ∩ S.CP.C3 = ({y} : Finset ℝ²))
def IsFormA_v2 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ x y : ℝ²,
    x ∈ S.I3 ∧
    y ∈ S.I1 ∧
    (S.witnessClassAt_v2 r ∩ S.CP.C3 = ({x} : Finset ℝ²)) ∧
    (S.witnessClassAt_v2 r ∩ S.CP.C1 = ({y} : Finset ℝ²))
def IsFormB_v2 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ x : ℝ²,
    x ∈ S.I3 ∧
    (S.witnessClassAt_v2 r ∩ S.CP.C3 = ({x} : Finset ℝ²)) ∧
    (S.witnessClassAt_v2 r ∩ S.CP.C1 = ({S.triangle.v3} : Finset ℝ²))
def IsFormC_v2 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ y : ℝ²,
    y ∈ S.I1 ∧
    (S.witnessClassAt_v2 r ∩ S.CP.C3 = ({S.triangle.v1} : Finset ℝ²)) ∧
    (S.witnessClassAt_v2 r ∩ S.CP.C1 = ({y} : Finset ℝ²))
def IsFormA_v3 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ x y : ℝ²,
    x ∈ S.I1 ∧
    y ∈ S.I2 ∧
    (S.witnessClassAt_v3 r ∩ S.CP.C1 = ({x} : Finset ℝ²)) ∧
    (S.witnessClassAt_v3 r ∩ S.CP.C2 = ({y} : Finset ℝ²))
def IsFormB_v3 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ x : ℝ²,
    x ∈ S.I1 ∧
    (S.witnessClassAt_v3 r ∩ S.CP.C1 = ({x} : Finset ℝ²)) ∧
    (S.witnessClassAt_v3 r ∩ S.CP.C2 = ({S.triangle.v1} : Finset ℝ²))
def IsFormC_v3 {A : Finset ℝ²} (S : FiniteEndpointShell A) (r : ℝ) : Prop :=
  ∃ y : ℝ²,
    y ∈ S.I2 ∧
    (S.witnessClassAt_v3 r ∩ S.CP.C1 = ({S.triangle.v2} : Finset ℝ²)) ∧
    (S.witnessClassAt_v3 r ∩ S.CP.C2 = ({y} : Finset ℝ²))

abbrev N4dExcludesFormA_v1 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v1 r).card)
      (_hesc : ¬ S.witnessClassAt_v1 r ⊆ S.CP.C1),
    S.IsFormA_v1 r → False

abbrev N4dExcludesFormB_v1 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v1 r).card)
      (_hesc : ¬ S.witnessClassAt_v1 r ⊆ S.CP.C1),
    S.IsFormB_v1 r → False

abbrev N4dExcludesFormC_v1 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v1 r).card)
      (_hesc : ¬ S.witnessClassAt_v1 r ⊆ S.CP.C1),
    S.IsFormC_v1 r → False

abbrev N4dExcludesFormA_v2 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v2 r).card)
      (_hesc : ¬ S.witnessClassAt_v2 r ⊆ S.CP.C2),
    S.IsFormA_v2 r → False

abbrev N4dExcludesFormB_v2 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v2 r).card)
      (_hesc : ¬ S.witnessClassAt_v2 r ⊆ S.CP.C2),
    S.IsFormB_v2 r → False

abbrev N4dExcludesFormC_v2 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v2 r).card)
      (_hesc : ¬ S.witnessClassAt_v2 r ⊆ S.CP.C2),
    S.IsFormC_v2 r → False

abbrev N4dExcludesFormA_v3 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v3 r).card)
      (_hesc : ¬ S.witnessClassAt_v3 r ⊆ S.CP.C3),
    S.IsFormA_v3 r → False

abbrev N4dExcludesFormB_v3 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v3 r).card)
      (_hesc : ¬ S.witnessClassAt_v3 r ⊆ S.CP.C3),
    S.IsFormB_v3 r → False

abbrev N4dExcludesFormC_v3 {A : Finset ℝ²} (S : FiniteEndpointShell A) : Prop :=
  ∀ {r : ℝ} (_hr : 0 < r) (_hcard : 4 ≤ (S.witnessClassAt_v3 r).card)
      (_hesc : ¬ S.witnessClassAt_v3 r ⊆ S.CP.C3),
    S.IsFormC_v3 r → False

end FiniteEndpointShell
end Problem97
end Batch3N9
Source
https://github.com/mysticflounder/erdos-97-96-formalization/blob/a46894f6078319d3001d06310531df50af0f6bbd/lean/Erdos9796Proof/P97/N9Endpoint/N4e.lean

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.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactJoin Slack© 2026 Prove2Me