Theorem: LinearIsometry.map_orthogonalProjection
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: refine' (eq_orthogonalProjection_of_mem_of_inner_eq_zero _ fun y hy => _).symm
state_before: 𝕜 : Type u_3
E✝ : Type ?u.522362
F : Type ?u.522365
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E✝
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : InnerProductSpace 𝕜 E✝
inst✝⁶ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁵ : CompleteSpace { x // x ∈ K }
E : Type u_1
E' : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ p }
x : E
⊢ ↑f ↑(↑(orthogonalProjection p) x) = ↑(↑(orthogonalProjection (Submodule.map f.toLinearMap p)) (↑f x))

tactic: refine' Submodule.apply_coe_mem_map _ _
state_before: case refine'_1
𝕜 : Type u_3
E✝ : Type ?u.522362
F : Type ?u.522365
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E✝
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : InnerProductSpace 𝕜 E✝
inst✝⁶ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁵ : CompleteSpace { x // x ∈ K }
E : Type u_1
E' : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ p }
x : E
⊢ ↑f ↑(↑(orthogonalProjection p) x) ∈ Submodule.map f.toLinearMap p

case refine'_2
𝕜 : Type u_3
E✝ : Type ?u.522362
F : Type ?u.522365
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E✝
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : InnerProductSpace 𝕜 E✝
inst✝⁶ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁵ : CompleteSpace { x // x ∈ K }
E : Type u_1
E' : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ p }
x : E
y : (fun x => E') ↑(↑(orthogonalProjection p) x)
hy : y ∈ Submodule.map f.toLinearMap p
⊢ inner (↑f x - ↑f ↑(↑(orthogonalProjection p) x)) y = 0

tactic: rcases hy with ⟨x', hx', rfl : f x' = y⟩
state_before: case refine'_2
𝕜 : Type u_3
E✝ : Type ?u.522362
F : Type ?u.522365
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E✝
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : InnerProductSpace 𝕜 E✝
inst✝⁶ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁵ : CompleteSpace { x // x ∈ K }
E : Type u_1
E' : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ p }
x : E
y : (fun x => E') ↑(↑(orthogonalProjection p) x)
hy : y ∈ Submodule.map f.toLinearMap p
⊢ inner (↑f x - ↑f ↑(↑(orthogonalProjection p) x)) y = 0

tactic: rw [← f.map_sub, f.inner_map_map, orthogonalProjection_inner_eq_zero x x' hx']
state_before: case refine'_2.intro.intro
𝕜 : Type u_3
E✝ : Type ?u.522362
F : Type ?u.522365
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E✝
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : InnerProductSpace 𝕜 E✝
inst✝⁶ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁵ : CompleteSpace { x // x ∈ K }
E : Type u_1
E' : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ p }
x x' : E
hx' : x' ∈ ↑p
⊢ inner (↑f x - ↑f ↑(↑(orthogonalProjection p) x)) (↑f x') = 0