Pith. sign in

IndisputableMonolith.Gravity.Analysis.ReggeBlochOrbitTransport4D

IndisputableMonolith/Gravity/Analysis/ReggeBlochOrbitTransport4D.lean · 80 lines · 5 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import Mathlib
   2import IndisputableMonolith.Gravity.Analysis.ReggeHinge4DOrbitClassification
   3import IndisputableMonolith.Gravity.Analysis.ReggeBlochFold4D
   4
   5/-!
   6# Orbit covering permutations for 4D Regge Bloch transport
   7
   8For each hinge slot `(s,t)` of orbit type `ty`, the covering coordinate
   9permutation is the **first** `p : Fin 24` (in `permAxes` order) such that
  10
  11  `permDiffPair (coordPermOf p) (orbitRep ty) = (diffMaskA s t, diffMaskB s t)`.
  12
  13This is the transport used for **all** orbits.  The hand table
  14`transportPermOfDiff` / `slotTransportPerm` is `(1,1)`-only and must not be
  15used for non-`(1,1)` slots (MEASURED: factorized vs transported fold lesson).
  16
  17## Tier tags
  18
  19* THEOREM: covering existence on every slot; agreement with
  20  `slotTransportPerm` on `(1,1)`.
  21* No `sorry` / `admit` / new axioms / `native_decide` / `: True` shells.
  22-/
  23
  24namespace IndisputableMonolith
  25namespace Gravity
  26namespace Analysis
  27namespace ReggeBlochOrbitTransport4D
  28
  29open ReggeHinge4DOrbitClassification
  30open ReggeBlochFold4D
  31
  32noncomputable section
  33
  34/-- Boolean cover test for a candidate coordinate permutation. -/
  35def coversOrbitSlot (ty : HingeOrbitType) (s : Fin 24) (t : Fin 10)
  36    (p : Fin 24) : Bool :=
  37  decide
  38    (permDiffPair (coordPermOf p) (orbitRep ty).1 (orbitRep ty).2 =
  39      (diffMaskA s t, diffMaskB s t))
  40
  41/-- First covering `S₄` index for slot `(s,t)` relative to `orbitRep ty`.
  42Falls back to `0` only if no cover exists (never on realizable slots). -/
  43def orbitCoveringPerm (ty : HingeOrbitType) (s : Fin 24) (t : Fin 10) :
  44    Fin 24 :=
  45  match List.find? (coversOrbitSlot ty s t) (List.finRange 24) with
  46  | some p => p
  47  | none => 0
  48
  49set_option maxRecDepth 8000 in
  50set_option maxHeartbeats 400000 in
  51/-- Every lattice slot is covered by its own orbit representative. -/
  52theorem orbitCoveringPerm_covers (s : Fin 24) (t : Fin 10) :
  53    coversOrbitSlot (hingeOrbitType s t) s t
  54        (orbitCoveringPerm (hingeOrbitType s t) s t) = true := by
  55  fin_cases s <;> fin_cases t <;> decide
  56
  57/-- Packaging: when `ty` is the slot's orbit type, the covering equation holds. -/
  58theorem orbitCoveringPerm_spec (ty : HingeOrbitType) (s : Fin 24) (t : Fin 10)
  59    (h : hingeOrbitType s t = ty) :
  60    permDiffPair (coordPermOf (orbitCoveringPerm ty s t))
  61        (orbitRep ty).1 (orbitRep ty).2 =
  62      (diffMaskA s t, diffMaskB s t) := by
  63  have hc := orbitCoveringPerm_covers s t
  64  subst h
  65  simpa [coversOrbitSlot, decide_eq_true_iff] using hc
  66
  67set_option maxRecDepth 8000 in
  68set_option maxHeartbeats 400000 in
  69/-- On `(1,1)` slots the covering perm agrees with the legacy table. -/
  70theorem orbitCoveringPerm_t11_eq_slotTransportPerm (s : Fin 24) (t : Fin 10) :
  71    orbitCoveringPerm .t11 s t = slotTransportPerm s t := by
  72  fin_cases s <;> fin_cases t <;> decide
  73
  74end
  75
  76end ReggeBlochOrbitTransport4D
  77end Analysis
  78end Gravity
  79end IndisputableMonolith
  80

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