[GOAL]
𝕜 : Type u_1
V₁ : Type u_2
V₂ : Type u_3
P₁ : Type u_4
P₂ : Type u_5
inst✝¹¹ : NormedField 𝕜
inst✝¹⁰ : NormedAddCommGroup V₁
inst✝⁹ : SeminormedAddCommGroup V₂
inst✝⁸ : NormedSpace 𝕜 V₁
inst✝⁷ : NormedSpace 𝕜 V₂
inst✝⁶ : MetricSpace P₁
inst✝⁵ : PseudoMetricSpace P₂
inst✝⁴ : NormedAddTorsor V₁ P₁
inst✝³ : NormedAddTorsor V₂ P₂
inst✝² : FiniteDimensional 𝕜 V₁
inst✝¹ : FiniteDimensional 𝕜 V₂
inst✝ : Inhabited P₁
li : P₁ →ᵃⁱ[𝕜] P₂
h : finrank 𝕜 V₁ = finrank 𝕜 V₂
p : P₁
⊢ ↑li p = ↑(LinearIsometry.toLinearIsometryEquiv (AffineIsometry.linearIsometry li) h) (p -ᵥ default) +ᵥ ↑li default
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
⊢ Continuous fun f => det f
[PROOFSTEP]
change
  Continuous fun f : E →L[𝕜] E =>
    LinearMap.det
      (f : E →ₗ[𝕜] E)
        -- Porting note: this could be easier with `det_cases`
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
⊢ Continuous fun f => ↑LinearMap.det ↑f
[PROOFSTEP]
by_cases h : ∃ s : Finset E, Nonempty (Basis (↥s) 𝕜 E)
[GOAL]
case pos
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ∃ s, Nonempty (Basis { x // x ∈ s } 𝕜 E)
⊢ Continuous fun f => ↑LinearMap.det ↑f
[PROOFSTEP]
rcases h with ⟨s, ⟨b⟩⟩
[GOAL]
case pos.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
s : Finset E
b : Basis { x // x ∈ s } 𝕜 E
⊢ Continuous fun f => ↑LinearMap.det ↑f
[PROOFSTEP]
haveI : FiniteDimensional 𝕜 E := FiniteDimensional.of_fintype_basis b
[GOAL]
case pos.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
s : Finset E
b : Basis { x // x ∈ s } 𝕜 E
this : FiniteDimensional 𝕜 E
⊢ Continuous fun f => ↑LinearMap.det ↑f
[PROOFSTEP]
simp_rw [LinearMap.det_eq_det_toMatrix_of_finset b]
[GOAL]
case pos.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
s : Finset E
b : Basis { x // x ∈ s } 𝕜 E
this : FiniteDimensional 𝕜 E
⊢ Continuous fun f => Matrix.det (↑(LinearMap.toMatrix b b) ↑f)
[PROOFSTEP]
refine' Continuous.matrix_det _
[GOAL]
case pos.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
s : Finset E
b : Basis { x // x ∈ s } 𝕜 E
this : FiniteDimensional 𝕜 E
⊢ Continuous fun f => ↑(LinearMap.toMatrix b b) ↑f
[PROOFSTEP]
exact ((LinearMap.toMatrix b b).toLinearMap.comp (ContinuousLinearMap.coeLM 𝕜)).continuous_of_finiteDimensional
[GOAL]
case neg
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ¬∃ s, Nonempty (Basis { x // x ∈ s } 𝕜 E)
⊢ Continuous fun f => ↑LinearMap.det ↑f
[PROOFSTEP]
rw [LinearMap.det_def]
[GOAL]
case neg
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ¬∃ s, Nonempty (Basis { x // x ∈ s } 𝕜 E)
⊢ Continuous fun f =>
    ↑(if H : ∃ s, Nonempty (Basis { x // x ∈ s } 𝕜 E) then
          LinearMap.detAux (Trunc.mk (Nonempty.some (_ : Nonempty (Basis { x // x ∈ Exists.choose H } 𝕜 E))))
        else 1)
      ↑f
[PROOFSTEP]
simpa only [h, MonoidHom.one_apply, dif_neg, not_false_iff] using continuous_const
[GOAL]
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
E' : Type u_1
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
⊢ 0 < lipschitzExtensionConstant E'
[PROOFSTEP]
rw [lipschitzExtensionConstant]
[GOAL]
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
E' : Type u_1
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
⊢ 0 <
    let A := LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'));
    max (‖↑(ContinuousLinearEquiv.symm A)‖₊ * ‖↑A‖₊) 1
[PROOFSTEP]
exact zero_lt_one.trans_le (le_max_right _ _)
[GOAL]
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
⊢ ∃ g, LipschitzWith (lipschitzExtensionConstant E' * K) g ∧ EqOn f g s
[PROOFSTEP]
let ι : Type _ := Basis.ofVectorSpaceIndex ℝ E'
[GOAL]
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
⊢ ∃ g, LipschitzWith (lipschitzExtensionConstant E' * K) g ∧ EqOn f g s
[PROOFSTEP]
let A := (Basis.ofVectorSpace ℝ E').equivFun.toContinuousLinearEquiv
[GOAL]
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
⊢ ∃ g, LipschitzWith (lipschitzExtensionConstant E' * K) g ∧ EqOn f g s
[PROOFSTEP]
have LA : LipschitzWith ‖A.toContinuousLinearMap‖₊ A := by apply A.lipschitz
[GOAL]
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
⊢ LipschitzWith ‖↑A‖₊ ↑A
[PROOFSTEP]
apply A.lipschitz
[GOAL]
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
⊢ ∃ g, LipschitzWith (lipschitzExtensionConstant E' * K) g ∧ EqOn f g s
[PROOFSTEP]
have L : LipschitzOnWith (‖A.toContinuousLinearMap‖₊ * K) (A ∘ f) s := LA.comp_lipschitzOnWith hf
[GOAL]
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
⊢ ∃ g, LipschitzWith (lipschitzExtensionConstant E' * K) g ∧ EqOn f g s
[PROOFSTEP]
obtain ⟨g, hg, gs⟩ : ∃ g : α → ι → ℝ, LipschitzWith (‖A.toContinuousLinearMap‖₊ * K) g ∧ EqOn (A ∘ f) g s := L.extend_pi
[GOAL]
case intro.intro
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
⊢ ∃ g, LipschitzWith (lipschitzExtensionConstant E' * K) g ∧ EqOn f g s
[PROOFSTEP]
refine' ⟨A.symm ∘ g, _, _⟩
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
⊢ LipschitzWith (lipschitzExtensionConstant E' * K) (↑(ContinuousLinearEquiv.symm A) ∘ g)
[PROOFSTEP]
have LAsymm : LipschitzWith ‖A.symm.toContinuousLinearMap‖₊ A.symm := by apply A.symm.lipschitz
[GOAL]
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
⊢ LipschitzWith ‖↑(ContinuousLinearEquiv.symm A)‖₊ ↑(ContinuousLinearEquiv.symm A)
[PROOFSTEP]
apply A.symm.lipschitz
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
LAsymm : LipschitzWith ‖↑(ContinuousLinearEquiv.symm A)‖₊ ↑(ContinuousLinearEquiv.symm A)
⊢ LipschitzWith (lipschitzExtensionConstant E' * K) (↑(ContinuousLinearEquiv.symm A) ∘ g)
[PROOFSTEP]
apply (LAsymm.comp hg).weaken
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
LAsymm : LipschitzWith ‖↑(ContinuousLinearEquiv.symm A)‖₊ ↑(ContinuousLinearEquiv.symm A)
⊢ ‖↑(ContinuousLinearEquiv.symm A)‖₊ * (‖↑A‖₊ * K) ≤ lipschitzExtensionConstant E' * K
[PROOFSTEP]
rw [lipschitzExtensionConstant, ← mul_assoc]
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
LAsymm : LipschitzWith ‖↑(ContinuousLinearEquiv.symm A)‖₊ ↑(ContinuousLinearEquiv.symm A)
⊢ ‖↑(ContinuousLinearEquiv.symm A)‖₊ * ‖↑A‖₊ * K ≤
    (let A := LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'));
      max (‖↑(ContinuousLinearEquiv.symm A)‖₊ * ‖↑A‖₊) 1) *
      K
[PROOFSTEP]
refine' mul_le_mul' (le_max_left _ _) le_rfl
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
⊢ EqOn f (↑(ContinuousLinearEquiv.symm A) ∘ g) s
[PROOFSTEP]
intro x hx
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
x : α
hx : x ∈ s
⊢ f x = (↑(ContinuousLinearEquiv.symm A) ∘ g) x
[PROOFSTEP]
have : A (f x) = g x := gs hx
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
F : Type w
inst✝¹¹ : NormedAddCommGroup F
inst✝¹⁰ : NormedSpace 𝕜 F
F' : Type x
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module 𝕜 F'
inst✝⁷ : TopologicalSpace F'
inst✝⁶ : TopologicalAddGroup F'
inst✝⁵ : ContinuousSMul 𝕜 F'
inst✝⁴ : CompleteSpace 𝕜
α : Type u_1
inst✝³ : PseudoMetricSpace α
E' : Type u_2
inst✝² : NormedAddCommGroup E'
inst✝¹ : NormedSpace ℝ E'
inst✝ : FiniteDimensional ℝ E'
s : Set α
f : α → E'
K : ℝ≥0
hf : LipschitzOnWith K f s
ι : Type u_2 := ↑(Basis.ofVectorSpaceIndex ℝ E')
A : E' ≃L[ℝ] ↑(Basis.ofVectorSpaceIndex ℝ E') → ℝ :=
  LinearEquiv.toContinuousLinearEquiv (Basis.equivFun (Basis.ofVectorSpace ℝ E'))
LA : LipschitzWith ‖↑A‖₊ ↑A
L : LipschitzOnWith (‖↑A‖₊ * K) (↑A ∘ f) s
g : α → ι → ℝ
hg : LipschitzWith (‖↑A‖₊ * K) g
gs : EqOn (↑A ∘ f) g s
x : α
hx : x ∈ s
this : ↑A (f x) = g x
⊢ f x = (↑(ContinuousLinearEquiv.symm A) ∘ g) x
[PROOFSTEP]
simp only [(· ∘ ·), ← this, A.symm_apply_apply]
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
f : E →ₗ[𝕜] F
hf : ker f = ⊥
⊢ ∃ K, K > 0 ∧ AntilipschitzWith K ↑f
[PROOFSTEP]
cases subsingleton_or_nontrivial E
[GOAL]
case inl
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
f : E →ₗ[𝕜] F
hf : ker f = ⊥
h✝ : Subsingleton E
⊢ ∃ K, K > 0 ∧ AntilipschitzWith K ↑f
[PROOFSTEP]
exact ⟨1, zero_lt_one, AntilipschitzWith.of_subsingleton⟩
[GOAL]
case inr
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
f : E →ₗ[𝕜] F
hf : ker f = ⊥
h✝ : Nontrivial E
⊢ ∃ K, K > 0 ∧ AntilipschitzWith K ↑f
[PROOFSTEP]
rw [LinearMap.ker_eq_bot] at hf 
[GOAL]
case inr
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
f : E →ₗ[𝕜] F
hf : Function.Injective ↑f
h✝ : Nontrivial E
⊢ ∃ K, K > 0 ∧ AntilipschitzWith K ↑f
[PROOFSTEP]
let e : E ≃L[𝕜] LinearMap.range f := (LinearEquiv.ofInjective f hf).toContinuousLinearEquiv
[GOAL]
case inr
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
f : E →ₗ[𝕜] F
hf : Function.Injective ↑f
h✝ : Nontrivial E
e : E ≃L[𝕜] { x // x ∈ range f } := LinearEquiv.toContinuousLinearEquiv (LinearEquiv.ofInjective f hf)
⊢ ∃ K, K > 0 ∧ AntilipschitzWith K ↑f
[PROOFSTEP]
exact ⟨_, e.nnnorm_symm_pos, e.antilipschitz⟩
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
hf : LinearIndependent 𝕜 f
⊢ ∀ᶠ (g : ι → E) in 𝓝 f, LinearIndependent 𝕜 g
[PROOFSTEP]
cases nonempty_fintype ι
[GOAL]
case intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
hf : LinearIndependent 𝕜 f
val✝ : Fintype ι
⊢ ∀ᶠ (g : ι → E) in 𝓝 f, LinearIndependent 𝕜 g
[PROOFSTEP]
simp only [Fintype.linearIndependent_iff'] at hf ⊢
[GOAL]
case intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
⊢ ∀ᶠ (g : ι → E) in 𝓝 f,
    LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) = ⊥
[PROOFSTEP]
rcases LinearMap.exists_antilipschitzWith _ hf with ⟨K, K0, hK⟩
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
⊢ ∀ᶠ (g : ι → E) in 𝓝 f,
    LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) = ⊥
[PROOFSTEP]
have : Tendsto (fun g : ι → E => ∑ i, ‖g i - f i‖) (𝓝 f) (𝓝 <| ∑ i, ‖f i - f i‖) :=
  tendsto_finset_sum _ fun i _ => Tendsto.norm <| ((continuous_apply i).tendsto _).sub tendsto_const_nhds
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 (∑ i : ι, ‖f i - f i‖))
⊢ ∀ᶠ (g : ι → E) in 𝓝 f,
    LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) = ⊥
[PROOFSTEP]
simp only [sub_self, norm_zero, Finset.sum_const_zero] at this 
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
⊢ ∀ᶠ (g : ι → E) in 𝓝 f,
    LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) = ⊥
[PROOFSTEP]
refine' (this.eventually (gt_mem_nhds <| inv_pos.2 K0)).mono fun g hg => _
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖ < ((fun a => ↑a) K)⁻¹
⊢ LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) = ⊥
[PROOFSTEP]
replace hg : ∑ i, ‖g i - f i‖₊ < K⁻¹
[GOAL]
case hg
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖ < ((fun a => ↑a) K)⁻¹
⊢ ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
[PROOFSTEP]
rw [← NNReal.coe_lt_coe]
[GOAL]
case hg
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖ < ((fun a => ↑a) K)⁻¹
⊢ ↑(∑ i : ι, ‖g i - f i‖₊) < ↑K⁻¹
[PROOFSTEP]
push_cast
[GOAL]
case hg
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖ < ((fun a => ↑a) K)⁻¹
⊢ ∑ x : ι, ‖g x - f x‖ < (↑K)⁻¹
[PROOFSTEP]
exact hg
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
⊢ LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) = ⊥
[PROOFSTEP]
rw [LinearMap.ker_eq_bot]
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
⊢ Function.Injective ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i))
[PROOFSTEP]
refine' (hK.add_sub_lipschitzWith (LipschitzWith.of_dist_le_mul fun v u => _) hg).injective
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
v u : ι → 𝕜
⊢ dist
      ((↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) -
          ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)))
        v)
      ((↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (g i)) -
          ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)))
        u) ≤
    ↑(∑ i : ι, ‖g i - f i‖₊) * dist v u
[PROOFSTEP]
simp only [dist_eq_norm, LinearMap.lsum_apply, Pi.sub_apply, LinearMap.sum_apply, LinearMap.comp_apply,
  LinearMap.proj_apply, LinearMap.smulRight_apply, LinearMap.id_apply, ← Finset.sum_sub_distrib, ← smul_sub, ← sub_smul,
  NNReal.coe_sum, coe_nnnorm, Finset.sum_mul]
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
v u : ι → 𝕜
⊢ ‖∑ x : ι, (v x - u x) • (g x - f x)‖ ≤ ∑ x : ι, ‖g x - f x‖ * ‖v - u‖
[PROOFSTEP]
refine' norm_sum_le_of_le _ fun i _ => _
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
v u : ι → 𝕜
i : ι
x✝ : i ∈ Finset.univ
⊢ ‖(v i - u i) • (g i - f i)‖ ≤ ‖g i - f i‖ * ‖v - u‖
[PROOFSTEP]
rw [norm_smul, mul_comm]
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
v u : ι → 𝕜
i : ι
x✝ : i ∈ Finset.univ
⊢ ‖g i - f i‖ * ‖v i - u i‖ ≤ ‖g i - f i‖ * ‖v - u‖
[PROOFSTEP]
gcongr
[GOAL]
case intro.intro.intro.h
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
f : ι → E
val✝ : Fintype ι
hf : LinearMap.ker (↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i)) = ⊥
K : ℝ≥0
K0 : K > 0
hK : AntilipschitzWith K ↑(↑(LinearMap.lsum 𝕜 (fun x => 𝕜) ℕ) fun i => LinearMap.smulRight LinearMap.id (f i))
this : Tendsto (fun g => ∑ i : ι, ‖g i - f i‖) (𝓝 f) (𝓝 0)
g : ι → E
hg : ∑ i : ι, ‖g i - f i‖₊ < K⁻¹
v u : ι → 𝕜
i : ι
x✝ : i ∈ Finset.univ
⊢ ‖v i - u i‖ ≤ ‖v - u‖
[PROOFSTEP]
exact norm_le_pi_norm (v - u) i
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
n : ℕ
⊢ IsOpen {f | ↑n ≤ LinearMap.rank ↑f}
[PROOFSTEP]
simp only [LinearMap.le_rank_iff_exists_linearIndependent_finset, setOf_exists, ← exists_prop]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
n : ℕ
⊢ IsOpen (⋃ (i : Finset E) (_ : Finset.card i = n), {x | LinearIndependent 𝕜 fun x_1 => ↑↑x ↑x_1})
[PROOFSTEP]
refine' isOpen_biUnion fun t _ => _
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
n : ℕ
t : Finset E
x✝ : t ∈ fun i => Finset.card i = n
⊢ IsOpen {x | LinearIndependent 𝕜 fun x_1 => ↑↑x ↑x_1}
[PROOFSTEP]
have : Continuous fun f : E →L[𝕜] F => fun x : (t : Set E) => f x :=
  continuous_pi fun x => (ContinuousLinearMap.apply 𝕜 F (x : E)).continuous
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
n : ℕ
t : Finset E
x✝ : t ∈ fun i => Finset.card i = n
this : Continuous fun f x => ↑f ↑x
⊢ IsOpen {x | LinearIndependent 𝕜 fun x_1 => ↑↑x ↑x_1}
[PROOFSTEP]
exact isOpen_setOf_linearIndependent.preimage this
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
⊢ ‖↑u e‖₊ ≤ Fintype.card ι • ‖↑(equivFunL v)‖₊ * M * ‖e‖₊
[PROOFSTEP]
set φ := v.equivFunL.toContinuousLinearMap
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ ‖↑u e‖₊ ≤ Fintype.card ι • ‖φ‖₊ * M * ‖e‖₊
[PROOFSTEP]
calc
  ‖u e‖₊ = ‖u (∑ i, v.equivFun e i • v i)‖₊ := by rw [v.sum_equivFun]
  _ = ‖∑ i, v.equivFun e i • (u <| v i)‖₊ := by simp [u.map_sum, LinearMap.map_smul]
  _ ≤ ∑ i, ‖v.equivFun e i • (u <| v i)‖₊ := (nnnorm_sum_le _ _)
  _ = ∑ i, ‖v.equivFun e i‖₊ * ‖u (v i)‖₊ := by simp only [nnnorm_smul]
  _ ≤ ∑ i, ‖v.equivFun e i‖₊ * M := by gcongr; apply hu
  _ = (∑ i, ‖v.equivFun e i‖₊) * M := Finset.sum_mul.symm
  _ ≤ Fintype.card ι • (‖φ‖₊ * ‖e‖₊) * M := by
    gcongr
    calc
      ∑ i, ‖v.equivFun e i‖₊ ≤ Fintype.card ι • ‖φ e‖₊ := Pi.sum_nnnorm_apply_le_nnnorm _
      _ ≤ Fintype.card ι • (‖φ‖₊ * ‖e‖₊) := nsmul_le_nsmul_of_le_right (φ.le_op_nnnorm e) _
  _ = Fintype.card ι • ‖φ‖₊ * M * ‖e‖₊ := by simp only [smul_mul_assoc, mul_right_comm]
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ ‖↑u e‖₊ = ‖↑u (∑ i : ι, ↑(equivFun v) e i • ↑v i)‖₊
[PROOFSTEP]
rw [v.sum_equivFun]
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ ‖↑u (∑ i : ι, ↑(equivFun v) e i • ↑v i)‖₊ = ‖∑ i : ι, ↑(equivFun v) e i • ↑u (↑v i)‖₊
[PROOFSTEP]
simp [u.map_sum, LinearMap.map_smul]
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ ∑ i : ι, ‖↑(equivFun v) e i • ↑u (↑v i)‖₊ = ∑ i : ι, ‖↑(equivFun v) e i‖₊ * ‖↑u (↑v i)‖₊
[PROOFSTEP]
simp only [nnnorm_smul]
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ ∑ i : ι, ‖↑(equivFun v) e i‖₊ * ‖↑u (↑v i)‖₊ ≤ ∑ i : ι, ‖↑(equivFun v) e i‖₊ * M
[PROOFSTEP]
gcongr
[GOAL]
case h.bc
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
i✝ : ι
a✝ : i✝ ∈ Finset.univ
⊢ ‖↑u (↑v i✝)‖₊ ≤ M
[PROOFSTEP]
apply hu
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ (∑ i : ι, ‖↑(equivFun v) e i‖₊) * M ≤ Fintype.card ι • (‖φ‖₊ * ‖e‖₊) * M
[PROOFSTEP]
gcongr
[GOAL]
case bc
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ ∑ i : ι, ‖↑(equivFun v) e i‖₊ ≤ Fintype.card ι • (‖φ‖₊ * ‖e‖₊)
[PROOFSTEP]
calc
  ∑ i, ‖v.equivFun e i‖₊ ≤ Fintype.card ι • ‖φ e‖₊ := Pi.sum_nnnorm_apply_le_nnnorm _
  _ ≤ Fintype.card ι • (‖φ‖₊ * ‖e‖₊) := nsmul_le_nsmul_of_le_right (φ.le_op_nnnorm e) _
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ≥0
hu : ∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M
e : E
φ : E →L[𝕜] ι → 𝕜 := ↑(equivFunL v)
⊢ Fintype.card ι • (‖φ‖₊ * ‖e‖₊) * M = Fintype.card ι • ‖φ‖₊ * M * ‖e‖₊
[PROOFSTEP]
simp only [smul_mul_assoc, mul_right_comm]
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Fintype ι
v : Basis ι 𝕜 E
u : E →L[𝕜] F
M : ℝ
hM : 0 ≤ M
hu : ∀ (i : ι), ‖↑u (↑v i)‖ ≤ M
⊢ ‖u‖ ≤ Fintype.card ι • ‖↑(equivFunL v)‖ * M
[PROOFSTEP]
simpa using NNReal.coe_le_coe.mpr (v.op_nnnorm_le ⟨M, hM⟩ hu)
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
[PROOFSTEP]
cases nonempty_fintype ι
[GOAL]
case intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
val✝ : Fintype ι
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
[PROOFSTEP]
exact
  ⟨max (Fintype.card ι • ‖v.equivFunL.toContinuousLinearMap‖₊) 1, zero_lt_one.trans_le (le_max_right _ _),
    fun {u} M hu => (v.op_nnnorm_le M hu).trans <| mul_le_mul_of_nonneg_right (le_max_left _ _) (zero_le M)⟩
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : ι), ‖↑u (↑v i)‖ ≤ M) → ‖u‖ ≤ C * M
[PROOFSTEP]
obtain ⟨C, hC, h⟩ :=
  v.exists_op_nnnorm_le (F := F)
    -- Porting note: used `Subtype.forall'` below
[GOAL]
case intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
C : ℝ≥0
hC : C > 0
h : ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
⊢ ∃ C, C > 0 ∧ ∀ {u : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : ι), ‖↑u (↑v i)‖ ≤ M) → ‖u‖ ≤ C * M
[PROOFSTEP]
refine ⟨C, hC, ?_⟩
[GOAL]
case intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
C : ℝ≥0
hC : C > 0
h : ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
⊢ ∀ {u : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : ι), ‖↑u (↑v i)‖ ≤ M) → ‖u‖ ≤ ↑C * M
[PROOFSTEP]
intro u M hM H
[GOAL]
case intro.intro
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
ι : Type u_1
inst✝ : Finite ι
v : Basis ι 𝕜 E
C : ℝ≥0
hC : C > 0
h : ∀ {u : E →L[𝕜] F} (M : ℝ≥0), (∀ (i : ι), ‖↑u (↑v i)‖₊ ≤ M) → ‖u‖₊ ≤ C * M
u : E →L[𝕜] F
M : ℝ
hM : 0 ≤ M
H : ∀ (i : ι), ‖↑u (↑v i)‖ ≤ M
⊢ ‖u‖ ≤ ↑C * M
[PROOFSTEP]
simpa using h ⟨M, hM⟩ H
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
⊢ SecondCountableTopology (E →L[𝕜] F)
[PROOFSTEP]
set d := FiniteDimensional.finrank 𝕜 E
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
⊢ SecondCountableTopology (E →L[𝕜] F)
[PROOFSTEP]
suffices ∀ ε > (0 : ℝ), ∃ n : (E →L[𝕜] F) → Fin d → ℕ, ∀ f g : E →L[𝕜] F, n f = n g → dist f g ≤ ε from
  Metric.secondCountable_of_countable_discretization fun ε ε_pos => ⟨Fin d → ℕ, by infer_instance, this ε ε_pos⟩
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
this : ∀ (ε : ℝ), ε > 0 → ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
ε : ℝ
ε_pos : ε > 0
⊢ Encodable (Fin d → ℕ)
[PROOFSTEP]
infer_instance
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
⊢ ∀ (ε : ℝ), ε > 0 → ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
intro ε ε_pos
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
obtain ⟨u : ℕ → F, hu : DenseRange u⟩ := exists_dense_seq F
[GOAL]
case intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
let v := FiniteDimensional.finBasis 𝕜 E
[GOAL]
case intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
obtain ⟨C : ℝ, C_pos : 0 < C, hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ i, ‖φ (v i)‖ ≤ M) → ‖φ‖ ≤ C * M⟩ :=
  v.exists_op_norm_le (E := E) (F := F)
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
have h_2C : 0 < 2 * C := mul_pos zero_lt_two C_pos
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
have hε2C : 0 < ε / (2 * C) := div_pos ε_pos h_2C
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
have : ∀ φ : E →L[𝕜] F, ∃ n : Fin d → ℕ, ‖φ - (v.constrL <| u ∘ n)‖ ≤ ε / 2 :=
  by
  intro φ
  have : ∀ i, ∃ n, ‖φ (v i) - u n‖ ≤ ε / (2 * C) :=
    by
    simp only [norm_sub_rev]
    intro i
    have : φ (v i) ∈ closure (range u) := hu _
    obtain ⟨n, hn⟩ : ∃ n, ‖u n - φ (v i)‖ < ε / (2 * C) :=
      by
      rw [mem_closure_iff_nhds_basis Metric.nhds_basis_ball] at this 
      specialize this (ε / (2 * C)) hε2C
      simpa [dist_eq_norm]
    exact ⟨n, le_of_lt hn⟩
  choose n hn using this
  use n
  replace hn : ∀ i : Fin d, ‖(φ - (v.constrL <| u ∘ n)) (v i)‖ ≤ ε / (2 * C)
  · simp [hn]
  have : C * (ε / (2 * C)) = ε / 2 := by
    rw [eq_div_iff (two_ne_zero : (2 : ℝ) ≠ 0), mul_comm, ← mul_assoc, mul_div_cancel' _ (ne_of_gt h_2C)]
  specialize hC (le_of_lt hε2C) hn
  rwa [this] at hC 
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
⊢ ∀ (φ : E →L[𝕜] F), ∃ n, ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
intro φ
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
⊢ ∃ n, ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
have : ∀ i, ∃ n, ‖φ (v i) - u n‖ ≤ ε / (2 * C) :=
  by
  simp only [norm_sub_rev]
  intro i
  have : φ (v i) ∈ closure (range u) := hu _
  obtain ⟨n, hn⟩ : ∃ n, ‖u n - φ (v i)‖ < ε / (2 * C) :=
    by
    rw [mem_closure_iff_nhds_basis Metric.nhds_basis_ball] at this 
    specialize this (ε / (2 * C)) hε2C
    simpa [dist_eq_norm]
  exact ⟨n, le_of_lt hn⟩
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
⊢ ∀ (i : Fin (finrank 𝕜 E)), ∃ n, ‖↑φ (↑v i) - u n‖ ≤ ε / (2 * C)
[PROOFSTEP]
simp only [norm_sub_rev]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
⊢ ∀ (i : Fin (finrank 𝕜 E)), ∃ n, ‖u n - ↑φ (↑(finBasis 𝕜 E) i)‖ ≤ ε / (2 * C)
[PROOFSTEP]
intro i
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
i : Fin (finrank 𝕜 E)
⊢ ∃ n, ‖u n - ↑φ (↑(finBasis 𝕜 E) i)‖ ≤ ε / (2 * C)
[PROOFSTEP]
have : φ (v i) ∈ closure (range u) := hu _
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
i : Fin (finrank 𝕜 E)
this : ↑φ (↑v i) ∈ closure (range u)
⊢ ∃ n, ‖u n - ↑φ (↑(finBasis 𝕜 E) i)‖ ≤ ε / (2 * C)
[PROOFSTEP]
obtain ⟨n, hn⟩ : ∃ n, ‖u n - φ (v i)‖ < ε / (2 * C) :=
  by
  rw [mem_closure_iff_nhds_basis Metric.nhds_basis_ball] at this 
  specialize this (ε / (2 * C)) hε2C
  simpa [dist_eq_norm]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
i : Fin (finrank 𝕜 E)
this : ↑φ (↑v i) ∈ closure (range u)
⊢ ∃ n, ‖u n - ↑φ (↑v i)‖ < ε / (2 * C)
[PROOFSTEP]
rw [mem_closure_iff_nhds_basis Metric.nhds_basis_ball] at this 
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
i : Fin (finrank 𝕜 E)
this : ∀ (i_1 : ℝ), 0 < i_1 → ∃ y, y ∈ range u ∧ y ∈ Metric.ball (↑φ (↑v i)) i_1
⊢ ∃ n, ‖u n - ↑φ (↑v i)‖ < ε / (2 * C)
[PROOFSTEP]
specialize this (ε / (2 * C)) hε2C
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
i : Fin (finrank 𝕜 E)
this : ∃ y, y ∈ range u ∧ y ∈ Metric.ball (↑φ (↑v i)) (ε / (2 * C))
⊢ ∃ n, ‖u n - ↑φ (↑v i)‖ < ε / (2 * C)
[PROOFSTEP]
simpa [dist_eq_norm]
[GOAL]
case intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
i : Fin (finrank 𝕜 E)
this : ↑φ (↑v i) ∈ closure (range u)
n : ℕ
hn : ‖u n - ↑φ (↑v i)‖ < ε / (2 * C)
⊢ ∃ n, ‖u n - ↑φ (↑(finBasis 𝕜 E) i)‖ ≤ ε / (2 * C)
[PROOFSTEP]
exact ⟨n, le_of_lt hn⟩
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
this : ∀ (i : Fin (finrank 𝕜 E)), ∃ n, ‖↑φ (↑v i) - u n‖ ≤ ε / (2 * C)
⊢ ∃ n, ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
choose n hn using this
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
n : Fin (finrank 𝕜 E) → ℕ
hn : ∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i) - u (n i)‖ ≤ ε / (2 * C)
⊢ ∃ n, ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
use n
[GOAL]
case h
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
n : Fin (finrank 𝕜 E) → ℕ
hn : ∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i) - u (n i)‖ ≤ ε / (2 * C)
⊢ ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
replace hn : ∀ i : Fin d, ‖(φ - (v.constrL <| u ∘ n)) (v i)‖ ≤ ε / (2 * C)
[GOAL]
case hn
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
n : Fin (finrank 𝕜 E) → ℕ
hn : ∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i) - u (n i)‖ ≤ ε / (2 * C)
⊢ ∀ (i : Fin d), ‖↑(φ - Basis.constrL v (u ∘ n)) (↑v i)‖ ≤ ε / (2 * C)
[PROOFSTEP]
simp [hn]
[GOAL]
case h
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
n : Fin (finrank 𝕜 E) → ℕ
hn : ∀ (i : Fin d), ‖↑(φ - Basis.constrL v (u ∘ n)) (↑v i)‖ ≤ ε / (2 * C)
⊢ ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
have : C * (ε / (2 * C)) = ε / 2 := by
  rw [eq_div_iff (two_ne_zero : (2 : ℝ) ≠ 0), mul_comm, ← mul_assoc, mul_div_cancel' _ (ne_of_gt h_2C)]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
n : Fin (finrank 𝕜 E) → ℕ
hn : ∀ (i : Fin d), ‖↑(φ - Basis.constrL v (u ∘ n)) (↑v i)‖ ≤ ε / (2 * C)
⊢ C * (ε / (2 * C)) = ε / 2
[PROOFSTEP]
rw [eq_div_iff (two_ne_zero : (2 : ℝ) ≠ 0), mul_comm, ← mul_assoc, mul_div_cancel' _ (ne_of_gt h_2C)]
[GOAL]
case h
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
n : Fin (finrank 𝕜 E) → ℕ
hn : ∀ (i : Fin d), ‖↑(φ - Basis.constrL v (u ∘ n)) (↑v i)‖ ≤ ε / (2 * C)
this : C * (ε / (2 * C)) = ε / 2
⊢ ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
specialize hC (le_of_lt hε2C) hn
[GOAL]
case h
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
φ : E →L[𝕜] F
n : Fin (finrank 𝕜 E) → ℕ
hn : ∀ (i : Fin d), ‖↑(φ - Basis.constrL v (u ∘ n)) (↑v i)‖ ≤ ε / (2 * C)
this : C * (ε / (2 * C)) = ε / 2
hC : ‖φ - Basis.constrL v (u ∘ n)‖ ≤ C * (ε / (2 * C))
⊢ ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
[PROOFSTEP]
rwa [this] at hC 
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
this : ∀ (φ : E →L[𝕜] F), ∃ n, ‖φ - Basis.constrL v (u ∘ n)‖ ≤ ε / 2
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
choose n hn using this
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
n : (E →L[𝕜] F) → Fin d → ℕ
hn : ∀ (φ : E →L[𝕜] F), ‖φ - Basis.constrL v (u ∘ n φ)‖ ≤ ε / 2
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
set Φ := fun φ : E →L[𝕜] F => v.constrL <| u ∘ n φ
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
n : (E →L[𝕜] F) → Fin d → ℕ
hn : ∀ (φ : E →L[𝕜] F), ‖φ - Basis.constrL v (u ∘ n φ)‖ ≤ ε / 2
Φ : (E →L[𝕜] F) → E →L[𝕜] F := fun φ => Basis.constrL v (u ∘ n φ)
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
change ∀ z, dist z (Φ z) ≤ ε / 2 at hn 
[GOAL]
case intro.intro.intro
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
n : (E →L[𝕜] F) → Fin d → ℕ
Φ : (E →L[𝕜] F) → E →L[𝕜] F := fun φ => Basis.constrL v (u ∘ n φ)
hn : ∀ (z : E →L[𝕜] F), dist z (Φ z) ≤ ε / 2
⊢ ∃ n, ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
use n
[GOAL]
case h
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
n : (E →L[𝕜] F) → Fin d → ℕ
Φ : (E →L[𝕜] F) → E →L[𝕜] F := fun φ => Basis.constrL v (u ∘ n φ)
hn : ∀ (z : E →L[𝕜] F), dist z (Φ z) ≤ ε / 2
⊢ ∀ (f g : E →L[𝕜] F), n f = n g → dist f g ≤ ε
[PROOFSTEP]
intro x y hxy
[GOAL]
case h
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
n : (E →L[𝕜] F) → Fin d → ℕ
Φ : (E →L[𝕜] F) → E →L[𝕜] F := fun φ => Basis.constrL v (u ∘ n φ)
hn : ∀ (z : E →L[𝕜] F), dist z (Φ z) ≤ ε / 2
x y : E →L[𝕜] F
hxy : n x = n y
⊢ dist x y ≤ ε
[PROOFSTEP]
calc
  dist x y ≤ dist x (Φ x) + dist (Φ x) y := dist_triangle _ _ _
  _ = dist x (Φ x) + dist y (Φ y) := by simp [hxy, dist_comm]
  _ ≤ ε := by linarith [hn x, hn y]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
n : (E →L[𝕜] F) → Fin d → ℕ
Φ : (E →L[𝕜] F) → E →L[𝕜] F := fun φ => Basis.constrL v (u ∘ n φ)
hn : ∀ (z : E →L[𝕜] F), dist z (Φ z) ≤ ε / 2
x y : E →L[𝕜] F
hxy : n x = n y
⊢ dist x (Φ x) + dist (Φ x) y = dist x (Φ x) + dist y (Φ y)
[PROOFSTEP]
simp [hxy, dist_comm]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
inst✝¹ : FiniteDimensional 𝕜 E
inst✝ : SecondCountableTopology F
d : ℕ := finrank 𝕜 E
ε : ℝ
ε_pos : ε > 0
u : ℕ → F
hu : DenseRange u
v : Basis (Fin (finrank 𝕜 E)) 𝕜 E := finBasis 𝕜 E
C : ℝ
C_pos : 0 < C
hC : ∀ {φ : E →L[𝕜] F} {M : ℝ}, 0 ≤ M → (∀ (i : Fin (finrank 𝕜 E)), ‖↑φ (↑v i)‖ ≤ M) → ‖φ‖ ≤ C * M
h_2C : 0 < 2 * C
hε2C : 0 < ε / (2 * C)
n : (E →L[𝕜] F) → Fin d → ℕ
Φ : (E →L[𝕜] F) → E →L[𝕜] F := fun φ => Basis.constrL v (u ∘ n φ)
hn : ∀ (z : E →L[𝕜] F), dist z (Φ z) ≤ ε / 2
x y : E →L[𝕜] F
hxy : n x = n y
⊢ dist x (Φ x) + dist y (Φ y) ≤ ε
[PROOFSTEP]
linarith [hn x, hn y]
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
⊢ CompleteSpace E
[PROOFSTEP]
set e := ContinuousLinearEquiv.ofFinrankEq (@finrank_fin_fun 𝕜 _ _ (finrank 𝕜 E)).symm
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 :=
  ContinuousLinearEquiv.ofFinrankEq (_ : finrank 𝕜 E = finrank 𝕜 (Fin (finrank 𝕜 E) → 𝕜))
⊢ CompleteSpace E
[PROOFSTEP]
have : UniformEmbedding e.toLinearEquiv.toEquiv.symm := e.symm.uniformEmbedding
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 :=
  ContinuousLinearEquiv.ofFinrankEq (_ : finrank 𝕜 E = finrank 𝕜 (Fin (finrank 𝕜 E) → 𝕜))
this : UniformEmbedding ↑(LinearEquiv.toEquiv e.toLinearEquiv).symm
⊢ CompleteSpace E
[PROOFSTEP]
exact (completeSpace_congr this).1 (by infer_instance)
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 :=
  ContinuousLinearEquiv.ofFinrankEq (_ : finrank 𝕜 E = finrank 𝕜 (Fin (finrank 𝕜 E) → 𝕜))
this : UniformEmbedding ↑(LinearEquiv.toEquiv e.toLinearEquiv).symm
⊢ CompleteSpace (Fin (finrank 𝕜 E) → 𝕜)
[PROOFSTEP]
infer_instance
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
⊢ ∃ x, ‖x‖ ≤ R ∧ ∀ (y : E), y ∈ s → 1 ≤ ‖y - x‖
[PROOFSTEP]
let F := Submodule.span 𝕜 (s : Set E)
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
⊢ ∃ x, ‖x‖ ≤ R ∧ ∀ (y : E), y ∈ s → 1 ≤ ‖y - x‖
[PROOFSTEP]
haveI : FiniteDimensional 𝕜 F :=
  Module.finite_def.2 ((Submodule.fg_top _).2 (Submodule.fg_def.2 ⟨s, Finset.finite_toSet _, rfl⟩))
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this : FiniteDimensional 𝕜 { x // x ∈ F }
⊢ ∃ x, ‖x‖ ≤ R ∧ ∀ (y : E), y ∈ s → 1 ≤ ‖y - x‖
[PROOFSTEP]
have Fclosed : IsClosed (F : Set E) := Submodule.closed_of_finiteDimensional _
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
⊢ ∃ x, ‖x‖ ≤ R ∧ ∀ (y : E), y ∈ s → 1 ≤ ‖y - x‖
[PROOFSTEP]
have : ∃ x, x ∉ F := by
  contrapose! h
  have : (⊤ : Submodule 𝕜 E) = F := by
    ext x
    simp [h]
  have : FiniteDimensional 𝕜 (⊤ : Submodule 𝕜 E) := by rwa [this]
  refine' Module.finite_def.2 ((Submodule.fg_top _).1 (Module.finite_def.1 this))
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
⊢ ∃ x, ¬x ∈ F
[PROOFSTEP]
contrapose! h
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
h : ∀ (x : E), x ∈ Submodule.span 𝕜 ↑s
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
have : (⊤ : Submodule 𝕜 E) = F := by
  ext x
  simp [h]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
h : ∀ (x : E), x ∈ Submodule.span 𝕜 ↑s
⊢ ⊤ = F
[PROOFSTEP]
ext x
[GOAL]
case h
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
h : ∀ (x : E), x ∈ Submodule.span 𝕜 ↑s
x : E
⊢ x ∈ ⊤ ↔ x ∈ F
[PROOFSTEP]
simp [h]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
h : ∀ (x : E), x ∈ Submodule.span 𝕜 ↑s
this : ⊤ = F
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
have : FiniteDimensional 𝕜 (⊤ : Submodule 𝕜 E) := by rwa [this]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
h : ∀ (x : E), x ∈ Submodule.span 𝕜 ↑s
this : ⊤ = F
⊢ FiniteDimensional 𝕜 { x // x ∈ ⊤ }
[PROOFSTEP]
rwa [this]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝¹ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
h : ∀ (x : E), x ∈ Submodule.span 𝕜 ↑s
this✝ : ⊤ = F
this : FiniteDimensional 𝕜 { x // x ∈ ⊤ }
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
refine' Module.finite_def.2 ((Submodule.fg_top _).1 (Module.finite_def.1 this))
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
this : ∃ x, ¬x ∈ F
⊢ ∃ x, ‖x‖ ≤ R ∧ ∀ (y : E), y ∈ s → 1 ≤ ‖y - x‖
[PROOFSTEP]
obtain ⟨x, xR, hx⟩ : ∃ x : E, ‖x‖ ≤ R ∧ ∀ y : E, y ∈ F → 1 ≤ ‖x - y‖ := riesz_lemma_of_norm_lt hc hR Fclosed this
[GOAL]
case intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
this : ∃ x, ¬x ∈ F
x : E
xR : ‖x‖ ≤ R
hx : ∀ (y : E), y ∈ F → 1 ≤ ‖x - y‖
⊢ ∃ x, ‖x‖ ≤ R ∧ ∀ (y : E), y ∈ s → 1 ≤ ‖y - x‖
[PROOFSTEP]
have hx' : ∀ y : E, y ∈ F → 1 ≤ ‖y - x‖ := by
  intro y hy
  rw [← norm_neg]
  simpa using hx y hy
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
this : ∃ x, ¬x ∈ F
x : E
xR : ‖x‖ ≤ R
hx : ∀ (y : E), y ∈ F → 1 ≤ ‖x - y‖
⊢ ∀ (y : E), y ∈ F → 1 ≤ ‖y - x‖
[PROOFSTEP]
intro y hy
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
this : ∃ x, ¬x ∈ F
x : E
xR : ‖x‖ ≤ R
hx : ∀ (y : E), y ∈ F → 1 ≤ ‖x - y‖
y : E
hy : y ∈ F
⊢ 1 ≤ ‖y - x‖
[PROOFSTEP]
rw [← norm_neg]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
this : ∃ x, ¬x ∈ F
x : E
xR : ‖x‖ ≤ R
hx : ∀ (y : E), y ∈ F → 1 ≤ ‖x - y‖
y : E
hy : y ∈ F
⊢ 1 ≤ ‖-(y - x)‖
[PROOFSTEP]
simpa using hx y hy
[GOAL]
case intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F✝ : Type w
inst✝⁷ : NormedAddCommGroup F✝
inst✝⁶ : NormedSpace 𝕜 F✝
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
s : Finset E
F : Submodule 𝕜 E := Submodule.span 𝕜 ↑s
this✝ : FiniteDimensional 𝕜 { x // x ∈ F }
Fclosed : IsClosed ↑F
this : ∃ x, ¬x ∈ F
x : E
xR : ‖x‖ ≤ R
hx : ∀ (y : E), y ∈ F → 1 ≤ ‖x - y‖
hx' : ∀ (y : E), y ∈ F → 1 ≤ ‖y - x‖
⊢ ∃ x, ‖x‖ ≤ R ∧ ∀ (y : E), y ∈ s → 1 ≤ ‖y - x‖
[PROOFSTEP]
exact ⟨x, xR, fun y hy => hx' _ (Submodule.subset_span hy)⟩
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
⊢ ∃ f, (∀ (n : ℕ), ‖f n‖ ≤ R) ∧ ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
[PROOFSTEP]
have : IsSymm E fun x y : E => 1 ≤ ‖x - y‖ := by
  constructor
  intro x y hxy
  rw [← norm_neg]
  simpa
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
⊢ IsSymm E fun x y => 1 ≤ ‖x - y‖
[PROOFSTEP]
constructor
[GOAL]
case symm
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
⊢ ∀ (a b : E), 1 ≤ ‖a - b‖ → 1 ≤ ‖b - a‖
[PROOFSTEP]
intro x y hxy
[GOAL]
case symm
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
x y : E
hxy : 1 ≤ ‖x - y‖
⊢ 1 ≤ ‖y - x‖
[PROOFSTEP]
rw [← norm_neg]
[GOAL]
case symm
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
x y : E
hxy : 1 ≤ ‖x - y‖
⊢ 1 ≤ ‖-(y - x)‖
[PROOFSTEP]
simpa
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
this : IsSymm E fun x y => 1 ≤ ‖x - y‖
⊢ ∃ f, (∀ (n : ℕ), ‖f n‖ ≤ R) ∧ ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
[PROOFSTEP]
apply exists_seq_of_forall_finset_exists' (fun x : E => ‖x‖ ≤ R) fun (x : E) (y : E) => 1 ≤ ‖x - y‖
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
this : IsSymm E fun x y => 1 ≤ ‖x - y‖
⊢ ∀ (s : Finset E), (∀ (x : E), x ∈ s → ‖x‖ ≤ R) → ∃ y, ‖y‖ ≤ R ∧ ∀ (x : E), x ∈ s → 1 ≤ ‖x - y‖
[PROOFSTEP]
rintro s -
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : 𝕜
hc : 1 < ‖c‖
R : ℝ
hR : ‖c‖ < R
h : ¬FiniteDimensional 𝕜 E
this : IsSymm E fun x y => 1 ≤ ‖x - y‖
s : Finset E
⊢ ∃ y, ‖y‖ ≤ R ∧ ∀ (x : E), x ∈ s → 1 ≤ ‖x - y‖
[PROOFSTEP]
exact exists_norm_le_le_norm_sub_of_finset hc hR h s
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ¬FiniteDimensional 𝕜 E
⊢ ∃ R f, 1 < R ∧ (∀ (n : ℕ), ‖f n‖ ≤ R) ∧ ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
[PROOFSTEP]
obtain ⟨c, hc⟩ : ∃ c : 𝕜, 1 < ‖c‖ := NormedField.exists_one_lt_norm 𝕜
[GOAL]
case intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ¬FiniteDimensional 𝕜 E
c : 𝕜
hc : 1 < ‖c‖
⊢ ∃ R f, 1 < R ∧ (∀ (n : ℕ), ‖f n‖ ≤ R) ∧ ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
[PROOFSTEP]
have A : ‖c‖ < ‖c‖ + 1 := by linarith
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ¬FiniteDimensional 𝕜 E
c : 𝕜
hc : 1 < ‖c‖
⊢ ‖c‖ < ‖c‖ + 1
[PROOFSTEP]
linarith
[GOAL]
case intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ¬FiniteDimensional 𝕜 E
c : 𝕜
hc : 1 < ‖c‖
A : ‖c‖ < ‖c‖ + 1
⊢ ∃ R f, 1 < R ∧ (∀ (n : ℕ), ‖f n‖ ≤ R) ∧ ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
[PROOFSTEP]
rcases exists_seq_norm_le_one_le_norm_sub' hc A h with ⟨f, hf⟩
[GOAL]
case intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
h : ¬FiniteDimensional 𝕜 E
c : 𝕜
hc : 1 < ‖c‖
A : ‖c‖ < ‖c‖ + 1
f : ℕ → E
hf : (∀ (n : ℕ), ‖f n‖ ≤ ‖c‖ + 1) ∧ ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
⊢ ∃ R f, 1 < R ∧ (∀ (n : ℕ), ‖f n‖ ≤ R) ∧ ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
[PROOFSTEP]
exact ⟨‖c‖ + 1, f, hc.trans A, hf.1, hf.2⟩
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
by_contra hfin
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
⊢ False
[PROOFSTEP]
obtain ⟨R, f, Rgt, fle, lef⟩ : ∃ (R : ℝ) (f : ℕ → E), 1 < R ∧ (∀ n, ‖f n‖ ≤ R) ∧ ∀ m n, m ≠ n → 1 ≤ ‖f m - f n‖ :=
  exists_seq_norm_le_one_le_norm_sub hfin
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
⊢ False
[PROOFSTEP]
have rRpos : 0 < r / R := div_pos rpos (zero_lt_one.trans Rgt)
[GOAL]
case intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
⊢ False
[PROOFSTEP]
obtain ⟨c, hc⟩ : ∃ c : 𝕜, 0 < ‖c‖ ∧ ‖c‖ < r / R := NormedField.exists_norm_lt _ rRpos
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
⊢ False
[PROOFSTEP]
let g := fun n : ℕ => c • f n
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
⊢ False
[PROOFSTEP]
have A : ∀ n, g n ∈ Metric.closedBall (0 : E) r := by
  intro n
  simp only [norm_smul, dist_zero_right, Metric.mem_closedBall]
  calc
    ‖c‖ * ‖f n‖ ≤ r / R * R := by gcongr; exact hc.2.le; apply fle
    _ = r := by
      field_simp [(zero_lt_one.trans Rgt).ne']
        -- Porting note: moved type ascriptions because of exists_prop changes
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
⊢ ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
[PROOFSTEP]
intro n
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
n : ℕ
⊢ g n ∈ Metric.closedBall 0 r
[PROOFSTEP]
simp only [norm_smul, dist_zero_right, Metric.mem_closedBall]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
n : ℕ
⊢ ‖c‖ * ‖f n‖ ≤ r
[PROOFSTEP]
calc
  ‖c‖ * ‖f n‖ ≤ r / R * R := by gcongr; exact hc.2.le; apply fle
  _ = r := by
    field_simp [(zero_lt_one.trans Rgt).ne']
      -- Porting note: moved type ascriptions because of exists_prop changes
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
n : ℕ
⊢ ‖c‖ * ‖f n‖ ≤ r / R * R
[PROOFSTEP]
gcongr
[GOAL]
case h₁
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
n : ℕ
⊢ ‖c‖ ≤ r / R
case h₂
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
n : ℕ
⊢ ‖f n‖ ≤ R
[PROOFSTEP]
exact hc.2.le
[GOAL]
case h₂
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
n : ℕ
⊢ ‖f n‖ ≤ R
[PROOFSTEP]
apply fle
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
n : ℕ
⊢ r / R * R = r
[PROOFSTEP]
field_simp [(zero_lt_one.trans Rgt).ne']
  -- Porting note: moved type ascriptions because of exists_prop changes
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
⊢ False
[PROOFSTEP]
obtain
  ⟨x : E, _ : x ∈ Metric.closedBall (0 : E) r, φ : ℕ → ℕ, φmono : StrictMono φ, φlim : Tendsto (g ∘ φ) atTop (𝓝 x)⟩ :=
  h.tendsto_subseq A
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
⊢ False
[PROOFSTEP]
have B : CauchySeq (g ∘ φ) := φlim.cauchySeq
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
⊢ False
[PROOFSTEP]
obtain ⟨N, hN⟩ : ∃ N : ℕ, ∀ n : ℕ, N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖ := Metric.cauchySeq_iff'.1 B ‖c‖ hc.1
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
⊢ False
[PROOFSTEP]
apply lt_irrefl ‖c‖
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
⊢ ‖c‖ < ‖c‖
[PROOFSTEP]
calc
  ‖c‖ ≤ dist (g (φ (N + 1))) (g (φ N)) := by
    conv_lhs => rw [← mul_one ‖c‖]
    simp only [dist_eq_norm, ← smul_sub, norm_smul]
    gcongr
    apply lef _ _ (ne_of_gt _)
    exact φmono (Nat.lt_succ_self N)
  _ < ‖c‖ := hN (N + 1) (Nat.le_succ N)
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
⊢ ‖c‖ ≤ dist (g (φ (N + 1))) (g (φ N))
[PROOFSTEP]
conv_lhs => rw [← mul_one ‖c‖]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
| ‖c‖
[PROOFSTEP]
rw [← mul_one ‖c‖]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
| ‖c‖
[PROOFSTEP]
rw [← mul_one ‖c‖]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
| ‖c‖
[PROOFSTEP]
rw [← mul_one ‖c‖]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
⊢ ‖c‖ * 1 ≤ dist (g (φ (N + 1))) (g (φ N))
[PROOFSTEP]
simp only [dist_eq_norm, ← smul_sub, norm_smul]
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
⊢ ‖c‖ * 1 ≤ ‖c‖ * ‖f (φ (N + 1)) - f (φ N)‖
[PROOFSTEP]
gcongr
[GOAL]
case h
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
⊢ 1 ≤ ‖f (φ (N + 1)) - f (φ N)‖
[PROOFSTEP]
apply lef _ _ (ne_of_gt _)
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
h : IsCompact (Metric.closedBall 0 r)
hfin : ¬FiniteDimensional 𝕜 E
R : ℝ
f : ℕ → E
Rgt : 1 < R
fle : ∀ (n : ℕ), ‖f n‖ ≤ R
lef : ∀ (m n : ℕ), m ≠ n → 1 ≤ ‖f m - f n‖
rRpos : 0 < r / R
c : 𝕜
hc : 0 < ‖c‖ ∧ ‖c‖ < r / R
g : ℕ → E := fun n => c • f n
A : ∀ (n : ℕ), g n ∈ Metric.closedBall 0 r
x : E
left✝ : x ∈ Metric.closedBall 0 r
φ : ℕ → ℕ
φmono : StrictMono φ
φlim : Tendsto (g ∘ φ) atTop (𝓝 x)
B : CauchySeq (g ∘ φ)
N : ℕ
hN : ∀ (n : ℕ), N ≤ n → dist ((g ∘ φ) n) ((g ∘ φ) N) < ‖c‖
⊢ φ N < φ (N + 1)
[PROOFSTEP]
exact φmono (Nat.lt_succ_self N)
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
c : E
h : IsCompact (Metric.closedBall c r)
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
apply finiteDimensional_of_isCompact_closed_ball₀ 𝕜 rpos
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
c : E
h : IsCompact (Metric.closedBall c r)
⊢ IsCompact (Metric.closedBall 0 r)
[PROOFSTEP]
have : Continuous fun x => -c + x := continuous_const.add continuous_id
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
r : ℝ
rpos : 0 < r
c : E
h : IsCompact (Metric.closedBall c r)
this : Continuous fun x => -c + x
⊢ IsCompact (Metric.closedBall 0 r)
[PROOFSTEP]
simpa using h.image this
[GOAL]
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
⊢ f = 1 ∨ FiniteDimensional 𝕜 E
[PROOFSTEP]
by_cases h : ∀ x, f x = 1
[GOAL]
case pos
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
h : ∀ (x : E), f x = 1
⊢ f = 1 ∨ FiniteDimensional 𝕜 E
[PROOFSTEP]
apply Or.inl
[GOAL]
case pos.h
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
h : ∀ (x : E), f x = 1
⊢ f = 1
[PROOFSTEP]
ext x
[GOAL]
case pos.h.h
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
h : ∀ (x : E), f x = 1
x : E
⊢ f x = OfNat.ofNat 1 x
[PROOFSTEP]
exact h x
[GOAL]
case neg
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
h : ¬∀ (x : E), f x = 1
⊢ f = 1 ∨ FiniteDimensional 𝕜 E
[PROOFSTEP]
apply Or.inr
[GOAL]
case neg.h
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
h : ¬∀ (x : E), f x = 1
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
push_neg at h 
[GOAL]
case neg.h
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
h : ∃ x, f x ≠ 1
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
obtain ⟨x, hx⟩ : ∃ x, f x ≠ 1 := h
[GOAL]
case neg.h.intro
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
x : E
hx : f x ≠ 1
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
have : Function.mulSupport f ∈ 𝓝 x := h'f.isOpen_mulSupport.mem_nhds hx
[GOAL]
case neg.h.intro
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
x : E
hx : f x ≠ 1
this : Function.mulSupport f ∈ 𝓝 x
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
obtain ⟨r : ℝ, rpos : 0 < r, hr : Metric.closedBall x r ⊆ Function.mulSupport f⟩ :=
  Metric.nhds_basis_closedBall.mem_iff.1 this
[GOAL]
case neg.h.intro.intro.intro
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
x : E
hx : f x ≠ 1
this : Function.mulSupport f ∈ 𝓝 x
r : ℝ
rpos : 0 < r
hr : Metric.closedBall x r ⊆ Function.mulSupport f
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
have : IsCompact (Metric.closedBall x r) :=
  isCompact_of_isClosed_subset hf Metric.isClosed_ball (hr.trans (subset_mulTSupport _))
[GOAL]
case neg.h.intro.intro.intro
𝕜 : Type u
inst✝¹³ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace 𝕜 E
F : Type w
inst✝¹⁰ : NormedAddCommGroup F
inst✝⁹ : NormedSpace 𝕜 F
F' : Type x
inst✝⁸ : AddCommGroup F'
inst✝⁷ : Module 𝕜 F'
inst✝⁶ : TopologicalSpace F'
inst✝⁵ : TopologicalAddGroup F'
inst✝⁴ : ContinuousSMul 𝕜 F'
inst✝³ : CompleteSpace 𝕜
X : Type u_1
inst✝² : TopologicalSpace X
inst✝¹ : One X
inst✝ : T2Space X
f : E → X
hf : HasCompactMulSupport f
h'f : Continuous f
x : E
hx : f x ≠ 1
this✝ : Function.mulSupport f ∈ 𝓝 x
r : ℝ
rpos : 0 < r
hr : Metric.closedBall x r ⊆ Function.mulSupport f
this : IsCompact (Metric.closedBall x r)
⊢ FiniteDimensional 𝕜 E
[PROOFSTEP]
exact finiteDimensional_of_isCompact_closedBall 𝕜 rpos this
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
f : E →ₗ[𝕜] F
hf : LinearMap.ker f = ⊥
inst✝ : FiniteDimensional 𝕜 E
g : E ≃ₗ[𝕜] { x // x ∈ LinearMap.range f } := ofInjective f (_ : Function.Injective ↑f)
src✝ : Embedding (Subtype.val ∘ ↑(ContinuousLinearEquiv.toHomeomorph (toContinuousLinearEquiv g))) :=
  Embedding.comp embedding_subtype_val
    (Homeomorph.embedding (ContinuousLinearEquiv.toHomeomorph (toContinuousLinearEquiv g)))
⊢ IsClosed (range ↑f)
[PROOFSTEP]
haveI := f.finiteDimensional_range
[GOAL]
𝕜 : Type u
inst✝¹¹ : NontriviallyNormedField 𝕜
E : Type v
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace 𝕜 E
F : Type w
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
F' : Type x
inst✝⁶ : AddCommGroup F'
inst✝⁵ : Module 𝕜 F'
inst✝⁴ : TopologicalSpace F'
inst✝³ : TopologicalAddGroup F'
inst✝² : ContinuousSMul 𝕜 F'
inst✝¹ : CompleteSpace 𝕜
f : E →ₗ[𝕜] F
hf : LinearMap.ker f = ⊥
inst✝ : FiniteDimensional 𝕜 E
g : E ≃ₗ[𝕜] { x // x ∈ LinearMap.range f } := ofInjective f (_ : Function.Injective ↑f)
src✝ : Embedding (Subtype.val ∘ ↑(ContinuousLinearEquiv.toHomeomorph (toContinuousLinearEquiv g))) :=
  Embedding.comp embedding_subtype_val
    (Homeomorph.embedding (ContinuousLinearEquiv.toHomeomorph (toContinuousLinearEquiv g)))
this : FiniteDimensional 𝕜 { x // x ∈ LinearMap.range f }
⊢ IsClosed (range ↑f)
[PROOFSTEP]
simpa [LinearMap.range_coe f] using f.range.closed_of_finiteDimensional
[GOAL]
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : E
⊢ IsClosedMap fun x => x • c
[PROOFSTEP]
by_cases hc : c = 0
[GOAL]
case pos
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : E
hc : c = 0
⊢ IsClosedMap fun x => x • c
[PROOFSTEP]
simp_rw [hc, smul_zero]
[GOAL]
case pos
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : E
hc : c = 0
⊢ IsClosedMap fun x => 0
[PROOFSTEP]
exact isClosedMap_const
[GOAL]
case neg
𝕜 : Type u
inst✝¹⁰ : NontriviallyNormedField 𝕜
E : Type v
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
F : Type w
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
F' : Type x
inst✝⁵ : AddCommGroup F'
inst✝⁴ : Module 𝕜 F'
inst✝³ : TopologicalSpace F'
inst✝² : TopologicalAddGroup F'
inst✝¹ : ContinuousSMul 𝕜 F'
inst✝ : CompleteSpace 𝕜
c : E
hc : ¬c = 0
⊢ IsClosedMap fun x => x • c
[PROOFSTEP]
exact (closedEmbedding_smul_left hc).isClosedMap
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
⊢ Continuous
    (↑{ toLinearMap := ↑src✝, invFun := src✝.invFun, left_inv := (_ : Function.LeftInverse src✝.invFun src✝.toFun),
            right_inv := (_ : Function.RightInverse src✝.invFun src✝.toFun) }).toAddHom.toFun
[PROOFSTEP]
refine' continuous_pi fun i => _
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
i : ι
⊢ Continuous fun a =>
    AddHom.toFun
      (↑{ toLinearMap := ↑src✝, invFun := src✝.invFun, left_inv := (_ : Function.LeftInverse src✝.invFun src✝.toFun),
            right_inv := (_ : Function.RightInverse src✝.invFun src✝.toFun) }).toAddHom
      a i
[PROOFSTEP]
exact (ContinuousLinearMap.apply 𝕜 E (Pi.single i 1)).continuous
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
⊢ Continuous
    { toLinearMap := ↑src✝, invFun := src✝.invFun, left_inv := (_ : Function.LeftInverse src✝.invFun src✝.toFun),
        right_inv := (_ : Function.RightInverse src✝.invFun src✝.toFun) }.invFun
[PROOFSTEP]
simp_rw [LinearEquiv.invFun_eq_symm, LinearEquiv.trans_symm, LinearEquiv.symm_symm]
  -- Note: added explicit type and removed `change` that tried to achieve the same
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
⊢ Continuous ↑(LinearEquiv.trans (LinearEquiv.symm (LinearEquiv.piRing 𝕜 E ι 𝕜)) LinearMap.toContinuousLinearMap)
[PROOFSTEP]
refine
  AddMonoidHomClass.continuous_of_bound
    (LinearMap.toContinuousLinearMap.toLinearMap.comp (LinearEquiv.piRing 𝕜 E ι 𝕜).symm.toLinearMap)
    (Fintype.card ι : ℝ) fun g => ?_
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
⊢ ‖↑(LinearMap.comp ↑LinearMap.toContinuousLinearMap ↑(LinearEquiv.symm (LinearEquiv.piRing 𝕜 E ι 𝕜))) g‖ ≤
    ↑(Fintype.card ι) * ‖g‖
[PROOFSTEP]
rw [← nsmul_eq_mul]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
⊢ ‖↑(LinearMap.comp ↑LinearMap.toContinuousLinearMap ↑(LinearEquiv.symm (LinearEquiv.piRing 𝕜 E ι 𝕜))) g‖ ≤
    Fintype.card ι • ‖g‖
[PROOFSTEP]
refine op_norm_le_bound _ (nsmul_nonneg (norm_nonneg g) (Fintype.card ι)) fun t => ?_
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
⊢ ‖↑(↑(LinearMap.comp ↑LinearMap.toContinuousLinearMap ↑(LinearEquiv.symm (LinearEquiv.piRing 𝕜 E ι 𝕜))) g) t‖ ≤
    Fintype.card ι • ‖g‖ * ‖t‖
[PROOFSTEP]
simp_rw [LinearMap.coe_comp, LinearEquiv.coe_toLinearMap, Function.comp_apply, LinearMap.coe_toContinuousLinearMap',
  LinearEquiv.piRing_symm_apply]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
⊢ ‖∑ i : ι, t i • g i‖ ≤ Fintype.card ι • ‖g‖ * ‖t‖
[PROOFSTEP]
apply le_trans (norm_sum_le _ _)
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
⊢ ∑ i : ι, ‖t i • g i‖ ≤ Fintype.card ι • ‖g‖ * ‖t‖
[PROOFSTEP]
rw [smul_mul_assoc]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
⊢ ∑ i : ι, ‖t i • g i‖ ≤ Fintype.card ι • (‖g‖ * ‖t‖)
[PROOFSTEP]
refine' Finset.sum_le_card_nsmul _ _ _ fun i _ => _
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
i : ι
x✝ : i ∈ Finset.univ
⊢ ‖t i • g i‖ ≤ ‖g‖ * ‖t‖
[PROOFSTEP]
rw [norm_smul, mul_comm]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
i : ι
x✝ : i ∈ Finset.univ
⊢ ‖g i‖ * ‖t i‖ ≤ ‖g‖ * ‖t‖
[PROOFSTEP]
gcongr
[GOAL]
case h₁
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
i : ι
x✝ : i ∈ Finset.univ
⊢ ‖g i‖ ≤ ‖g‖
[PROOFSTEP]
apply norm_le_pi_norm
[GOAL]
case h₂
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
ι : Type u_1
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
src✝ : ((ι → 𝕜) →L[𝕜] E) ≃ₗ[𝕜] ι → E :=
  LinearEquiv.trans (LinearEquiv.symm LinearMap.toContinuousLinearMap) (LinearEquiv.piRing 𝕜 E ι 𝕜)
g : ι → E
t : ι → 𝕜
i : ι
x✝ : i ∈ Finset.univ
⊢ ‖t i‖ ≤ ‖t‖
[PROOFSTEP]
apply norm_le_pi_norm
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
s : Set X
⊢ ContinuousOn f s ↔ ∀ (y : E), ContinuousOn (fun x => ↑(f x) y) s
[PROOFSTEP]
refine' ⟨fun h y => (ContinuousLinearMap.apply 𝕜 F y).continuous.comp_continuousOn h, fun h => _⟩
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
s : Set X
h : ∀ (y : E), ContinuousOn (fun x => ↑(f x) y) s
⊢ ContinuousOn f s
[PROOFSTEP]
let d := finrank 𝕜 E
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
s : Set X
h : ∀ (y : E), ContinuousOn (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 E
⊢ ContinuousOn f s
[PROOFSTEP]
have hd : d = finrank 𝕜 (Fin d → 𝕜) := (finrank_fin_fun 𝕜).symm
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
s : Set X
h : ∀ (y : E), ContinuousOn (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 E
hd : d = finrank 𝕜 (Fin d → 𝕜)
⊢ ContinuousOn f s
[PROOFSTEP]
let e₁ : E ≃L[𝕜] Fin d → 𝕜 := ContinuousLinearEquiv.ofFinrankEq hd
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
s : Set X
h : ∀ (y : E), ContinuousOn (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 E
hd : d = finrank 𝕜 (Fin d → 𝕜)
e₁ : E ≃L[𝕜] Fin d → 𝕜 := ContinuousLinearEquiv.ofFinrankEq hd
⊢ ContinuousOn f s
[PROOFSTEP]
let e₂ : (E →L[𝕜] F) ≃L[𝕜] Fin d → F := (e₁.arrowCongr (1 : F ≃L[𝕜] F)).trans (ContinuousLinearEquiv.piRing (Fin d))
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
s : Set X
h : ∀ (y : E), ContinuousOn (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 E
hd : d = finrank 𝕜 (Fin d → 𝕜)
e₁ : E ≃L[𝕜] Fin d → 𝕜 := ContinuousLinearEquiv.ofFinrankEq hd
e₂ : (E →L[𝕜] F) ≃L[𝕜] Fin d → F :=
  ContinuousLinearEquiv.trans (ContinuousLinearEquiv.arrowCongr e₁ 1) (ContinuousLinearEquiv.piRing (Fin d))
⊢ ContinuousOn f s
[PROOFSTEP]
rw [← Function.comp.left_id f, ← e₂.symm_comp_self]
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
s : Set X
h : ∀ (y : E), ContinuousOn (fun x => ↑(f x) y) s
d : ℕ := finrank 𝕜 E
hd : d = finrank 𝕜 (Fin d → 𝕜)
e₁ : E ≃L[𝕜] Fin d → 𝕜 := ContinuousLinearEquiv.ofFinrankEq hd
e₂ : (E →L[𝕜] F) ≃L[𝕜] Fin d → F :=
  ContinuousLinearEquiv.trans (ContinuousLinearEquiv.arrowCongr e₁ 1) (ContinuousLinearEquiv.piRing (Fin d))
⊢ ContinuousOn ((↑(ContinuousLinearEquiv.symm e₂) ∘ ↑e₂) ∘ f) s
[PROOFSTEP]
exact e₂.symm.continuous.comp_continuousOn (continuousOn_pi.mpr fun i => h _)
[GOAL]
𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
⊢ Continuous f ↔ ∀ (y : E), Continuous fun x => ↑(f x) y
[PROOFSTEP]
simp_rw [continuous_iff_continuousOn_univ, continuousOn_clm_apply]
[GOAL]
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : ProperSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
⊢ ProperSpace E
[PROOFSTEP]
set e := ContinuousLinearEquiv.ofFinrankEq (@finrank_fin_fun 𝕜 _ _ (finrank 𝕜 E)).symm
[GOAL]
𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type v
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : ProperSpace 𝕜
inst✝ : FiniteDimensional 𝕜 E
e : E ≃L[𝕜] Fin (finrank 𝕜 E) → 𝕜 :=
  ContinuousLinearEquiv.ofFinrankEq (_ : finrank 𝕜 E = finrank 𝕜 (Fin (finrank 𝕜 E) → 𝕜))
⊢ ProperSpace E
[PROOFSTEP]
exact e.symm.antilipschitz.properSpace e.symm.continuous e.symm.surjective
[GOAL]
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
x : E
s : Set E
hx : x ∈ s
hs : s ≠ univ
⊢ ∃ y, y ∈ frontier s ∧ Metric.infDist x sᶜ = dist x y
[PROOFSTEP]
rcases Metric.exists_mem_closure_infDist_eq_dist (nonempty_compl.2 hs) x with ⟨y, hys, hyd⟩
[GOAL]
case intro.intro
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
x : E
s : Set E
hx : x ∈ s
hs : s ≠ univ
y : E
hys : y ∈ closure sᶜ
hyd : Metric.infDist x sᶜ = dist x y
⊢ ∃ y, y ∈ frontier s ∧ Metric.infDist x sᶜ = dist x y
[PROOFSTEP]
rw [closure_compl] at hys 
[GOAL]
case intro.intro
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
x : E
s : Set E
hx : x ∈ s
hs : s ≠ univ
y : E
hys : y ∈ (interior s)ᶜ
hyd : Metric.infDist x sᶜ = dist x y
⊢ ∃ y, y ∈ frontier s ∧ Metric.infDist x sᶜ = dist x y
[PROOFSTEP]
refine' ⟨y, ⟨Metric.closedBall_infDist_compl_subset_closure hx <| Metric.mem_closedBall.2 <| ge_of_eq _, hys⟩, hyd⟩
[GOAL]
case intro.intro
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
x : E
s : Set E
hx : x ∈ s
hs : s ≠ univ
y : E
hys : y ∈ (interior s)ᶜ
hyd : Metric.infDist x sᶜ = dist x y
⊢ Metric.infDist x sᶜ = dist y x
[PROOFSTEP]
rwa [dist_comm]
[GOAL]
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
⊢ ∃ y, y ∈ frontier K ∧ Metric.infDist x Kᶜ = dist x y
[PROOFSTEP]
obtain hx' | hx' : x ∈ interior K ∪ frontier K :=
  by
  rw [← closure_eq_interior_union_frontier]
  exact subset_closure hx
[GOAL]
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
⊢ x ∈ interior K ∪ frontier K
[PROOFSTEP]
rw [← closure_eq_interior_union_frontier]
[GOAL]
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
⊢ x ∈ closure K
[PROOFSTEP]
exact subset_closure hx
[GOAL]
case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
hx' : x ∈ interior K
⊢ ∃ y, y ∈ frontier K ∧ Metric.infDist x Kᶜ = dist x y
[PROOFSTEP]
rw [mem_interior_iff_mem_nhds, Metric.nhds_basis_closedBall.mem_iff] at hx' 
[GOAL]
case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
hx' : ∃ i, 0 < i ∧ Metric.closedBall x i ⊆ K
⊢ ∃ y, y ∈ frontier K ∧ Metric.infDist x Kᶜ = dist x y
[PROOFSTEP]
rcases hx' with ⟨r, hr₀, hrK⟩
[GOAL]
case inl.intro.intro
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
r : ℝ
hr₀ : 0 < r
hrK : Metric.closedBall x r ⊆ K
⊢ ∃ y, y ∈ frontier K ∧ Metric.infDist x Kᶜ = dist x y
[PROOFSTEP]
have : FiniteDimensional ℝ E :=
  finiteDimensional_of_isCompact_closedBall ℝ hr₀ (isCompact_of_isClosed_subset hK Metric.isClosed_ball hrK)
[GOAL]
case inl.intro.intro
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
r : ℝ
hr₀ : 0 < r
hrK : Metric.closedBall x r ⊆ K
this : FiniteDimensional ℝ E
⊢ ∃ y, y ∈ frontier K ∧ Metric.infDist x Kᶜ = dist x y
[PROOFSTEP]
exact exists_mem_frontier_infDist_compl_eq_dist hx hK.ne_univ
[GOAL]
case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
hx' : x ∈ frontier K
⊢ ∃ y, y ∈ frontier K ∧ Metric.infDist x Kᶜ = dist x y
[PROOFSTEP]
refine' ⟨x, hx', _⟩
[GOAL]
case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
hx' : x ∈ frontier K
⊢ Metric.infDist x Kᶜ = dist x x
[PROOFSTEP]
rw [frontier_eq_closure_inter_closure] at hx' 
[GOAL]
case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
x : E
K : Set E
hK : IsCompact K
hx : x ∈ K
hx' : x ∈ closure K ∩ closure Kᶜ
⊢ Metric.infDist x Kᶜ = dist x x
[PROOFSTEP]
rw [Metric.infDist_zero_of_mem_closure hx'.2, dist_self]
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
⊢ (Summable fun x => ‖f x‖) ↔ Summable f
[PROOFSTEP]
refine'
  ⟨summable_of_summable_norm, fun hf => _⟩
    -- First we use a finite basis to reduce the problem to the case `E = Fin N → ℝ`
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
hf : Summable f
⊢ Summable fun x => ‖f x‖
[PROOFSTEP]
suffices ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
  by
  obtain v := finBasis ℝ E
  set e := v.equivFunL
  have : Summable fun x => ‖e (f x)‖ := this (e.summable.2 hf)
  refine' summable_of_norm_bounded _ (this.mul_left ↑‖(e.symm : (Fin (finrank ℝ E) → ℝ) →L[ℝ] E)‖₊) fun i => _
  simpa using (e.symm : (Fin (finrank ℝ E) → ℝ) →L[ℝ] E).le_op_norm (e <| f i)
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
hf : Summable f
this : ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
⊢ Summable fun x => ‖f x‖
[PROOFSTEP]
obtain v := finBasis ℝ E
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
hf : Summable f
this : ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
v : Basis (Fin (finrank ℝ E)) ℝ E
⊢ Summable fun x => ‖f x‖
[PROOFSTEP]
set e := v.equivFunL
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
hf : Summable f
this : ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
v : Basis (Fin (finrank ℝ E)) ℝ E
e : E ≃L[ℝ] Fin (finrank ℝ E) → ℝ := Basis.equivFunL v
⊢ Summable fun x => ‖f x‖
[PROOFSTEP]
have : Summable fun x => ‖e (f x)‖ := this (e.summable.2 hf)
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
hf : Summable f
this✝ : ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
v : Basis (Fin (finrank ℝ E)) ℝ E
e : E ≃L[ℝ] Fin (finrank ℝ E) → ℝ := Basis.equivFunL v
this : Summable fun x => ‖↑e (f x)‖
⊢ Summable fun x => ‖f x‖
[PROOFSTEP]
refine' summable_of_norm_bounded _ (this.mul_left ↑‖(e.symm : (Fin (finrank ℝ E) → ℝ) →L[ℝ] E)‖₊) fun i => _
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
hf : Summable f
this✝ : ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
v : Basis (Fin (finrank ℝ E)) ℝ E
e : E ≃L[ℝ] Fin (finrank ℝ E) → ℝ := Basis.equivFunL v
this : Summable fun x => ‖↑e (f x)‖
i : α
⊢ ‖‖f i‖‖ ≤ ↑‖↑(ContinuousLinearEquiv.symm e)‖₊ * ‖↑e (f i)‖
[PROOFSTEP]
simpa using (e.symm : (Fin (finrank ℝ E) → ℝ) →L[ℝ] E).le_op_norm (e <| f i)
[GOAL]
α : Type u_1
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : FiniteDimensional ℝ E
f : α → E
hf : Summable f
⊢ ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
[PROOFSTEP]
clear! E
[GOAL]
α : Type u_1
⊢ ∀ {N : ℕ} {g : α → Fin N → ℝ}, Summable g → Summable fun x => ‖g x‖
[PROOFSTEP]
intro N g hg
[GOAL]
α : Type u_1
N : ℕ
g : α → Fin N → ℝ
hg : Summable g
⊢ Summable fun x => ‖g x‖
[PROOFSTEP]
have : ∀ i, Summable fun x => ‖g x i‖ := fun i => (Pi.summable.1 hg i).abs
[GOAL]
α : Type u_1
N : ℕ
g : α → Fin N → ℝ
hg : Summable g
this : ∀ (i : Fin N), Summable fun x => ‖g x i‖
⊢ Summable fun x => ‖g x‖
[PROOFSTEP]
refine' summable_of_norm_bounded _ (summable_sum fun i (_ : i ∈ Finset.univ) => this i) fun x => _
[GOAL]
α : Type u_1
N : ℕ
g : α → Fin N → ℝ
hg : Summable g
this : ∀ (i : Fin N), Summable fun x => ‖g x i‖
x : α
⊢ ‖‖g x‖‖ ≤ ∑ i : Fin N, ‖g x i‖
[PROOFSTEP]
rw [norm_norm, pi_norm_le_iff_of_nonneg]
[GOAL]
α : Type u_1
N : ℕ
g : α → Fin N → ℝ
hg : Summable g
this : ∀ (i : Fin N), Summable fun x => ‖g x i‖
x : α
⊢ ∀ (i : Fin N), ‖g x i‖ ≤ ∑ i : Fin N, ‖g x i‖
[PROOFSTEP]
refine' fun i => Finset.single_le_sum (f := fun i => ‖g x i‖) (fun i _ => _) (Finset.mem_univ i)
[GOAL]
α : Type u_1
N : ℕ
g : α → Fin N → ℝ
hg : Summable g
this : ∀ (i : Fin N), Summable fun x => ‖g x i‖
x : α
i✝ i : Fin N
x✝ : i ∈ Finset.univ
⊢ 0 ≤ (fun i => ‖g x i‖) i
[PROOFSTEP]
exact norm_nonneg (g x i)
[GOAL]
α : Type u_1
N : ℕ
g : α → Fin N → ℝ
hg : Summable g
this : ∀ (i : Fin N), Summable fun x => ‖g x i‖
x : α
⊢ 0 ≤ ∑ i : Fin N, ‖g x i‖
[PROOFSTEP]
exact Finset.sum_nonneg fun _ _ => norm_nonneg _
