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_1
E✝ : Type u_2
F : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup E✝
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : InnerProductSpace 𝕜 E✝
inst✝⁷ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁶ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝¹ : HasOrthogonalProjection p
inst✝ : HasOrthogonalProjection (Submodule.map f.toLinearMap p)
x : E
⊢ f ↑((orthogonalProjection p) x) = ↑((orthogonalProjection (Submodule.map f.toLinearMap p)) (f x))
state_after: case refine_1
𝕜 : Type u_1
E✝ : Type u_2
F : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup E✝
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : InnerProductSpace 𝕜 E✝
inst✝⁷ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁶ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝¹ : HasOrthogonalProjection p
inst✝ : HasOrthogonalProjection (Submodule.map f.toLinearMap p)
x : E
⊢ f ↑((orthogonalProjection p) x) ∈ Submodule.map f.toLinearMap p

case refine_2
𝕜 : Type u_1
E✝ : Type u_2
F : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup E✝
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : InnerProductSpace 𝕜 E✝
inst✝⁷ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁶ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝¹ : HasOrthogonalProjection p
inst✝ : HasOrthogonalProjection (Submodule.map f.toLinearMap p)
x : E
y : E'
hy : y ∈ Submodule.map f.toLinearMap p
⊢ ⟪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_1
E✝ : Type u_2
F : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup E✝
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : InnerProductSpace 𝕜 E✝
inst✝⁷ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁶ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝¹ : HasOrthogonalProjection p
inst✝ : HasOrthogonalProjection (Submodule.map f.toLinearMap p)
x : E
y : E'
hy : y ∈ Submodule.map f.toLinearMap p
⊢ ⟪f x - f ↑((orthogonalProjection p) x), y⟫_𝕜 = 0
state_after: case refine_2.intro.intro
𝕜 : Type u_1
E✝ : Type u_2
F : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup E✝
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : InnerProductSpace 𝕜 E✝
inst✝⁷ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁶ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝¹ : HasOrthogonalProjection p
inst✝ : HasOrthogonalProjection (Submodule.map f.toLinearMap p)
x x' : E
hx' : x' ∈ ↑p
⊢ ⟪f x - f ↑((orthogonalProjection p) x), f x'⟫_𝕜 = 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_1
E✝ : Type u_2
F : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup E✝
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : InnerProductSpace 𝕜 E✝
inst✝⁷ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁶ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝¹ : HasOrthogonalProjection p
inst✝ : HasOrthogonalProjection (Submodule.map f.toLinearMap p)
x x' : E
hx' : x' ∈ ↑p
⊢ ⟪f x - f ↑((orthogonalProjection p) x), f x'⟫_𝕜 = 0
state_after: no goals

tactic: refine Submodule.apply_coe_mem_map _ _
state_before: case refine_1
𝕜 : Type u_1
E✝ : Type u_2
F : Type u_3
inst✝¹¹ : _root_.RCLike 𝕜
inst✝¹⁰ : NormedAddCommGroup E✝
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : InnerProductSpace 𝕜 E✝
inst✝⁷ : InnerProductSpace ℝ F
K : Submodule 𝕜 E✝
inst✝⁶ : HasOrthogonalProjection K
E : Type u_4
E' : Type u_5
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup E'
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 E'
f : E →ₗᵢ[𝕜] E'
p : Submodule 𝕜 E
inst✝¹ : HasOrthogonalProjection p
inst✝ : HasOrthogonalProjection (Submodule.map f.toLinearMap p)
x : E
⊢ f ↑((orthogonalProjection p) x) ∈ Submodule.map f.toLinearMap p
state_after: no goals