Theorem: exists_norm_le_le_norm_sub_of_finset
File: Mathlib/Analysis/NormedSpace/FiniteDimension.lean

tactic: let F := Submodule.span 𝕜 (s : Set E)
state_before: 𝕜 : 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‖

tactic: haveI : FiniteDimensional 𝕜 F :=
  Module.finite_def.2
    ((Submodule.fg_top _).2 (Submodule.fg_def.2 ⟨s, Finset.finite_toSet _, rfl⟩))
state_before: 𝕜 : 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‖

tactic: have Fclosed : IsClosed (F : Set E) := Submodule.closed_of_finiteDimensional _
state_before: 𝕜 : 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‖

tactic: 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))
state_before: 𝕜 : 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‖

tactic: obtain ⟨x, xR, hx⟩ : ∃ x : E, ‖x‖ ≤ R ∧ ∀ y : E, y ∈ F → 1 ≤ ‖x - y‖ :=
  riesz_lemma_of_norm_lt hc hR Fclosed this
state_before: 𝕜 : 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‖

tactic: have hx' : ∀ y : E, y ∈ F → 1 ≤ ‖y - x‖ := by
  intro y hy
  rw [← norm_neg]
  simpa using hx y hy
state_before: 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‖

tactic: exact ⟨x, xR, fun y hy => hx' _ (Submodule.subset_span hy)⟩
state_before: 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‖

tactic: contrapose! h
state_before: 𝕜 : 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

tactic: have : (⊤ : Submodule 𝕜 E) = F := by
  ext x
  simp [h]
state_before: 𝕜 : 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

tactic: have : FiniteDimensional 𝕜 (⊤ : Submodule 𝕜 E) := by rwa [this]
state_before: 𝕜 : 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

tactic: refine' Module.finite_def.2 ((Submodule.fg_top _).1 (Module.finite_def.1 this))
state_before: 𝕜 : 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

tactic: ext x
state_before: 𝕜 : 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

tactic: simp [h]
state_before: 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

tactic: rwa [this]
state_before: 𝕜 : 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 ∈ ⊤ }

tactic: intro y hy
state_before: 𝕜 : 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‖

tactic: rw [← norm_neg]
state_before: 𝕜 : 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‖

tactic: simpa using hx y hy
state_before: 𝕜 : 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)‖