Theorem: DoubleCentralizer.norm_fst_eq_snd
File: Mathlib/Analysis/NormedSpace/Star/Multiplier.lean

tactic: have h1 : ∀ b, ‖a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖a.fst b‖₊ * ‖b‖₊ := by
  intro b
  calc
    ‖a.fst b‖₊ ^ 2 = ‖star (a.fst b) * a.fst b‖₊ := by
      simpa only [← sq] using CstarRing.nnnorm_star_mul_self.symm
    _ ≤ ‖a.snd (star (a.fst b))‖₊ * ‖b‖₊ := (a.central (star (a.fst b)) b ▸ nnnorm_mul_le _ _)
    _ ≤ ‖a.snd‖₊ * ‖a.fst b‖₊ * ‖b‖₊ :=
      nnnorm_star (a.fst b) ▸ mul_le_mul_right' (a.snd.le_op_nnnorm _) _
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
⊢ ‖a.fst‖ = ‖a.snd‖

tactic: have h2 : ∀ b, ‖a.snd b‖₊ ^ 2 ≤ ‖a.fst‖₊ * ‖a.snd b‖₊ * ‖b‖₊ := by
  intro b
  calc
    ‖a.snd b‖₊ ^ 2 = ‖a.snd b * star (a.snd b)‖₊ := by
      simpa only [← sq] using CstarRing.nnnorm_self_mul_star.symm
    _ ≤ ‖b‖₊ * ‖a.fst (star (a.snd b))‖₊ :=
      ((a.central b (star (a.snd b))).symm ▸ nnnorm_mul_le _ _)
    _ = ‖a.fst (star (a.snd b))‖₊ * ‖b‖₊ := (mul_comm _ _)
    _ ≤ ‖a.fst‖₊ * ‖a.snd b‖₊ * ‖b‖₊ :=
      nnnorm_star (a.snd b) ▸ mul_le_mul_right' (a.fst.le_op_nnnorm _) _
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
h1 : ∀ (b : A), ‖↑a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖↑a.fst b‖₊ * ‖b‖₊
⊢ ‖a.fst‖ = ‖a.snd‖

tactic: exact le_antisymm (h0 _ _ h1) (h0 _ _ h2)
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
h1 : ∀ (b : A), ‖↑a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖↑a.fst b‖₊ * ‖b‖₊
h2 : ∀ (b : A), ‖↑a.snd b‖₊ ^ 2 ≤ ‖a.fst‖₊ * ‖↑a.snd b‖₊ * ‖b‖₊
⊢ ‖a.fst‖ = ‖a.snd‖

tactic: intro f C h
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
⊢ ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C

tactic: have h1 : ∀ b, C * ‖f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2 := by
  intro b
  convert mul_le_mul_right' (mul_le_mul_left' (f.le_op_nnnorm b) C) ‖b‖₊ using 1
  ring
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
⊢ ‖f‖₊ ≤ C

tactic: have :=
  NNReal.div_le_of_le_mul
    (f.op_nnnorm_le_bound _
      (by
        simpa only [sqrt_sq, sqrt_mul] using fun b =>
          sqrt_le_sqrt_iff.mpr ((h b).trans (h1 b))))
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
h1 : ∀ (b : A), C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2
⊢ ‖f‖₊ ≤ C

tactic: convert NNReal.rpow_le_rpow this two_pos.le
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
h1 : ∀ (b : A), C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2
this : ‖f‖₊ / ↑sqrt ‖f‖₊ ≤ ↑sqrt C
⊢ ‖f‖₊ ≤ C

tactic: intro b
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
⊢ ∀ (b : A), C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2

tactic: convert mul_le_mul_right' (mul_le_mul_left' (f.le_op_nnnorm b) C) ‖b‖₊ using 1
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
b : A
⊢ C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2

tactic: ring
state_before: case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
b : A
⊢ C * ‖f‖₊ * ‖b‖₊ ^ 2 = C * (‖f‖₊ * ‖b‖₊) * ‖b‖₊

tactic: simpa only [sqrt_sq, sqrt_mul] using fun b =>
  sqrt_le_sqrt_iff.mpr ((h b).trans (h1 b))
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
h1 : ∀ (b : A), C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2
⊢ ∀ (x : A), ‖↑f x‖₊ ≤ ?m.1238617 * ?m.1238618 * ‖x‖₊

tactic: simp only [NNReal.rpow_two, div_pow, sq_sqrt]
state_before: case h.e'_3
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
h1 : ∀ (b : A), C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2
this : ‖f‖₊ / ↑sqrt ‖f‖₊ ≤ ↑sqrt C
⊢ ‖f‖₊ = (‖f‖₊ / ↑sqrt ‖f‖₊) ^ 2

tactic: simp only [sq, mul_self_div_self]
state_before: case h.e'_3
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
h1 : ∀ (b : A), C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2
this : ‖f‖₊ / ↑sqrt ‖f‖₊ ≤ ↑sqrt C
⊢ ‖f‖₊ = ‖f‖₊ ^ 2 / ‖f‖₊

tactic: simp only [NNReal.rpow_two, sq_sqrt]
state_before: case h.e'_4
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
f : A →L[𝕜] A
C : ℝ≥0
h : ∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊
h1 : ∀ (b : A), C * ‖↑f b‖₊ * ‖b‖₊ ≤ C * ‖f‖₊ * ‖b‖₊ ^ 2
this : ‖f‖₊ / ↑sqrt ‖f‖₊ ≤ ↑sqrt C
⊢ C = ↑sqrt C ^ 2

tactic: intro b
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
⊢ ∀ (b : A), ‖↑a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖↑a.fst b‖₊ * ‖b‖₊

tactic: calc
  ‖a.fst b‖₊ ^ 2 = ‖star (a.fst b) * a.fst b‖₊ := by
    simpa only [← sq] using CstarRing.nnnorm_star_mul_self.symm
  _ ≤ ‖a.snd (star (a.fst b))‖₊ * ‖b‖₊ := (a.central (star (a.fst b)) b ▸ nnnorm_mul_le _ _)
  _ ≤ ‖a.snd‖₊ * ‖a.fst b‖₊ * ‖b‖₊ :=
    nnnorm_star (a.fst b) ▸ mul_le_mul_right' (a.snd.le_op_nnnorm _) _
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
b : A
⊢ ‖↑a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖↑a.fst b‖₊ * ‖b‖₊

tactic: simpa only [← sq] using CstarRing.nnnorm_star_mul_self.symm
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
b : A
⊢ ‖↑a.fst b‖₊ ^ 2 = ‖star (↑a.fst b) * ↑a.fst b‖₊

tactic: intro b
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
h1 : ∀ (b : A), ‖↑a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖↑a.fst b‖₊ * ‖b‖₊
⊢ ∀ (b : A), ‖↑a.snd b‖₊ ^ 2 ≤ ‖a.fst‖₊ * ‖↑a.snd b‖₊ * ‖b‖₊

tactic: calc
  ‖a.snd b‖₊ ^ 2 = ‖a.snd b * star (a.snd b)‖₊ := by
    simpa only [← sq] using CstarRing.nnnorm_self_mul_star.symm
  _ ≤ ‖b‖₊ * ‖a.fst (star (a.snd b))‖₊ :=
    ((a.central b (star (a.snd b))).symm ▸ nnnorm_mul_le _ _)
  _ = ‖a.fst (star (a.snd b))‖₊ * ‖b‖₊ := (mul_comm _ _)
  _ ≤ ‖a.fst‖₊ * ‖a.snd b‖₊ * ‖b‖₊ :=
    nnnorm_star (a.snd b) ▸ mul_le_mul_right' (a.fst.le_op_nnnorm _) _
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
h1 : ∀ (b : A), ‖↑a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖↑a.fst b‖₊ * ‖b‖₊
b : A
⊢ ‖↑a.snd b‖₊ ^ 2 ≤ ‖a.fst‖₊ * ‖↑a.snd b‖₊ * ‖b‖₊

tactic: simpa only [← sq] using CstarRing.nnnorm_self_mul_star.symm
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NonUnitalNormedRing A
inst✝⁴ : NormedSpace 𝕜 A
inst✝³ : SMulCommClass 𝕜 A A
inst✝² : IsScalarTower 𝕜 A A
inst✝¹ : StarRing A
inst✝ : CstarRing A
a : 𝓜(𝕜, A)
h0 : ∀ (f : A →L[𝕜] A) (C : ℝ≥0), (∀ (b : A), ‖↑f b‖₊ ^ 2 ≤ C * ‖↑f b‖₊ * ‖b‖₊) → ‖f‖₊ ≤ C
h1 : ∀ (b : A), ‖↑a.fst b‖₊ ^ 2 ≤ ‖a.snd‖₊ * ‖↑a.fst b‖₊ * ‖b‖₊
b : A
⊢ ‖↑a.snd b‖₊ ^ 2 = ‖↑a.snd b * star (↑a.snd b)‖₊