Theorem: LinearMap.continuous_of_isClosed_graph
File: Mathlib/Analysis/Normed/Operator/Banach.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
⊢ Continuous ⇑g
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
⊢ Continuous ⇑g
tactic: letI : CompleteSpace g.graph := completeSpace_coe_iff_isComplete.mpr hg.isComplete
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
⊢ Continuous ⇑g
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
⊢ Continuous ⇑g
tactic: let φ₀ : E →ₗ[𝕜] E × F := LinearMap.id.prod g
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
⊢ Continuous ⇑g
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this✝ : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
this : LeftInverse Prod.fst ⇑φ₀
⊢ Continuous ⇑g
tactic: have : Function.LeftInverse Prod.fst φ₀ := fun x => rfl
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this✝ : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
this : LeftInverse Prod.fst ⇑φ₀
⊢ Continuous ⇑g
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this✝ : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
this : LeftInverse Prod.fst ⇑φ₀
φ : E ≃ₗ[𝕜] ↥g.graph := LinearEquiv.ofLeftInverse this ≪≫ₗ LinearEquiv.ofEq (range φ₀) g.graph ⋯
⊢ Continuous ⇑g
tactic: let φ : E ≃ₗ[𝕜] g.graph :=
    (LinearEquiv.ofLeftInverse this).trans (LinearEquiv.ofEq _ _ g.graph_eq_range_prod.symm)
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this✝ : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
this : LeftInverse Prod.fst ⇑φ₀
φ : E ≃ₗ[𝕜] ↥g.graph := LinearEquiv.ofLeftInverse this ≪≫ₗ LinearEquiv.ofEq (range φ₀) g.graph ⋯
⊢ Continuous ⇑g
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this✝ : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
this : LeftInverse Prod.fst ⇑φ₀
φ : E ≃ₗ[𝕜] ↥g.graph := LinearEquiv.ofLeftInverse this ≪≫ₗ LinearEquiv.ofEq (range φ₀) g.graph ⋯
ψ : ↥g.graph ≃L[𝕜] E := φ.symm.toContinuousLinearEquivOfContinuous ⋯
⊢ Continuous ⇑g
tactic: let ψ : g.graph ≃L[𝕜] E :=
    φ.symm.toContinuousLinearEquivOfContinuous continuous_subtype_val.fst
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
this✝ : CompleteSpace ↥g.graph := completeSpace_coe_iff_isComplete.mpr (IsClosed.isComplete hg)
φ₀ : E →ₗ[𝕜] E × F := id.prod g
this : LeftInverse Prod.fst ⇑φ₀
φ : E ≃ₗ[𝕜] ↥g.graph := LinearEquiv.ofLeftInverse this ≪≫ₗ LinearEquiv.ofEq (range φ₀) g.graph ⋯
ψ : ↥g.graph ≃L[𝕜] E := φ.symm.toContinuousLinearEquivOfContinuous ⋯
⊢ Continuous ⇑g
state_after: no goals
tactic: exact (continuous_subtype_val.comp ψ.symm.continuous).snd