Theorem: Submodule.orthogonal_orthogonal
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: ext v
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
⊢ Kᗮᗮ = K

tactic: constructor
state_before: case h
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ v ∈ Kᗮᗮ ↔ v ∈ K

tactic: obtain ⟨y, hy, z, hz, rfl⟩ := K.exists_sum_mem_mem_orthogonal v
state_before: case h.mp
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ v ∈ Kᗮᗮ → v ∈ K

tactic: intro hv
state_before: case h.mp.intro.intro.intro.intro
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
y : E
hy : y ∈ K
z : E
hz : z ∈ Kᗮ
⊢ y + z ∈ Kᗮᗮ → y + z ∈ K

tactic: have hz' : z = 0 := by
  have hyz : ⟪z, y⟫ = 0 := by simp [hz y hy, inner_eq_zero_symm]
  simpa [inner_add_right, hyz] using hv z hz
state_before: case h.mp.intro.intro.intro.intro
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
y : E
hy : y ∈ K
z : E
hz : z ∈ Kᗮ
hv : y + z ∈ Kᗮᗮ
⊢ y + z ∈ K

tactic: simp [hy, hz']
state_before: case h.mp.intro.intro.intro.intro
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
y : E
hy : y ∈ K
z : E
hz : z ∈ Kᗮ
hv : y + z ∈ Kᗮᗮ
hz' : z = 0
⊢ y + z ∈ K

tactic: have hyz : ⟪z, y⟫ = 0 := by simp [hz y hy, inner_eq_zero_symm]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
y : E
hy : y ∈ K
z : E
hz : z ∈ Kᗮ
hv : y + z ∈ Kᗮᗮ
⊢ z = 0

tactic: simpa [inner_add_right, hyz] using hv z hz
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
y : E
hy : y ∈ K
z : E
hz : z ∈ Kᗮ
hv : y + z ∈ Kᗮᗮ
hyz : inner z y = 0
⊢ z = 0

tactic: simp [hz y hy, inner_eq_zero_symm]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
y : E
hy : y ∈ K
z : E
hz : z ∈ Kᗮ
hv : y + z ∈ Kᗮᗮ
⊢ inner z y = 0

tactic: intro hv w hw
state_before: case h.mpr
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ v ∈ K → v ∈ Kᗮᗮ

tactic: rw [inner_eq_zero_symm]
state_before: case h.mpr
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
hv : v ∈ K
w : E
hw : w ∈ Kᗮ
⊢ inner w v = 0

tactic: exact hw v hv
state_before: case h.mpr
𝕜 : Type u_2
E : Type u_1
F : Type ?u.776857
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
hv : v ∈ K
w : E
hw : w ∈ Kᗮ
⊢ inner v w = 0