l3lab/ntp-mathlib huggingface dataset:
/-- If a dense embedding `e : E →L[𝕜] G` expands the norm by a constant factor `N⁻¹`, then the
norm of the extension of `f` along `e` is bounded by `N * ‖f‖`. -/
theorem op_norm_extend_le :
    ‖f.extend e h_dense (uniformEmbedding_of_bound _ h_e).toUniformInducing‖ ≤ N * ‖f‖ := by
  -- Add `op_norm_le_of_dense`?
  refine op_norm_le_bound _ ?_ (isClosed_property h_dense (isClosed_le ?_ ?_) fun x ↦ ?_)
  · cases le_total 0 N with
    | inl hN => exact mul_nonneg hN (norm_nonneg _)
    | inr hN =>
      have : Unique E := ⟨⟨0⟩, fun x ↦ norm_le_zero_iff.mp <|
        (h_e x).trans (mul_nonpos_of_nonpos_of_nonneg hN (norm_nonneg _))⟩
      obtain rfl : f = 0 := Subsingleton.elim ..
      simp
  · exact (cont _).norm
  · exact continuous_const.mul continuous_norm
  · rw [extend_eq]
    calc
      ‖f x‖ ≤ ‖f‖ * ‖x‖ := le_op_norm _ _
      _ ≤ ‖f‖ * (N * ‖e x‖) := (mul_le_mul_of_nonneg_left (h_e x) (norm_nonneg _))
      _ ≤ N * ‖f‖ * ‖e x‖ := by 

Proof state:
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedAddCommGroup Fₗ
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NontriviallyNormedField 𝕜₂
inst✝⁶ : NontriviallyNormedField 𝕜₃
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedSpace 𝕜₂ F
inst✝³ : NormedSpace 𝕜₃ G
inst✝² : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
f g : E →SL[σ₁₂] F
x✝ y z : E
inst✝¹ : CompleteSpace F
e : E →L[𝕜] Fₗ
h_dense : DenseRange ⇑e
N : ℝ≥0
h_e : ∀ (x : E), ‖x‖ ≤ ↑N * ‖e x‖
inst✝ : RingHomIsometric σ₁₂
x : E
⊢ ‖f‖ * (↑N * ‖e x‖) ≤ ↑N * ‖f‖ * ‖e x‖

Next tactic:
rw [mul_comm ↑N ‖f‖, mul_assoc]
@[simp]
theorem norm_toContinuousLinearMap [Nontrivial E] [RingHomIsometric σ₁₂] (f : E →ₛₗᵢ[σ₁₂] F) :
    ‖f.toContinuousLinearMap‖ = 1 :=
  f.toContinuousLinearMap.homothety_norm <| by 

Proof state:
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedAddCommGroup Fₗ
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NontriviallyNormedField 𝕜₂
inst✝⁶ : NontriviallyNormedField 𝕜₃
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedSpace 𝕜₂ F
inst✝³ : NormedSpace 𝕜₃ G
inst✝² : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
f✝ g : E →SL[σ₁₂] F
x y z : E
inst✝¹ : Nontrivial E
inst✝ : RingHomIsometric σ₁₂
f : E →ₛₗᵢ[σ₁₂] F
⊢ ∀ (x : E), ‖(toContinuousLinearMap f) x‖ = 1 * ‖x‖

Next tactic:
simp
/-- Postcomposition of a continuous linear map with a linear isometry preserves
the operator norm. -/
theorem norm_toContinuousLinearMap_comp [RingHomIsometric σ₁₂] (f : F →ₛₗᵢ[σ₂₃] G)
    {g : E →SL[σ₁₂] F} : ‖f.toContinuousLinearMap.comp g‖ = ‖g‖ :=
  op_norm_ext (f.toContinuousLinearMap.comp g) g fun x => by
    

Proof state:
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedAddCommGroup G
inst✝⁹ : NormedAddCommGroup Fₗ
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NontriviallyNormedField 𝕜₂
inst✝⁶ : NontriviallyNormedField 𝕜₃
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedSpace 𝕜₂ F
inst✝³ : NormedSpace 𝕜₃ G
inst✝² : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
f✝ g✝ : E →SL[σ₁₂] F
x✝ y z : E
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝ : RingHomIsometric σ₁₂
f : F →ₛₗᵢ[σ₂₃] G
g : E →SL[σ₁₂] F
x : E
⊢ ‖(ContinuousLinearMap.comp (toContinuousLinearMap f) g) x‖ = ‖g x‖

Next tactic:
simp only [norm_map, coe_toContinuousLinearMap, coe_comp', Function.comp_apply]
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  

Proof state:
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
⊢ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ = ‖f‖

Next tactic:
cases subsingleton_or_nontrivial F'
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · 

Proof state:
case inl
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Subsingleton F'
⊢ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ = ‖f‖

Next tactic:
haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    

Proof state:
case inl
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Subsingleton F'
this : Subsingleton F
⊢ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ = ‖f‖

Next tactic:
simp
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  

Proof state:
case inr
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
⊢ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ = ‖f‖

Next tactic:
refine' le_antisymm _ _
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  refine' le_antisymm _ _
  · 

Proof state:
case inr.refine'_1
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
⊢ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ ≤ ‖f‖

Next tactic:
convert f.op_norm_comp_le g.toLinearIsometry.toContinuousLinearMap
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  refine' le_antisymm _ _
  · convert f.op_norm_comp_le g.toLinearIsometry.toContinuousLinearMap
    

Proof state:
case h.e'_4
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
⊢ ‖f‖ = ‖f‖ * ‖LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g)‖

Next tactic:
simp [g.toLinearIsometry.norm_toContinuousLinearMap]
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  refine' le_antisymm _ _
  · convert f.op_norm_comp_le g.toLinearIsometry.toContinuousLinearMap
    simp [g.toLinearIsometry.norm_toContinuousLinearMap]
  · 

Proof state:
case inr.refine'_2
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
⊢ ‖f‖ ≤ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖

Next tactic:
convert (f.comp g.toLinearIsometry.toContinuousLinearMap).op_norm_comp_le
        g.symm.toLinearIsometry.toContinuousLinearMap
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  refine' le_antisymm _ _
  · convert f.op_norm_comp_le g.toLinearIsometry.toContinuousLinearMap
    simp [g.toLinearIsometry.norm_toContinuousLinearMap]
  · convert (f.comp g.toLinearIsometry.toContinuousLinearMap).op_norm_comp_le
        g.symm.toLinearIsometry.toContinuousLinearMap
    · 

Proof state:
case h.e'_3.h.e'_3
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
⊢ f =
    comp (comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g)))
      (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry (LinearIsometryEquiv.symm g)))

Next tactic:
ext
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  refine' le_antisymm _ _
  · convert f.op_norm_comp_le g.toLinearIsometry.toContinuousLinearMap
    simp [g.toLinearIsometry.norm_toContinuousLinearMap]
  · convert (f.comp g.toLinearIsometry.toContinuousLinearMap).op_norm_comp_le
        g.symm.toLinearIsometry.toContinuousLinearMap
    · ext
      

Proof state:
case h.e'_3.h.e'_3.h
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
x✝ : F
⊢ f x✝ =
    (comp (comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g)))
        (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry (LinearIsometryEquiv.symm g))))
      x✝

Next tactic:
simp
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  refine' le_antisymm _ _
  · convert f.op_norm_comp_le g.toLinearIsometry.toContinuousLinearMap
    simp [g.toLinearIsometry.norm_toContinuousLinearMap]
  · convert (f.comp g.toLinearIsometry.toContinuousLinearMap).op_norm_comp_le
        g.symm.toLinearIsometry.toContinuousLinearMap
    · ext
      simp
    

Proof state:
case h.e'_4
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
⊢ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ =
    ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ *
      ‖LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry (LinearIsometryEquiv.symm g))‖

Next tactic:
haveI := g.symm.surjective.nontrivial
/-- Precomposition with a linear isometry preserves the operator norm. -/
theorem op_norm_comp_linearIsometryEquiv (f : F →SL[σ₂₃] G) (g : F' ≃ₛₗᵢ[σ₂'] F) :
    ‖f.comp g.toLinearIsometry.toContinuousLinearMap‖ = ‖f‖ := by
  cases subsingleton_or_nontrivial F'
  · haveI := g.symm.toLinearEquiv.toEquiv.subsingleton
    simp
  refine' le_antisymm _ _
  · convert f.op_norm_comp_le g.toLinearIsometry.toContinuousLinearMap
    simp [g.toLinearIsometry.norm_toContinuousLinearMap]
  · convert (f.comp g.toLinearIsometry.toContinuousLinearMap).op_norm_comp_le
        g.symm.toLinearIsometry.toContinuousLinearMap
    · ext
      simp
    haveI := g.symm.surjective.nontrivial
    

Proof state:
case h.e'_4
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
f : F →SL[σ₂₃] G
g : F' ≃ₛₗᵢ[σ₂'] F
h✝ : Nontrivial F'
this : Nontrivial F
⊢ ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ =
    ‖comp f (LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry g))‖ *
      ‖LinearIsometry.toContinuousLinearMap (LinearIsometryEquiv.toLinearIsometry (LinearIsometryEquiv.symm g))‖

Next tactic:
simp [g.symm.toLinearIsometry.norm_toContinuousLinearMap]
/-- The norm of the tensor product of a scalar linear map and of an element of a normed space
is the product of the norms. -/
@[simp]
theorem norm_smulRight_apply (c : E →L[𝕜] 𝕜) (f : Fₗ) : ‖smulRight c f‖ = ‖c‖ * ‖f‖ := by
  

Proof state:
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
E : Type u_4
Eₗ : Type u_5
F : Type u_6
Fₗ : Type u_7
G : Type u_8
Gₗ : Type u_9
𝓕 : Type u_10
inst✝²¹ : NormedAddCommGroup E
inst✝²⁰ : NormedAddCommGroup F
inst✝¹⁹ : NormedAddCommGroup G
inst✝¹⁸ : NormedAddCommGroup Fₗ
inst✝¹⁷ : NontriviallyNormedField 𝕜
inst✝¹⁶ : NontriviallyNormedField 𝕜₂
inst✝¹⁵ : NontriviallyNormedField 𝕜₃
inst✝¹⁴ : NormedSpace 𝕜 E
inst✝¹³ : NormedSpace 𝕜₂ F
inst✝¹² : NormedSpace 𝕜₃ G
inst✝¹¹ : NormedSpace 𝕜 Fₗ
c✝ : 𝕜
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
𝕜₂' : Type u_11
inst✝¹⁰ : NontriviallyNormedField 𝕜₂'
F' : Type u_12
inst✝⁹ : NormedAddCommGroup F'
inst✝⁸ : NormedSpace 𝕜₂' F'
σ₂' : 𝕜₂' →+* 𝕜₂
σ₂'' : 𝕜₂ →+* 𝕜₂'
σ₂₃' : 𝕜₂' →+* 𝕜₃
inst✝⁷ : RingHomInvPair σ₂' σ₂''
inst✝⁶ : RingHomInvPair σ₂'' σ₂'
inst✝⁵ : RingHomCompTriple σ₂' σ₂₃ σ₂₃'
inst✝⁴ : RingHomCompTriple σ₂'' σ₂₃' σ₂₃
inst✝³ : RingHomIsometric σ₂₃
inst✝² : RingHomIsometric σ₂'
inst✝¹ : RingHomIsometric σ₂''
inst✝ : RingHomIsometric σ₂₃'
c : E →L[𝕜] 𝕜
f : Fₗ
⊢ ‖smulRight c f‖ = ‖c‖ * ‖f‖

Next tactic:
refine' le_antisymm _ _