@@ -156,10 +156,15 @@ theorem IsCompl.projection_apply (hpq : IsCompl p q) (x : E) :
156156 hpq.projection x = p.linearProjOfIsCompl q hpq x :=
157157 rfl
158158
159+ @[simp]
160+ theorem coe_linearProjOfIsCompl_apply (hpq : IsCompl p q) (x : E) :
161+ (p.linearProjOfIsCompl q hpq x : E) = hpq.projection x :=
162+ rfl
163+
159164@[simp]
160165theorem IsCompl.projection_apply_mem (hpq : IsCompl p q) (x : E) :
161- hpq.projection x ∈ p := by
162- simp [projection]
166+ hpq.projection x ∈ p :=
167+ SetLike.coe_mem _
163168
164169@[simp]
165170theorem linearProjOfIsCompl_apply_left (h : IsCompl p q) (x : p) :
@@ -188,7 +193,7 @@ theorem linearProjOfIsCompl_apply_eq_zero_iff (h : IsCompl p q) {x : E} :
188193@[simp]
189194theorem IsCompl.projection_apply_eq_zero_iff (hpq : IsCompl p q) {x : E} :
190195 hpq.projection x = 0 ↔ x ∈ q := by
191- simp [projection, linearProjOfIsCompl_apply_eq_zero_iff hpq ]
196+ simp [projection, -coe_linearProjOfIsCompl_apply ]
192197
193198theorem linearProjOfIsCompl_apply_right' (h : IsCompl p q) (x : E) (hx : x ∈ q) :
194199 linearProjOfIsCompl p q h x = 0 :=
@@ -212,14 +217,18 @@ theorem linearProjOfIsCompl_comp_subtype (h : IsCompl p q) :
212217 (linearProjOfIsCompl p q h).comp p.subtype = LinearMap.id :=
213218 LinearMap.ext <| linearProjOfIsCompl_apply_left h
214219
215- theorem linearProjOfIsCompl_idempotent (h : IsCompl p q) (x : E) :
216- linearProjOfIsCompl p q h (linearProjOfIsCompl p q h x) = linearProjOfIsCompl p q h x :=
220+ theorem linearProjOfIsCompl_isCompl_projection (h : IsCompl p q) (x : E) :
221+ linearProjOfIsCompl p q h (h.projection x) = linearProjOfIsCompl p q h x :=
217222 linearProjOfIsCompl_apply_left h _
218223
224+ @ [deprecated (since := "2025-07-29" )] alias linearProjOfIsCompl_idempotent :=
225+ linearProjOfIsCompl_isCompl_projection
226+
219227/-- The linear projection onto a subspace along its complement is an idempotent. -/
228+ @[simp]
220229theorem IsCompl.projection_isIdempotentElem (hpq : IsCompl p q) :
221- IsIdempotentElem hpq.projection := by
222- simp [projection, IsIdempotentElem, LinearMap.ext_iff]
230+ IsIdempotentElem hpq.projection :=
231+ LinearMap.ext fun _ ↦ congr($(linearProjOfIsCompl_isCompl_projection hpq _))
223232
224233theorem existsUnique_add_of_isCompl_prod (hc : IsCompl p q) (x : E) :
225234 ∃! u : p × q, (u.fst : E) + u.snd = x :=
@@ -230,28 +239,32 @@ theorem existsUnique_add_of_isCompl (hc : IsCompl p q) (x : E) :
230239 let ⟨u, hu₁, hu₂⟩ := existsUnique_add_of_isCompl_prod hc x
231240 ⟨u.1 , u.2 , hu₁, fun r s hrs => Prod.eq_iff_fst_eq_snd_eq.1 (hu₂ ⟨r, s⟩ hrs)⟩
232241
233- theorem linearProjOfIsCompl_add_linearProjOfIsCompl_eq_self (hpq : IsCompl p q) (x : E) :
234- (p.linearProjOfIsCompl q hpq x + q.linearProjOfIsCompl p hpq.symm x : E) = x := by
235- dsimp only [linearProjOfIsCompl]
242+ theorem IsCompl.projection_add_projection_eq_self (hpq : IsCompl p q) (x : E) :
243+ hpq.projection x + hpq.symm.projection x = x := by
244+ dsimp only [IsCompl.projection, linearProjOfIsCompl]
236245 rw [← prodComm_trans_prodEquivOfIsCompl _ _ hpq]
237246 exact (prodEquivOfIsCompl _ _ hpq).apply_symm_apply x
238247
248+ @ [deprecated (since := "2025-07-29" )] alias linearProjOfIsCompl_add_linearProjOfIsCompl_eq_self :=
249+ IsCompl.projection_add_projection_eq_self
250+
239251@ [deprecated (since := "2025-07-11" )] alias linear_proj_add_linearProjOfIsCompl_eq_self :=
240252 linearProjOfIsCompl_add_linearProjOfIsCompl_eq_self
241253
242- lemma linearProjOfIsCompl_eq_self_sub_linearProjOfIsCompl (hpq : IsCompl p q) (x : E) :
243- (q.linearProjOfIsCompl p hpq.symm x : E) = x - (p.linearProjOfIsCompl q hpq x : E) := by
244- rw [eq_sub_iff_add_eq, linearProjOfIsCompl_add_linearProjOfIsCompl_eq_self ]
254+ lemma IsCompl.projection_eq_self_sub_projection (hpq : IsCompl p q) (x : E) :
255+ hpq.symm.projection x = x - hpq.projection x := by
256+ rw [eq_sub_iff_add_eq, projection_add_projection_eq_self ]
245257
246- /-- The projection to `p` along `q` of `x` equals `x` if and only if `x ∈ p`. -/
247- @[simp] lemma linearProjOfIsCompl_eq_self_iff (hpq : IsCompl p q) (x : E) :
248- (p.linearProjOfIsCompl q hpq x : E) = x ↔ x ∈ p := by
249- rw [eq_comm, ← sub_eq_zero, ← linearProjOfIsCompl_eq_self_sub_linearProjOfIsCompl,
250- coe_eq_zero, linearProjOfIsCompl_apply_eq_zero_iff]
258+ @ [deprecated (since := "2025-07-29" )] alias linearProjOfIsCompl_eq_self_sub_linearProjOfIsCompl :=
259+ IsCompl.projection_eq_self_sub_projection
251260
261+ /-- The projection to `p` along `q` of `x` equals `x` if and only if `x ∈ p`. -/
252262@[simp] lemma IsCompl.projection_eq_self_iff (hpq : IsCompl p q) (x : E) :
253263 hpq.projection x = x ↔ x ∈ p := by
254- rw [hpq.projection_apply, linearProjOfIsCompl_eq_self_iff hpq]
264+ rw [eq_comm, ← sub_eq_zero, ← projection_eq_self_sub_projection, projection_apply_eq_zero_iff]
265+
266+ @ [deprecated (since := "2025-07-29" )] alias linearProjOfIsCompl_eq_self_iff :=
267+ IsCompl.projection_eq_self_iff
255268
256269end Submodule
257270
@@ -346,8 +359,8 @@ theorem range_ofIsCompl (hpq : IsCompl p q) {φ : p →ₗ[R] F} {ψ : q →ₗ[
346359 all_goals rintro - ⟨x, rfl⟩; exact ⟨x, by simp⟩
347360
348361theorem ofIsCompl_subtype_zero_eq (hpq : IsCompl p q) :
349- ofIsCompl hpq p.subtype 0 = p.subtype ∘ₗ p.linearProjOfIsCompl q hpq := by
350- simp [ofIsCompl_eq_add]
362+ ofIsCompl hpq p.subtype 0 = hpq.projection := by
363+ simp [ofIsCompl_eq_add, IsCompl.projection ]
351364
352365theorem ofIsCompl_symm (hpq : IsCompl p q) {φ : p →ₗ[R] F} {ψ : q →ₗ[R] F} :
353366 ofIsCompl hpq.symm ψ φ = ofIsCompl hpq φ ψ := by
0 commit comments