@@ -5,6 +5,7 @@ Authors: Scott Morrison
5
5
-/
6
6
import Mathlib.Algebra.Group.Submonoid.Operations
7
7
import Mathlib.Algebra.Star.SelfAdjoint
8
+ import Mathlib.Algebra.Star.StarRingHom
8
9
import Mathlib.Algebra.Regular.Basic
9
10
10
11
#align_import algebra.star.order from "leanprover-community/mathlib" @"31c24aa72e7b3e5ed97a8412470e904f82b81004"
@@ -50,7 +51,8 @@ convenient to declare instances using `StarOrderedRing.of_nonneg_iff`.
50
51
51
52
Porting note: dropped an unneeded assumption
52
53
`add_le_add_left : ∀ {x y}, x ≤ y → ∀ z, z + x ≤ z + y` -/
53
- class StarOrderedRing (R : Type u) [NonUnitalSemiring R] [PartialOrder R] [StarRing R] : Prop where
54
+ class StarOrderedRing (R : Type u) [NonUnitalSemiring R] [PartialOrder R]
55
+ [StarRing R] : Prop where
54
56
/-- characterization of the order in terms of the `StarRing` structure. -/
55
57
le_iff :
56
58
∀ x y : R, x ≤ y ↔ ∃ p, p ∈ AddSubmonoid.closure (Set.range fun s => star s * s) ∧ y = x + p
@@ -320,38 +322,34 @@ end StarModule
320
322
321
323
section OrderClass
322
324
323
- variable {F R S : Type *} [NonUnitalSemiring R] [PartialOrder R] [StarRing R] [StarOrderedRing R]
325
+ variable {F R S : Type *} [NonUnitalSemiring R] [PartialOrder R] [StarRing R]
326
+ [StarOrderedRing R]
324
327
variable [NonUnitalSemiring S] [PartialOrder S] [StarRing S] [StarOrderedRing S]
325
328
326
329
-- we prove this auxiliary lemma in order to avoid duplicating the proof twice below.
327
- lemma NonUnitalRingHom .map_le_map_of_map_star (f : R →ₙ+* S) (hf : ∀ r, f (star r) = star (f r))
328
- {x y : R} (hxy : x ≤ y) : f x ≤ f y := by
330
+ lemma NonUnitalStarRingHom .map_le_map_of_map_star (f : R →⋆ ₙ+* S) {x y : R} (hxy : x ≤ y) :
331
+ f x ≤ f y := by
329
332
rw [StarOrderedRing.le_iff] at hxy ⊢
330
333
obtain ⟨p, hp, rfl⟩ := hxy
331
334
refine ⟨f p, ?_, map_add f _ _⟩
332
335
induction hp using AddSubmonoid.closure_induction'
336
+ have hf : ∀ r, f (star r) = star (f r) := map_star _
333
337
all_goals aesop
334
338
335
- instance (priority := 100 ) StarRingHomClass.instOrderHomClass [FunLike F R S] [StarHomClass F R S]
336
- [NonUnitalRingHomClass F R S] : OrderHomClass F R S where
337
- map_rel f := (f : R →ₙ+* S).map_le_map_of_map_star (map_star f)
339
+ instance (priority := 100 ) StarRingHomClass.instOrderHomClass [FunLike F R S]
340
+ [NonUnitalSemiring R] [StarRing R] [StarOrderedRing R] [NonUnitalSemiring S]
341
+ [StarRing S] [StarOrderedRing S] [NonUnitalRingHomClass F R S]
342
+ [NonUnitalStarRingHomClass F R S] : OrderHomClass F R S where
343
+ map_rel f := (f : R →⋆ₙ+* S).map_le_map_of_map_star
338
344
339
- -- This doesn't require any module structure, but the only morphism we currently have bundling
340
- -- `star` is `starAlgHom`. So we have to build the inverse morphism by hand.
341
- instance (priority := 100 ) StarRingHomClass.instOrderIsoClass [EquivLike F R S] [StarHomClass F R S]
342
- [RingEquivClass F R S] : OrderIsoClass F R S where
345
+ instance (priority := 100 ) StarRingEquivClass.instOrderIsoClass [EquivLike F R S]
346
+ [StarRingEquivClass F R S] : OrderIsoClass F R S where
343
347
map_le_map_iff f x y := by
344
348
refine ⟨fun h ↦ ?_, map_rel f⟩
345
- let f_inv : S →ₙ+* R :=
346
- { toFun := EquivLike.inv f
347
- map_mul' := fun _ _ ↦ EmbeddingLike.injective f <| by simp
348
- map_add' := fun _ _ ↦ EmbeddingLike.injective f <| by simp
349
- map_zero' := EmbeddingLike.injective f <| by simp }
350
- have f_inv_star (s : S) : f_inv (star s) = star (f_inv s) := EmbeddingLike.injective f <| by
351
- simp only [map_star f, show ∀ s, f (f_inv s) = s from EquivLike.apply_inv_apply f]
349
+ let f_inv : S →⋆ₙ+* R := (f : R ≃⋆+* S).symm
352
350
have f_inv_f (r : R) : f_inv (f r) = r := EquivLike.inv_apply_apply f r
353
351
rw [← f_inv_f x, ← f_inv_f y]
354
- exact f_inv .map_le_map_of_map_star f_inv_star h
352
+ exact NonUnitalStarRingHom .map_le_map_of_map_star f_inv h
355
353
356
354
end OrderClass
357
355
0 commit comments