class
definition
AveragingDerivation
show as:
view math explainer →
open explainer
Generate a durable explainer page for this declaration.
open lean source
IndisputableMonolith.Cost on GitHub at line 49.
browse module
All declarations in this module, on Recognition.
explainer page
depends on
used by
formal source
46class AveragingAgree (F : ℝ → ℝ) : Prop where
47 agrees : AgreesOnExp F
48
49class AveragingDerivation (F : ℝ → ℝ) : Prop extends SymmUnit F where
50 agrees : AgreesOnExp F
51
52lemma even_on_log_of_symm {F : ℝ → ℝ} [SymmUnit F] (t : ℝ) :
53 F (Real.exp t) = F (Real.exp (-t)) := by
54 have hx : 0 < Real.exp t := Real.exp_pos t
55 simpa [Real.exp_neg] using (SymmUnit.symmetric (F:=F) hx)
56
57class AveragingBounds (F : ℝ → ℝ) : Prop extends SymmUnit F where
58 upper : ∀ t : ℝ, F (Real.exp t) ≤ Jcost (Real.exp t)
59 lower : ∀ t : ℝ, Jcost (Real.exp t) ≤ F (Real.exp t)
60
61theorem agrees_on_exp_of_bounds {F : ℝ → ℝ} [AveragingBounds F] :
62 AgreesOnExp F := by
63 intro t
64 have h₁ := AveragingBounds.upper (F:=F) t
65 have h₂ := AveragingBounds.lower (F:=F) t
66 have : F (Real.exp t) = Jcost (Real.exp t) := le_antisymm h₁ h₂
67 simpa using this
68
69theorem F_eq_J_on_pos_alt (F : ℝ → ℝ)
70 (hAgree : AgreesOnExp F) : ∀ {x : ℝ}, 0 < x → F x = Jcost x := by
71 intro x hx
72 have : ∃ t, Real.exp t = x := ⟨Real.log x, by simpa using Real.exp_log hx⟩
73 rcases this with ⟨t, rfl⟩
74 simpa using hAgree t
75
76instance (priority := 90) averagingDerivation_of_bounds {F : ℝ → ℝ} [AveragingBounds F] :
77 AveragingDerivation F :=
78 { toSymmUnit := (inferInstance : SymmUnit F)
79 , agrees := agrees_on_exp_of_bounds (F:=F) }