Theorem: norm_eq_iInf_iff_real_inner_eq_zero
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: intro h
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
⊢ (‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖) → ∀ (w : F), w ∈ K → inner (u - v) w = 0

tactic: have h : ∀ w ∈ K, ⟪u - v, w - v⟫_ℝ ≤ 0 := by
  rwa [norm_eq_iInf_iff_real_inner_le_zero] at h
  exacts [K.convex, hv]
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
⊢ ∀ (w : F), w ∈ K → inner (u - v) w = 0

tactic: intro w hw
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ ∀ (w : F), w ∈ K → inner (u - v) w = 0

tactic: have le : ⟪u - v, w⟫_ℝ ≤ 0
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
⊢ inner (u - v) w = 0

tactic: let w' := w + v
state_before: case le
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
⊢ inner (u - v) w ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: have : w' ∈ K := Submodule.add_mem _ hw hv
state_before: case le
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
w' : F := w + v
⊢ inner (u - v) w ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: have h₁ := h w' this
state_before: case le
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
w' : F := w + v
this : w' ∈ K
⊢ inner (u - v) w ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: have h₂ : w' - v = w
state_before: case le
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
w' : F := w + v
this : w' ∈ K
h₁ : inner (u - v) (w' - v) ≤ 0
⊢ inner (u - v) w ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: simp only [add_neg_cancel_right, sub_eq_add_neg]
state_before: case h₂
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
w' : F := w + v
this : w' ∈ K
h₁ : inner (u - v) (w' - v) ≤ 0
⊢ w' - v = w

case le
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
w' : F := w + v
this : w' ∈ K
h₁ : inner (u - v) (w' - v) ≤ 0
h₂ : w' - v = w
⊢ inner (u - v) w ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: rw [h₂] at h₁
state_before: case le
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
w' : F := w + v
this : w' ∈ K
h₁ : inner (u - v) (w' - v) ≤ 0
h₂ : w' - v = w
⊢ inner (u - v) w ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: exact h₁
state_before: case le
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
w' : F := w + v
this : w' ∈ K
h₁ : inner (u - v) w ≤ 0
h₂ : w' - v = w
⊢ inner (u - v) w ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: have ge : ⟪u - v, w⟫_ℝ ≥ 0
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w = 0

tactic: let w'' := -w + v
state_before: case ge
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
⊢ inner (u - v) w ≥ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: have : w'' ∈ K := Submodule.add_mem _ (Submodule.neg_mem _ hw) hv
state_before: case ge
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
w'' : F := -w + v
⊢ inner (u - v) w ≥ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: have h₁ := h w'' this
state_before: case ge
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
w'' : F := -w + v
this : w'' ∈ K
⊢ inner (u - v) w ≥ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: have h₂ : w'' - v = -w
state_before: case ge
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
w'' : F := -w + v
this : w'' ∈ K
h₁ : inner (u - v) (w'' - v) ≤ 0
⊢ inner (u - v) w ≥ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: simp only [neg_inj, add_neg_cancel_right, sub_eq_add_neg]
state_before: case h₂
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
w'' : F := -w + v
this : w'' ∈ K
h₁ : inner (u - v) (w'' - v) ≤ 0
⊢ w'' - v = -w

case ge
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
w'' : F := -w + v
this : w'' ∈ K
h₁ : inner (u - v) (w'' - v) ≤ 0
h₂ : w'' - v = -w
⊢ inner (u - v) w ≥ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: rw [h₂, inner_neg_right] at h₁
state_before: case ge
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
w'' : F := -w + v
this : w'' ∈ K
h₁ : inner (u - v) (w'' - v) ≤ 0
h₂ : w'' - v = -w
⊢ inner (u - v) w ≥ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: linarith
state_before: case ge
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
w'' : F := -w + v
this : w'' ∈ K
h₁ : -inner (u - v) w ≤ 0
h₂ : w'' - v = -w
⊢ inner (u - v) w ≥ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: exact le_antisymm le ge
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h✝ : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
h : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
w : F
hw : w ∈ K
le : inner (u - v) w ≤ 0
ge : inner (u - v) w ≥ 0
⊢ inner (u - v) w = 0

tactic: rwa [norm_eq_iInf_iff_real_inner_le_zero] at h
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
⊢ ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0

tactic: exacts [K.convex, hv]
state_before: case h
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
⊢ Convex ℝ ↑K

case hv
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖
⊢ v ∈ ↑K

tactic: intro h
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
⊢ (∀ (w : F), w ∈ K → inner (u - v) w = 0) → ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: have : ∀ w ∈ K, ⟪u - v, w - v⟫_ℝ ≤ 0
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
⊢ ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: intro w hw
state_before: case this
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
⊢ ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: let w' := w - v
state_before: case this
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
w : F
hw : w ∈ K
⊢ inner (u - v) (w - v) ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: have : w' ∈ K := Submodule.sub_mem _ hw hv
state_before: case this
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
w : F
hw : w ∈ K
w' : F := w - v
⊢ inner (u - v) (w - v) ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: have h₁ := h w' this
state_before: case this
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
w : F
hw : w ∈ K
w' : F := w - v
this : w' ∈ K
⊢ inner (u - v) (w - v) ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: exact le_of_eq h₁
state_before: case this
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
w : F
hw : w ∈ K
w' : F := w - v
this : w' ∈ K
h₁ : inner (u - v) w' = 0
⊢ inner (u - v) (w - v) ≤ 0

𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: rwa [norm_eq_iInf_iff_real_inner_le_zero]
state_before: 𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ ‖u - v‖ = ⨅ (w : ↑↑K), ‖u - ↑w‖

tactic: exacts [Submodule.convex _, hv]
state_before: case h
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ Convex ℝ ↑K

case hv
𝕜 : Type ?u.254322
E : Type ?u.254325
F : Type u_1
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 E
inst✝ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E
K : Submodule ℝ F
u v : F
hv : v ∈ K
h : ∀ (w : F), w ∈ K → inner (u - v) w = 0
this : ∀ (w : F), w ∈ K → inner (u - v) (w - v) ≤ 0
⊢ v ∈ ↑K