Pith. sign in

IndisputableMonolith.Gravity.SevenGaps.SimplicialClass

IndisputableMonolith/Gravity/SevenGaps/SimplicialClass.lean · 222 lines · 17 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Gravity.SevenGaps.PathSumMeasure
   3
   4/-!
   5# Full Theory Phase 0b: the simplicial subclass of the path-sum configuration class
   6
   7## Status: THEOREM (0 sorry, 0 new axiom; `decide` is used only for finite
   8combinatorial checks on the explicit one-tetrahedron witness, no
   9`native_decide`).
  10
  11`SevenGaps.PathSumMeasure.BoundedComplex B` is the garbage-inclusive
  12superclass of bounded incidence configurations: it contains every bounded
  13combinatorial triangulation but also non-simplicial configurations
  14(degenerate edges, repeated vertices in a tetrahedron, multi-edges, tets
  15whose 1-skeleton is missing from the edge list).  This module adds the
  16`IsSimplicial` predicate carving out the true simplicial subclass, proves
  17the predicate decidable, proves the subclass is a `Fintype` with strictly
  18positive cardinality (`simplicialComplex_card_pos`), and exhibits a
  19NON-EMPTY simplicial witness (the single tetrahedron with its full
  201-skeleton, `oneTetComplex`) so positivity does not rest on the vacuous
  21empty complex alone.
  22
  23The simplicial conditions:
  241. no degenerate edges (distinct endpoints);
  252. no multi-edges (edges are injective as unordered vertex pairs);
  263. each tetrahedron has four distinct vertices;
  274. skeleton closure: every vertex pair of every tetrahedron is realized by
  28   an edge of the complex.
  29
  30These four conditions are the combinatorial content of "abstract simplicial
  313-complex presented by its tetrahedra and 1-skeleton" for the incidence
  32shape carried by `BoundedComplex` (vertex/edge/tet lists).  Face (triangle)
  33data is not carried by `BoundedComplex`, so triangle closure is not
  34expressible here; this is honest scope, recorded in
  35`simplicialClassStatus`.
  36-/
  37
  38namespace IndisputableMonolith
  39namespace Gravity
  40namespace SevenGaps
  41namespace PathSumMeasure
  42
  43/-! ## §1. The simplicial predicate -/
  44
  45/-- Unordered-pair equality of ordered vertex pairs. -/
  46def sameUnorderedPair {n : ℕ} (p q : Fin n × Fin n) : Prop :=
  47  p = q ∨ p = q.swap
  48
  49instance {n : ℕ} (p q : Fin n × Fin n) : Decidable (sameUnorderedPair p q) := by
  50  unfold sameUnorderedPair
  51  infer_instance
  52
  53/-- **The simplicial predicate** on a bounded incidence configuration:
  54no degenerate edges, no multi-edges, injective tetrahedron corners, and
  55skeleton closure (every corner pair of every tet is an edge of the
  56complex). -/
  57def IsSimplicial {B : ℕ} (K : BoundedComplex B) : Prop :=
  58  (∀ e : Fin K.nE, (K.edgeVerts e).1 ≠ (K.edgeVerts e).2) ∧
  59  (∀ e e' : Fin K.nE,
  60    sameUnorderedPair (K.edgeVerts e) (K.edgeVerts e') → e = e') ∧
  61  (∀ t : Fin K.nT, Function.Injective (K.tetVerts t)) ∧
  62  (∀ (t : Fin K.nT) (i j : Fin 4), i ≠ j →
  63    ∃ e : Fin K.nE,
  64      sameUnorderedPair (K.edgeVerts e) (K.tetVerts t i, K.tetVerts t j))
  65
  66/-- The simplicial predicate is decidable (all quantifiers range over
  67finite index types). -/
  68instance {B : ℕ} : DecidablePred (IsSimplicial (B := B)) := fun K => by
  69  unfold IsSimplicial
  70  infer_instance
  71
  72/-! ## §2. Finiteness of the simplicial subclass -/
  73
  74/-- The true simplicial subclass of the scoped path-sum configuration
  75class. -/
  76abbrev SimplicialComplex (B : ℕ) : Type :=
  77  {K : BoundedComplex B // IsSimplicial K}
  78
  79/-- **THEOREM (finiteness of the simplicial subclass).**  The simplicial
  80subclass inherits finiteness from the proved finiteness of the superclass
  81(`instFintypeBoundedComplex`) and decidability of the predicate. -/
  82instance instFintypeSimplicialComplex (B : ℕ) : Fintype (SimplicialComplex B) :=
  83  Subtype.fintype _
  84
  85/-- The empty complex is (vacuously) simplicial. -/
  86theorem emptyComplex_isSimplicial (B : ℕ) : IsSimplicial (emptyComplex B) := by
  87  refine ⟨?_, ?_, ?_, ?_⟩
  88  · intro e; exact e.elim0
  89  · intro e; exact e.elim0
  90  · intro t; exact t.elim0
  91  · intro t; exact t.elim0
  92
  93instance (B : ℕ) : Nonempty (SimplicialComplex B) :=
  94  ⟨⟨emptyComplex B, emptyComplex_isSimplicial B⟩⟩
  95
  96/-- **THEOREM (positive count).**  The simplicial subclass is nonempty for
  97every size cap, so the restricted path sum has a nontrivial configuration
  98space. -/
  99theorem simplicialComplex_card_pos (B : ℕ) :
 100    0 < Fintype.card (SimplicialComplex B) :=
 101  Fintype.card_pos
 102
 103/-! ## §3. The non-vacuous witness: a single tetrahedron with full skeleton
 104
 105Positivity via the empty complex alone would be a vacuity risk.  We
 106exhibit the smallest genuinely 3-dimensional simplicial complex: four
 107vertices, six edges (the complete 1-skeleton), one tetrahedron. -/
 108
 109/-- Cap relaxation: a bounded complex at cap `B` is one at any cap
 110`B' ≥ B`, with identical incidence data. -/
 111def relax {B B' : ℕ} (h : B ≤ B') (K : BoundedComplex B) :
 112    BoundedComplex B' where
 113  nV := K.nV
 114  nE := K.nE
 115  nT := K.nT
 116  hV := le_trans K.hV h
 117  hE := le_trans K.hE h
 118  hT := le_trans K.hT h
 119  edgeVerts := K.edgeVerts
 120  tetVerts := K.tetVerts
 121
 122/-- Cap relaxation preserves the simplicial predicate (the predicate reads
 123only the incidence data, which `relax` preserves definitionally). -/
 124theorem relax_isSimplicial {B B' : ℕ} (h : B ≤ B') {K : BoundedComplex B}
 125    (hK : IsSimplicial K) : IsSimplicial (relax h K) :=
 126  hK
 127
 128/-- The six edges of the tetrahedron on four vertices, as ordered pairs
 129(i, j) with i < j. -/
 130def tetEdges : Fin 6 → Fin 4 × Fin 4 :=
 131  ![(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)]
 132
 133/-- The single-tetrahedron complex at the minimal cap: 4 vertices, 6 edges
 134(the complete 1-skeleton), 1 tetrahedron. -/
 135def oneTetComplex : BoundedComplex 6 where
 136  nV := 4
 137  nE := 6
 138  nT := 1
 139  hV := by omega
 140  hE := le_refl 6
 141  hT := by omega
 142  edgeVerts := tetEdges
 143  tetVerts := fun _ i => i
 144
 145/-- **THEOREM (non-vacuous simplicial witness).**  The single-tetrahedron
 146complex is simplicial: distinct edge endpoints, no multi-edges, injective
 147corners, and every corner pair realized by one of the six skeleton edges.
 148Kernel-checked by `decide` on the finite index types (`Fin 4`, `Fin 6`,
 149`Fin 1`); no `native_decide`. -/
 150theorem oneTetComplex_isSimplicial : IsSimplicial oneTetComplex := by
 151  decide
 152
 153/-- **THEOREM.**  Every cap `B ≥ 6` admits a genuinely 3-dimensional
 154simplicial configuration (one tetrahedron, full skeleton): the subclass
 155positivity is not carried by the empty complex alone. -/
 156theorem exists_simplicial_with_tet (B : ℕ) (hB : 6 ≤ B) :
 157    ∃ K : SimplicialComplex B, 0 < K.1.nT :=
 158  ⟨⟨relax hB oneTetComplex, relax_isSimplicial hB oneTetComplex_isSimplicial⟩,
 159    Nat.one_pos⟩
 160
 161/-! ## §4. The restricted path sum -/
 162
 163/-- The path sum restricted to the simplicial subclass, with the same
 164`1/|Aut|` measure and weight as `Z`. -/
 165noncomputable def Zsimp (B : ℕ) (w : BoundedComplex B → ℂ) : ℂ :=
 166  ∑ K : SimplicialComplex B, (mu K.1 : ℂ) * w K.1
 167
 168/-- **THEOREM (UV-finiteness of the simplicial path sum).**  For unit-modulus
 169weights the restricted path sum is bounded by the simplicial configuration
 170count. -/
 171theorem Zsimp_norm_le_card (B : ℕ) (w : BoundedComplex B → ℂ)
 172    (hw : ∀ K, ‖w K‖ ≤ 1) :
 173    ‖Zsimp B w‖ ≤ (Fintype.card (SimplicialComplex B) : ℝ) := by
 174  unfold Zsimp
 175  calc ‖∑ K : SimplicialComplex B, (mu K.1 : ℂ) * w K.1‖
 176      ≤ ∑ K : SimplicialComplex B, ‖(mu K.1 : ℂ) * w K.1‖ := norm_sum_le _ _
 177    _ ≤ ∑ _K : SimplicialComplex B, (1 : ℝ) := by
 178        refine Finset.sum_le_sum fun K _ => ?_
 179        rw [norm_mul, Complex.norm_real, Real.norm_eq_abs,
 180          abs_of_pos (mu_pos K.1)]
 181        calc mu K.1 * ‖w K.1‖
 182            ≤ 1 * 1 := mul_le_mul (mu_le_one K.1) (hw K.1)
 183              (norm_nonneg _) zero_le_one
 184          _ = 1 := one_mul 1
 185    _ = (Fintype.card (SimplicialComplex B) : ℝ) := by
 186        rw [Finset.sum_const, Finset.card_univ, nsmul_eq_mul, mul_one]
 187
 188/-! ## §5. Status ledger -/
 189
 190/-- Status of the simplicial-subclass repair (Phase 0b).  Honest scope:
 191`BoundedComplex` carries no triangle (2-face) list, so triangle closure is
 192not expressible in this incidence shape; the four proved conditions are the
 193full simplicial content available at this shape. -/
 194structure SimplicialClassStatus where
 195  simplicial_predicate_decidable : Bool
 196  subclass_fintype_proved : Bool
 197  subclass_card_pos_proved : Bool
 198  nonvacuous_witness_constructed : Bool
 199  triangle_closure_expressible : Bool
 200
 201/-- The Phase-0b status record. -/
 202def simplicialClassStatus : SimplicialClassStatus where
 203  simplicial_predicate_decidable := true
 204  subclass_fintype_proved := true
 205  subclass_card_pos_proved := true
 206  nonvacuous_witness_constructed := true
 207  triangle_closure_expressible := false
 208
 209/-- Status flags (rfl-forced). -/
 210theorem simplicialClassStatus_flags :
 211    simplicialClassStatus.simplicial_predicate_decidable = true ∧
 212    simplicialClassStatus.subclass_fintype_proved = true ∧
 213    simplicialClassStatus.subclass_card_pos_proved = true ∧
 214    simplicialClassStatus.nonvacuous_witness_constructed = true ∧
 215    simplicialClassStatus.triangle_closure_expressible = false :=
 216  ⟨rfl, rfl, rfl, rfl, rfl⟩
 217
 218end PathSumMeasure
 219end SevenGaps
 220end Gravity
 221end IndisputableMonolith
 222

source mirrored from github.com/jonwashburn/shape-of-logic