pith. machine review for the scientific record. sign in

IndisputableMonolith.RRF.Theorems.OctaveTransfer

IndisputableMonolith/RRF/Theorems/OctaveTransfer.lean · 100 lines · 8 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import IndisputableMonolith.RRF.Core.Octave
   2
   3/-!
   4# RRF Theorems: Octave Transfer
   5
   6Theorems about how properties transfer between octaves.
   7
   8Key insight: If two octaves are "equivalent" (have isometric strain functions),
   9then their equilibrium structures are the same. This is how "the same pattern"
  10manifests at different scales.
  11
  12## Main Results
  13
  14- `equilibria_transfer`: Equivalent octaves have corresponding equilibria
  15- `morphism_preserves_order`: Octave morphisms preserve strain ordering
  16-/
  17
  18
  19namespace IndisputableMonolith
  20namespace RRF.Theorems
  21
  22open RRF.Core
  23
  24/-! ## Morphism Properties -/
  25
  26variable {O₁ O₂ : Octave}
  27
  28/-- Octave morphisms are monotone with respect to strain ordering. -/
  29theorem morphism_preserves_order (f : OctaveMorphism O₁ O₂)
  30    {x y : O₁.State} (hxy : O₁.strain.weaklyBetter x y) :
  31    O₂.strain.weaklyBetter (f.map x) (f.map y) :=
  32  f.preserves_order x y hxy
  33
  34/-- Composition of morphisms preserves ordering. -/
  35theorem comp_preserves_order {O₃ : Octave}
  36    (g : OctaveMorphism O₂ O₃) (f : OctaveMorphism O₁ O₂)
  37    {x y : O₁.State} (hxy : O₁.strain.weaklyBetter x y) :
  38    O₃.strain.weaklyBetter ((OctaveMorphism.comp g f).map x)
  39                            ((OctaveMorphism.comp g f).map y) :=
  40  (OctaveMorphism.comp g f).preserves_order x y hxy
  41
  42/-! ## Equivalence Properties -/
  43
  44/-- Octave equivalences preserve equilibria exactly. -/
  45theorem equiv_equilibria_iff (e : OctaveEquiv O₁ O₂)
  46    (x : O₁.State) :
  47    O₁.strain.isBalanced x ↔ O₂.strain.isBalanced (e.toFun.map x) := by
  48  simp only [StrainFunctional.isBalanced]
  49  rw [e.strain_eq x]
  50
  51/-- Octave equivalences preserve well-posedness. -/
  52theorem equiv_wellPosed (e : OctaveEquiv O₁ O₂) :
  53    O₁.wellPosed ↔ O₂.wellPosed := by
  54  constructor
  55  · intro ⟨x, hx⟩
  56    use e.toFun.map x
  57    rw [← equiv_equilibria_iff e x]
  58    exact hx
  59  · intro ⟨y, hy⟩
  60    use e.invFun.map y
  61    -- Use the inverse strain preservation directly
  62    simp only [StrainFunctional.isBalanced] at *
  63    rw [e.strain_eq_inv y]
  64    exact hy
  65
  66/-! ## Transfer Lemmas for Channels -/
  67
  68/-- If two octaves have equivalent channels, their quality orderings agree. -/
  69theorem channel_quality_transfer
  70    {i₁ : O₁.channels.Index} {i₂ : O₂.channels.Index}
  71    (f : OctaveMorphism O₁ O₂)
  72    (hchan : ∀ x : O₁.State,
  73      (O₂.channels.channel i₂).stateQuality (f.map x) =
  74      (O₁.channels.channel i₁).stateQuality x) :
  75    ∀ x y : O₁.State,
  76      (O₁.channels.channel i₁).stateQuality x ≤
  77      (O₁.channels.channel i₁).stateQuality y →
  78      (O₂.channels.channel i₂).stateQuality (f.map x) ≤
  79      (O₂.channels.channel i₂).stateQuality (f.map y) := by
  80  intro x y hxy
  81  rw [hchan x, hchan y]
  82  exact hxy
  83
  84/-! ## The "Same Pattern, Different Scale" Principle -/
  85
  86/-- Two octaves manifest the same pattern if they're equivalent. -/
  87def samePattern (O₁ O₂ : Octave) : Prop :=
  88  Nonempty (OctaveEquiv O₁ O₂)
  89
  90theorem samePattern_refl (O : Octave) : samePattern O O :=
  91  ⟨OctaveEquiv.refl O⟩
  92
  93theorem samePattern_symm {O₁ O₂ : Octave} (h : samePattern O₁ O₂) :
  94    samePattern O₂ O₁ :=
  95  let ⟨e⟩ := h
  96  ⟨OctaveEquiv.symm e⟩
  97
  98end RRF.Theorems
  99end IndisputableMonolith
 100

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