Skip to content

Commit dab4b77

Browse files
committed
feat: selfadjointness for comparable elements in a star ordered ring (leanprover-community#40513)
1 parent f1ceb73 commit dab4b77

1 file changed

Lines changed: 18 additions & 2 deletions

File tree

Mathlib/Algebra/Order/Star/Basic.lean

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ section NonUnitalSemiring
171171

172172
variable [NonUnitalSemiring R] [PartialOrder R] [StarRing R] [StarOrderedRing R]
173173

174-
lemma IsSelfAdjoint.mono {x y : R} (h : x ≤ y) (hx : IsSelfAdjoint x) : IsSelfAdjoint y := by
174+
lemma IsSelfAdjoint.of_ge {x y : R} (h : x ≤ y) (hx : IsSelfAdjoint x) : IsSelfAdjoint y := by
175175
rw [StarOrderedRing.le_iff] at h
176176
obtain ⟨d, hd, rfl⟩ := h
177177
rw [IsSelfAdjoint, star_add, hx.star_eq]
@@ -180,9 +180,11 @@ lemma IsSelfAdjoint.mono {x y : R} (h : x ≤ y) (hx : IsSelfAdjoint x) : IsSelf
180180
rintro - ⟨s, rfl⟩
181181
simp
182182

183+
@[deprecated (since := "2026-06-12")] alias IsSelfAdjoint.mono := IsSelfAdjoint.of_ge
184+
183185
@[aesop 10% apply, grind ←]
184186
lemma IsSelfAdjoint.of_nonneg {x : R} (hx : 0 ≤ x) : IsSelfAdjoint x :=
185-
.mono hx <| .zero R
187+
.of_ge hx <| .zero R
186188

187189
/-- An alias of `IsSelfAdjoint.of_nonneg` for use with dot notation. -/
188190
alias LE.le.isSelfAdjoint := IsSelfAdjoint.of_nonneg
@@ -204,6 +206,7 @@ protected theorem IsSelfAdjoint.mul_self_nonneg {a : R} (ha : IsSelfAdjoint a) :
204206
simpa [ha.star_eq] using star_mul_self_nonneg a
205207

206208
/-- A star projection is non-negative in a star-ordered ring. -/
209+
@[grind →, aesop safe forward (rule_sets := [CStarAlgebra])]
207210
theorem IsStarProjection.nonneg {p : R} (hp : IsStarProjection p) : 0 ≤ p :=
208211
hp.isIdempotentElem ▸ hp.isSelfAdjoint.mul_self_nonneg
209212

@@ -316,6 +319,19 @@ theorem mul_star_self_pos [Nontrivial R] {x : R} (hx : IsRegular x) : 0 < x * st
316319

317320
end NonUnitalSemiring
318321

322+
section NonUnitalRing
323+
324+
variable [NonUnitalRing R] [PartialOrder R] [StarRing R] [StarOrderedRing R]
325+
326+
lemma IsSelfAdjoint.iff_of_le {a b : R} (hab : a ≤ b) :
327+
IsSelfAdjoint a ↔ IsSelfAdjoint b := by
328+
replace hab := (sub_nonneg.mpr hab).isSelfAdjoint
329+
aesop (add simp IsSelfAdjoint)
330+
331+
alias ⟨_, IsSelfAdjoint.of_le⟩ := IsSelfAdjoint.iff_of_le
332+
333+
end NonUnitalRing
334+
319335
section Semiring
320336
variable [Semiring R] [PartialOrder R] [StarRing R] [StarOrderedRing R]
321337

0 commit comments

Comments
 (0)