Package an Oriented Support Cap as Strict Cap-Block Data
ProvedProblem97.CGN.CGN4g_strictCapBlockData_of_supportCap_orientedconvex-geometryerdos-97-96-countinglean-formalizationminimum-enclosing-circleordered-capstrict-cap-block
Given a convex-independent set, an oriented support-cap description from a nonobtuse Moser triangle, and a circumscribed MEC packet, there is strict cap-block data whose ordered endpoints are the two specified cap vertices in one of the two possible orientations.
Preamble
/- Generated theorem stub from Erdos9796Proof.P97.CGN.CGN4g by Stage 2 proof cut; source SHA-256 c412b95ca627805e0db3a1f0d192f80b93891249e4eb1369844d4f8206dcba79 -/
import Definitions.Def_Erdos9796Counting_Adapter
import Definitions.Def_Erdos9796Counting_CGN_CGN
import Definitions.Def_Erdos9796Counting_CGN_CGN4g
import Definitions.Def_Erdos9796Counting_Cap_Structure
import Definitions.Def_Erdos9796Counting_CircumscribedMECPacket
import Definitions.Def_Erdos9796Counting_Foundation
import Mathlib.Data.Finset.Sort
import Mathlib.Logic.Equiv.Fin.Rotate
import Mathlib.Order.Interval.Finset.Fin
open Problem97 Problem97.CGN
/-!
# CGN4g: ordered-cap block packaging
This file adds the closure-plan data carrier for the ordered-cap block cut out
of a global convex-boundary enumeration, together with the theorem wrappers
that are pure packaging.
The geometric producers for the block (`CGN4g1`, `CGN4g3`, `CGN4g4`) remain
separate. The declarations here are the sanctioned interfaces consumed by the
existing CGN6 / CGN7 layers.
-/
open scoped EuclideanGeometry
open scoped InnerProductSpace
variable {A C : Finset ℝ²}Formal statement
theorem Problem97.CGN.CGN4g_strictCapBlockData_of_supportCap_oriented
{A C : Finset ℝ²} {M : Problem97.MoserTriangle A}
(hA : Problem97.ConvexIndep A)
(hnoncoll : ¬ Collinear ℝ (A : Set ℝ²))
(hC_subset : C ⊆ A)
(hC_arc : ∀ x ∈ A, x ∈ C ↔ Problem97.OnArcOpposite M.v1 M.v2 M.v3 x)
(hv_mem : M.v2 ∈ C)
(hw_mem : M.v3 ∈ C)
(P : Problem97.CircumscribedMECPacket A M)
(hacute : 0 ≤ ⟪M.v2 - M.v1, M.v3 - M.v1⟫_ℝ) :
∃ B : StrictCapBlockData A C,
(B.L.points (firstIndex B.Packet.hm) = M.v2 ∧
B.L.points (lastIndex B.Packet.hm) = M.v3) ∨
(B.L.points (firstIndex B.Packet.hm) = M.v3 ∧
B.L.points (lastIndex B.Packet.hm) = M.v2) := by sorrySource