@@ -265,16 +265,22 @@ def centralizer (s : Set A) : StarSubalgebra R A where
265
265
theorem coe_centralizer (s : Set A) : (centralizer R s : Set A) = (s ∪ star s).centralizer :=
266
266
rfl
267
267
268
- theorem mem_centralizer_iff {s : Set A} {z : A} :
268
+ open Set in
269
+ nonrec theorem mem_centralizer_iff {s : Set A} {z : A} :
269
270
z ∈ centralizer R s ↔ ∀ g ∈ s, g * z = z * g ∧ star g * z = z * star g := by
270
- show (∀ g ∈ s ∪ star s, g * z = z * g) ↔ ∀ g ∈ s, g * z = z * g ∧ star g * z = z * star g
271
- simp only [Set.mem_union, or_imp, forall_and, and_congr_right_iff]
272
- exact fun _ =>
273
- ⟨fun hz a ha => hz _ (Set.star_mem_star.mpr ha), fun hz a ha => star_star a ▸ hz _ ha⟩
271
+ simp [← SetLike.mem_coe, centralizer_union, ← image_star, mem_centralizer_iff, forall_and]
274
272
275
273
theorem centralizer_le (s t : Set A) (h : s ⊆ t) : centralizer R t ≤ centralizer R s :=
276
274
Set.centralizer_subset (Set.union_subset_union h <| Set.preimage_mono h)
277
275
276
+ theorem centralizer_toSubalgebra (s : Set A) :
277
+ (centralizer R s).toSubalgebra = Subalgebra.centralizer R (s ∪ star s):=
278
+ rfl
279
+
280
+ theorem coe_centralizer_centralizer (s : Set A) :
281
+ (centralizer R (centralizer R s : Set A)) = (s ∪ star s).centralizer.centralizer := by
282
+ rw [coe_centralizer, StarMemClass.star_coe_eq, Set.union_self, coe_centralizer]
283
+
278
284
end Centralizer
279
285
280
286
end StarSubalgebra
@@ -503,28 +509,29 @@ theorem adjoin_induction_subtype {s : Set A} {p : adjoin R s → Prop} (a : adjo
503
509
504
510
variable (R)
505
511
512
+ lemma adjoin_le_centralizer_centralizer (s : Set A) :
513
+ adjoin R s ≤ centralizer R (centralizer R s) := by
514
+ rw [← toSubalgebra_le_iff, centralizer_toSubalgebra, adjoin_toSubalgebra]
515
+ convert Algebra.adjoin_le_centralizer_centralizer R (s ∪ star s)
516
+ rw [StarMemClass.star_coe_eq]
517
+ simp
518
+
506
519
/-- If all elements of `s : Set A` commute pairwise and also commute pairwise with elements of
507
520
`star s`, then `StarSubalgebra.adjoin R s` is commutative. See note [reducible non-instances]. -/
508
521
abbrev adjoinCommSemiringOfComm {s : Set A}
509
- (hcomm : ∀ a : A, a ∈ s → ∀ b : A, b ∈ s → a * b = b * a)
510
- (hcomm_star : ∀ a : A, a ∈ s → ∀ b : A, b ∈ s → a * star b = star b * a) :
522
+ (hcomm : ∀ a ∈ s, ∀ b ∈ s, a * b = b * a)
523
+ (hcomm_star : ∀ a ∈ s, ∀ b ∈ s, a * star b = star b * a) :
511
524
CommSemiring (adjoin R s) :=
512
- { (adjoin R s).toSubalgebra.toSemiring with
513
- mul_comm := by
514
- rintro ⟨x, hx⟩ ⟨y, hy⟩
515
- ext
516
- simp only [MulMemClass.mk_mul_mk]
517
- rw [← mem_toSubalgebra, adjoin_toSubalgebra] at hx hy
518
- letI : CommSemiring (Algebra.adjoin R (s ∪ star s)) :=
519
- Algebra.adjoinCommSemiringOfComm R
520
- (by
521
- intro a ha b hb
522
- cases' ha with ha ha <;> cases' hb with hb hb
523
- · exact hcomm _ ha _ hb
524
- · exact star_star b ▸ hcomm_star _ ha _ hb
525
- · exact star_star a ▸ (hcomm_star _ hb _ ha).symm
526
- · simpa only [star_mul, star_star] using congr_arg star (hcomm _ hb _ ha))
527
- exact congr_arg Subtype.val (mul_comm (⟨x, hx⟩ : Algebra.adjoin R (s ∪ star s)) ⟨y, hy⟩) }
525
+ { (adjoin R s).toSemiring with
526
+ mul_comm := fun ⟨_, h₁⟩ ⟨_, h₂⟩ ↦ by
527
+ have hcomm : ∀ a ∈ s ∪ star s, ∀ b ∈ s ∪ star s, a * b = b * a := fun a ha b hb ↦
528
+ Set.union_star_self_comm (fun _ ha _ hb ↦ hcomm _ hb _ ha)
529
+ (fun _ ha _ hb ↦ hcomm_star _ hb _ ha) b hb a ha
530
+ have := adjoin_le_centralizer_centralizer R s
531
+ apply this at h₁
532
+ apply this at h₂
533
+ rw [← SetLike.mem_coe, coe_centralizer_centralizer] at h₁ h₂
534
+ exact Subtype.ext <| Set.centralizer_centralizer_comm_of_comm hcomm _ h₁ _ h₂ }
528
535
529
536
/-- If all elements of `s : Set A` commute pairwise and also commute pairwise with elements of
530
537
`star s`, then `StarSubalgebra.adjoin R s` is commutative. See note [reducible non-instances]. -/
0 commit comments