Skip to content
Closed
Show file tree
Hide file tree
Changes from 103 commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
6b644aa
added lemmas
themathqueen Jun 15, 2025
ad04c9b
fixes
themathqueen Jun 15, 2025
c1c066a
generalizing results
themathqueen Jun 16, 2025
d4fb18b
fixing styles
themathqueen Jun 18, 2025
8dd253d
moved results
themathqueen Jun 18, 2025
b5e62f2
Update Mathlib/Algebra/Ring/Idempotent.lean
themathqueen Jun 19, 2025
457590e
update
themathqueen Jun 19, 2025
f3285f5
removed variables
themathqueen Jun 19, 2025
f46a4c1
namespace
themathqueen Jun 19, 2025
7730bf4
added suggestions
themathqueen Jun 20, 2025
808e839
Update Projection.lean
themathqueen Jun 25, 2025
d36fd7b
Merge branch 'master' into proj
themathqueen Jun 29, 2025
fe3e044
Update Projection.lean
themathqueen Jun 30, 2025
23f11aa
update
themathqueen Jun 30, 2025
80bd03c
added LinearMap.IsProj.bot
themathqueen Jun 30, 2025
0c7a20f
star projection sub
themathqueen Jul 5, 2025
80895b4
remove useless lemmas
themathqueen Jul 5, 2025
01e09ea
golf
themathqueen Jul 5, 2025
5e17e24
doc
themathqueen Jul 5, 2025
08b3890
Update Projection.lean
themathqueen Jul 5, 2025
9920520
Update Projection.lean
themathqueen Jul 5, 2025
2dd9dac
Update Idempotent.lean
themathqueen Jul 5, 2025
bbf2c7d
added p le q when pq eq p
themathqueen Jul 7, 2025
8167d8c
Merge remote-tracking branch 'origin/proj' into starProjection_le
themathqueen Jul 13, 2025
366ccda
Update StarProjection.lean
themathqueen Jul 14, 2025
226f700
fix
themathqueen Jul 14, 2025
b934036
fix
themathqueen Jul 14, 2025
ab9b5a6
Merge remote-tracking branch 'origin/proj' into starProjection_le
themathqueen Jul 14, 2025
9aeeeab
Merge branch 'master' into starProjection_le
themathqueen Jul 14, 2025
480399f
starProjection_le_starProjection_iff
themathqueen Jul 14, 2025
5a000e6
Merge branch 'master' into starProjection_le
themathqueen Jul 28, 2025
eff69dd
Merge branch 'master' into starProjection_le
themathqueen Jul 28, 2025
0ae9522
generalize
themathqueen Jul 28, 2025
96e4587
fix
themathqueen Jul 28, 2025
d10d4c3
move stuff around
themathqueen Jul 28, 2025
cdfacb9
remove open
themathqueen Jul 28, 2025
eb3d5c0
remove
themathqueen Jul 28, 2025
21b524f
update
themathqueen Jul 28, 2025
2b99c5f
Update Adjoint.lean
themathqueen Jul 28, 2025
cca2075
Update Positive.lean
themathqueen Jul 28, 2025
0d11f99
Update StarProjection.lean
themathqueen Jul 28, 2025
b02edbd
mem_range_iff_norm
themathqueen Jul 29, 2025
6f4460d
remove and add suggestion
themathqueen Jul 29, 2025
2fe1328
remove submodule.
themathqueen Jul 29, 2025
70eca0e
Merge branch 'master' into proj
themathqueen Jul 29, 2025
34f984b
Apply suggestions from code review
themathqueen Jul 29, 2025
af27f08
add suggestion
themathqueen Jul 29, 2025
78632d8
suggestions
themathqueen Jul 29, 2025
633c078
fix
themathqueen Jul 29, 2025
5a70cfd
definition
themathqueen Jul 29, 2025
7b10b34
add stuff
themathqueen Jul 29, 2025
198b010
ext
themathqueen Jul 29, 2025
37f4b38
longfile
themathqueen Jul 29, 2025
524c096
Merge branch 'proj' into starProjection_le
themathqueen Jul 29, 2025
3beff72
remove noncomm import
themathqueen Jul 30, 2025
e929001
remove other import
themathqueen Jul 30, 2025
312b43a
Merge branch 'proj' into starProjection_le
themathqueen Jul 30, 2025
e249499
Merge remote-tracking branch 'origin/starproj_mem_range_iff' into sta…
themathqueen Jul 30, 2025
0ed9f6c
Merge branch 'master' into starProjection_le
themathqueen Jul 30, 2025
e251cdc
Update Positive.lean
themathqueen Jul 30, 2025
3811eae
Merge branch 'master' into starProjection_le
themathqueen Jul 31, 2025
e86dae6
fix
themathqueen Jul 31, 2025
4507a1c
fix
themathqueen Jul 31, 2025
2f9c355
fix
themathqueen Jul 31, 2025
0545283
update
themathqueen Jul 31, 2025
b73864b
Merge branch 'master' into symmetric_proj
themathqueen Aug 4, 2025
f14908b
Update Symmetric.lean
themathqueen Aug 4, 2025
a389d18
merge conflict
themathqueen Aug 4, 2025
abe071e
update
themathqueen Aug 4, 2025
9cb649b
ispositive.of_issymmetricproj
themathqueen Aug 4, 2025
674216f
Merge branch 'symmetric_proj' into starProjection_le
themathqueen Aug 4, 2025
2f34812
issymmetricproj instead of isstarproj
themathqueen Aug 4, 2025
72c0c7e
fix
themathqueen Aug 5, 2025
daa736e
revert commit
themathqueen Aug 5, 2025
8dbd9f4
merge master
themathqueen Aug 8, 2025
d61284b
merge conflict
themathqueen Aug 8, 2025
b912d9c
Merge branch 'symmetric_proj' into starProjection_le
themathqueen Aug 8, 2025
316f412
update name
themathqueen Aug 10, 2025
880bcce
turn into structure
themathqueen Aug 10, 2025
c2809a2
fix
themathqueen Aug 10, 2025
5901617
update
themathqueen Aug 10, 2025
51bac68
Merge branch 'symmetric_proj' into starProjection_le
themathqueen Aug 10, 2025
6fb2fc3
fix
themathqueen Aug 10, 2025
b980d4f
fix
themathqueen Aug 10, 2025
776c491
Update Mathlib/Analysis/InnerProductSpace/Projection/Basic.lean
themathqueen Aug 19, 2025
0534ff3
Update Mathlib/Analysis/InnerProductSpace/Projection/Basic.lean
themathqueen Aug 19, 2025
214b701
Merge branch 'master' into symmetric_proj
themathqueen Aug 19, 2025
04fcc38
deprecate ispositive ofisstarprojection
themathqueen Aug 19, 2025
bbe3ef2
LinearMap.isStarProjection_iff_isSymmetricProjection
themathqueen Aug 19, 2025
618f0f4
Merge branch 'symmetric_proj' into starProjection_le
themathqueen Aug 19, 2025
574816f
Merge branch 'master' into starProjection_le
themathqueen Aug 19, 2025
c98cc9b
Update Positive.lean
themathqueen Aug 19, 2025
9489d71
Update Positive.lean
themathqueen Aug 19, 2025
3ceeebf
move
themathqueen Aug 19, 2025
4e744a2
fix
themathqueen Aug 19, 2025
16bb624
fix
themathqueen Aug 19, 2025
3e6f9ae
Merge branch 'master' into starProjection_le
themathqueen Aug 25, 2025
aa9bc1d
comp_eq_left versions
themathqueen Aug 25, 2025
51ab78b
Merge branch 'master' into starProjection_le
themathqueen Aug 28, 2025
2c5cb59
starprojection_inj
themathqueen Aug 28, 2025
df78e88
all_goals instead of <;>
themathqueen Sep 6, 2025
3d4d810
range_le_range instead of comp
themathqueen Sep 23, 2025
0fa9299
Merge branch 'master' into starProjection_le
themathqueen Sep 23, 2025
23b35a8
Merge branch 'master' into starProjection_le
themathqueen Oct 17, 2025
ca83f20
move and delete, etc
themathqueen Oct 17, 2025
d26da30
fix
themathqueen Oct 17, 2025
ebed7f8
cleanup
themathqueen Oct 17, 2025
14cf5b3
more cleanup
themathqueen Oct 17, 2025
8d88dbf
change to range_le_range instead of comps
themathqueen Oct 17, 2025
e94a8b7
fix
themathqueen Oct 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions Mathlib/Analysis/InnerProductSpace/Positive.lean
Original file line number Diff line number Diff line change
Expand Up @@ -207,8 +207,36 @@ theorem IsPositive.of_isSymmetricProjection {p : E →ₗ[𝕜] E} (hp : p.IsSym
@[deprecated (since := "19-08-2025")]
alias IsPositive.of_isStarProjection := IsPositive.of_isSymmetricProjection

theorem IsSymmetricProjection.le_iff_range_le_range {p q : E →ₗ[𝕜] E}
(hp : p.IsSymmetricProjection) (hq : q.IsSymmetricProjection) : p ≤ q ↔ range p ≤ range q := by
refine ⟨fun ⟨h1, h2⟩ a ha => ?_, fun hpq ↦
IsPositive.of_isSymmetricProjection <| hp.sub_of_comp_eq_right hq <|
hq.isIdempotentElem.comp_eq_right_iff _|>.mpr hpq⟩
specialize h2 a
have hh {T : E →ₗ[𝕜] E} (hT : T.IsSymmetricProjection) : RCLike.re ⟪T a, a⟫_𝕜 = ‖T a‖ ^ 2 := by
conv_lhs => rw [← hT.isIdempotentElem]
rw [Module.End.mul_apply, hT.isSymmetric]
exact inner_self_eq_norm_sq _
simp_rw [sub_apply, inner_sub_left, map_sub, hh hq, hh hp,
hp.isIdempotentElem.mem_range_iff.mp ha, sub_nonneg, sq_le_sq, abs_norm] at h2
obtain ⟨U, _, rfl⟩ := isSymmetricProjection_iff_eq_coe_starProjection.mp hq
simpa [Submodule.starProjection_coe_eq_isCompl_projection] using
U.mem_iff_norm_starProjection _ |>.mpr <| le_antisymm (U.norm_starProjection_apply_le a) h2

end LinearMap

theorem Submodule.coe_starProjection_le_coe_starProjection_iff {U V : Submodule 𝕜 E}
[U.HasOrthogonalProjection] [V.HasOrthogonalProjection] :
U.starProjection.toLinearMap ≤ V.starProjection ↔ U ≤ V := by
simp_rw [isSymmetricProjection_starProjection _ |>.le_iff_range_le_range <|
isSymmetricProjection_starProjection _, starProjection_coe_eq_isCompl_projection,
IsCompl.projection_range]

theorem Submodule.starProjection_inj {U V : Submodule 𝕜 E}
[U.HasOrthogonalProjection] [V.HasOrthogonalProjection] :
U.starProjection = V.starProjection ↔ U = V := by
simp only [le_antisymm_iff, ← Submodule.coe_starProjection_le_coe_starProjection_iff, ← coe_inj]

namespace ContinuousLinearMap

variable [CompleteSpace E] [CompleteSpace F]
Expand Down Expand Up @@ -441,4 +469,10 @@ theorem IsIdempotentElem.TFAE {p : E →L[𝕜] E} (hp : IsIdempotentElem p) :
(ContinuousLinearMap.IsIdempotentElem.isSymmetric_iff_orthogonal_range hp)
tfae_finish

/-- `U.starProjection ≤ V.starProjection` iff `U ≤ V`. -/
theorem _root_.Submodule.starProjection_le_starProjection_iff {U V : Submodule 𝕜 E}
[U.HasOrthogonalProjection] [V.HasOrthogonalProjection] :
U.starProjection ≤ V.starProjection ↔ U ≤ V :=
coe_le_coe_iff (𝕜 := 𝕜) (E := E) _ _ |>.eq ▸ U.coe_starProjection_le_coe_starProjection_iff

end ContinuousLinearMap
13 changes: 13 additions & 0 deletions Mathlib/Analysis/InnerProductSpace/Symmetric.lean
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,19 @@ theorem IsSymmetricProjection.ext_iff {S T : E →ₗ[𝕜] E}

alias ⟨_, IsSymmetricProjection.ext⟩ := IsSymmetricProjection.ext_iff

theorem IsSymmetricProjection.sub_of_comp_eq_right {p q : E →ₗ[𝕜] E}
(hp : p.IsSymmetricProjection) (hq : q.IsSymmetricProjection) (hqp : q ∘ₗ p = p) :
(q - p).IsSymmetricProjection := by
refine ⟨hp.isIdempotentElem.sub hq.isIdempotentElem (LinearMap.ext fun x => ext_inner_left 𝕜
fun y => ?_) hqp, hq.isSymmetric.sub hp.isSymmetric⟩
simp_rw [Module.End.mul_apply, ← hp.isSymmetric _, ← hq.isSymmetric _, ← comp_apply, hqp]

theorem IsSymmetricProjection.sub_of_comp_eq_left {p q : E →ₗ[𝕜] E}
(hp : p.IsSymmetricProjection) (hq : q.IsSymmetricProjection) (hpq : p ∘ₗ q = p) :
(q - p).IsSymmetricProjection := by
refine hp.sub_of_comp_eq_right hq <| LinearMap.ext fun x => ext_inner_left 𝕜 fun y => ?_
simp_rw [comp_apply, ← hq.isSymmetric _, ← hp.isSymmetric _, ← comp_apply, hpq]
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@j-loreaux, should we just have one version of this instead as well?
IsSymmetricProjection.sub_of_range_le_range: range p ≤ range q implies q - p is a symmetric projection?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed it, let me know if I should change it back


end LinearMap

open ContinuousLinearMap in
Expand Down