pith. machine review for the scientific record. sign in
theorem

preserves_equilibria

proved
show as:
view math explainer →
module
IndisputableMonolith.RRF.Core.Octave
domain
RRF
line
73 · github
papers citing
none yet

open explainer

Read the cached plain-language explainer.

open lean source

IndisputableMonolith.RRF.Core.Octave on GitHub at line 73.

browse module

All declarations in this module, on Recognition.

explainer page

A cached Ask Recognition explainer exists for this declaration.

open explainer

depends on

formal source

  70  preserves_order := fun x y h => g.preserves_order _ _ (f.preserves_order x y h)
  71
  72/-- Morphisms preserve equilibria (if target has NonNeg strain). -/
  73theorem preserves_equilibria {O₁ O₂ : Octave}
  74    [inst : StrainFunctional.NonNeg O₂.strain]
  75    (f : OctaveMorphism O₁ O₂)
  76    (x : O₁.State) (hx : O₁.strain.isBalanced x)
  77    (hf : O₂.strain.J (f.map x) ≤ O₁.strain.J x) :
  78    O₂.strain.isBalanced (f.map x) := by
  79  simp only [StrainFunctional.isBalanced] at *
  80  rw [hx] at hf
  81  have h₁ := @StrainFunctional.NonNeg.nonneg _ O₂.strain inst (f.map x)
  82  linarith
  83
  84end OctaveMorphism
  85
  86/-- Two octaves are equivalent if there exist mutually inverse morphisms
  87    that both preserve strain exactly (isometric in both directions). -/
  88structure OctaveEquiv (O₁ O₂ : Octave) where
  89  /-- Forward morphism. -/
  90  toFun : OctaveMorphism O₁ O₂
  91  /-- Backward morphism. -/
  92  invFun : OctaveMorphism O₂ O₁
  93  /-- Strain is preserved exactly (forward isometry). -/
  94  strain_eq : ∀ x, O₂.strain.J (toFun.map x) = O₁.strain.J x
  95  /-- Strain is preserved exactly (inverse isometry). -/
  96  strain_eq_inv : ∀ y, O₁.strain.J (invFun.map y) = O₂.strain.J y
  97
  98namespace OctaveEquiv
  99
 100/-- Reflexivity. -/
 101def refl (O : Octave) : OctaveEquiv O O where
 102  toFun := OctaveMorphism.id O
 103  invFun := OctaveMorphism.id O