@@ -410,7 +410,9 @@ end Subalgebra
410
410
/-! ### The star subalgebra generated by a set -/
411
411
412
412
413
- namespace StarSubalgebra
413
+ namespace StarAlgebra
414
+
415
+ open StarSubalgebra
414
416
415
417
variable {F R A B : Type *} [CommSemiring R] [StarRing R]
416
418
variable [Semiring A] [Algebra R A] [StarRing A] [StarModule R A]
@@ -424,35 +426,35 @@ def adjoin (s : Set A) : StarSubalgebra R A :=
424
426
star_mem' := fun hx => by
425
427
rwa [Subalgebra.mem_carrier, ← Subalgebra.mem_star_iff, Subalgebra.star_adjoin_comm,
426
428
Set.union_star, star_star, Set.union_comm] }
427
- #align star_subalgebra.adjoin StarSubalgebra .adjoin
429
+ #align star_subalgebra.adjoin StarAlgebra .adjoin
428
430
429
431
theorem adjoin_eq_starClosure_adjoin (s : Set A) : adjoin R s = (Algebra.adjoin R s).starClosure :=
430
432
toSubalgebra_injective <|
431
433
show Algebra.adjoin R (s ∪ star s) = Algebra.adjoin R s ⊔ star (Algebra.adjoin R s) from
432
434
(Subalgebra.star_adjoin_comm R s).symm ▸ Algebra.adjoin_union s (star s)
433
- #align star_subalgebra.adjoin_eq_star_closure_adjoin StarSubalgebra .adjoin_eq_starClosure_adjoin
435
+ #align star_subalgebra.adjoin_eq_star_closure_adjoin StarAlgebra .adjoin_eq_starClosure_adjoin
434
436
435
437
theorem adjoin_toSubalgebra (s : Set A) :
436
438
(adjoin R s).toSubalgebra = Algebra.adjoin R (s ∪ star s) :=
437
439
rfl
438
- #align star_subalgebra.adjoin_to_subalgebra StarSubalgebra .adjoin_toSubalgebra
440
+ #align star_subalgebra.adjoin_to_subalgebra StarAlgebra .adjoin_toSubalgebra
439
441
440
442
@[aesop safe 20 apply (rule_sets := [SetLike] )]
441
443
theorem subset_adjoin (s : Set A) : s ⊆ adjoin R s :=
442
444
(Set.subset_union_left s (star s)).trans Algebra.subset_adjoin
443
- #align star_subalgebra.subset_adjoin StarSubalgebra .subset_adjoin
445
+ #align star_subalgebra.subset_adjoin StarAlgebra .subset_adjoin
444
446
445
447
theorem star_subset_adjoin (s : Set A) : star s ⊆ adjoin R s :=
446
448
(Set.subset_union_right s (star s)).trans Algebra.subset_adjoin
447
- #align star_subalgebra.star_subset_adjoin StarSubalgebra .star_subset_adjoin
449
+ #align star_subalgebra.star_subset_adjoin StarAlgebra .star_subset_adjoin
448
450
449
451
theorem self_mem_adjoin_singleton (x : A) : x ∈ adjoin R ({x} : Set A) :=
450
452
Algebra.subset_adjoin <| Set.mem_union_left _ (Set.mem_singleton x)
451
- #align star_subalgebra.self_mem_adjoin_singleton StarSubalgebra .self_mem_adjoin_singleton
453
+ #align star_subalgebra.self_mem_adjoin_singleton StarAlgebra .self_mem_adjoin_singleton
452
454
453
455
theorem star_self_mem_adjoin_singleton (x : A) : star x ∈ adjoin R ({x} : Set A) :=
454
456
star_mem <| self_mem_adjoin_singleton R x
455
- #align star_subalgebra.star_self_mem_adjoin_singleton StarSubalgebra .star_self_mem_adjoin_singleton
457
+ #align star_subalgebra.star_self_mem_adjoin_singleton StarAlgebra .star_self_mem_adjoin_singleton
456
458
457
459
variable {R}
458
460
@@ -462,23 +464,23 @@ protected theorem gc : GaloisConnection (adjoin R : Set A → StarSubalgebra R A
462
464
exact
463
465
⟨fun h => (Set.subset_union_left s _).trans h, fun h =>
464
466
Set.union_subset h fun x hx => star_star x ▸ star_mem (show star x ∈ S from h hx)⟩
465
- #align star_subalgebra.gc StarSubalgebra .gc
467
+ #align star_subalgebra.gc StarAlgebra .gc
466
468
467
469
/-- Galois insertion between `adjoin` and `coe`. -/
468
470
protected def gi : GaloisInsertion (adjoin R : Set A → StarSubalgebra R A) (↑) where
469
- choice s hs := (adjoin R s).copy s <| le_antisymm (StarSubalgebra .gc.le_u_l s) hs
470
- gc := StarSubalgebra .gc
471
- le_l_u S := (StarSubalgebra .gc (S : Set A) (adjoin R S)).1 <| le_rfl
471
+ choice s hs := (adjoin R s).copy s <| le_antisymm (StarAlgebra .gc.le_u_l s) hs
472
+ gc := StarAlgebra .gc
473
+ le_l_u S := (StarAlgebra .gc (S : Set A) (adjoin R S)).1 <| le_rfl
472
474
choice_eq _ _ := StarSubalgebra.copy_eq _ _ _
473
- #align star_subalgebra.gi StarSubalgebra .gi
475
+ #align star_subalgebra.gi StarAlgebra .gi
474
476
475
477
theorem adjoin_le {S : StarSubalgebra R A} {s : Set A} (hs : s ⊆ S) : adjoin R s ≤ S :=
476
- StarSubalgebra .gc.l_le hs
477
- #align star_subalgebra.adjoin_le StarSubalgebra .adjoin_le
478
+ StarAlgebra .gc.l_le hs
479
+ #align star_subalgebra.adjoin_le StarAlgebra .adjoin_le
478
480
479
481
theorem adjoin_le_iff {S : StarSubalgebra R A} {s : Set A} : adjoin R s ≤ S ↔ s ⊆ S :=
480
- StarSubalgebra .gc _ _
481
- #align star_subalgebra.adjoin_le_iff StarSubalgebra .adjoin_le_iff
482
+ StarAlgebra .gc _ _
483
+ #align star_subalgebra.adjoin_le_iff StarAlgebra .adjoin_le_iff
482
484
483
485
theorem _root_.Subalgebra.starClosure_eq_adjoin (S : Subalgebra R A) :
484
486
S.starClosure = adjoin R (S : Set A) :=
@@ -496,7 +498,7 @@ theorem adjoin_induction {s : Set A} {p : A → Prop} {a : A} (h : a ∈ adjoin
496
498
Algebra.adjoin_induction h
497
499
(fun x hx => hx.elim (fun hx => mem x hx) fun hx => star_star x ▸ star _ (mem _ hx))
498
500
algebraMap add mul
499
- #align star_subalgebra.adjoin_induction StarSubalgebra .adjoin_induction
501
+ #align star_subalgebra.adjoin_induction StarAlgebra .adjoin_induction
500
502
501
503
@[elab_as_elim]
502
504
theorem adjoin_induction₂ {s : Set A} {p : A → A → Prop } {a b : A} (ha : a ∈ adjoin R s)
@@ -524,7 +526,7 @@ theorem adjoin_induction₂ {s : Set A} {p : A → A → Prop} {a b : A} (ha : a
524
526
· cases' hx with hx hx
525
527
· exact Halg_right _ _ hx
526
528
· exact star_star x ▸ Hstar_left _ _ (Halg_right r _ hx)
527
- #align star_subalgebra.adjoin_induction₂ StarSubalgebra .adjoin_induction₂
529
+ #align star_subalgebra.adjoin_induction₂ StarAlgebra .adjoin_induction₂
528
530
529
531
/-- The difference with `StarSubalgebra.adjoin_induction` is that this acts on the subtype. -/
530
532
@[elab_as_elim]
@@ -541,7 +543,7 @@ theorem adjoin_induction' {s : Set A} {p : adjoin R s → Prop} (a : adjoin R s)
541
543
fun x y hx hy =>
542
544
Exists.elim hx fun hx' hx => Exists.elim hy fun hy' hy => ⟨mul_mem hx' hy', mul _ _ hx hy⟩,
543
545
fun x hx => Exists.elim hx fun hx' hx => ⟨star_mem hx', star _ hx⟩]
544
- #align star_subalgebra.adjoin_induction' StarSubalgebra .adjoin_induction'
546
+ #align star_subalgebra.adjoin_induction' StarAlgebra .adjoin_induction'
545
547
546
548
variable (R)
547
549
@@ -567,7 +569,7 @@ def adjoinCommSemiringOfComm {s : Set A} (hcomm : ∀ a : A, a ∈ s → ∀ b :
567
569
· exact star_star a ▸ (hcomm_star _ hb _ ha).symm
568
570
· simpa only [star_mul, star_star] using congr_arg star (hcomm _ hb _ ha))
569
571
exact congr_arg Subtype.val (mul_comm (⟨x, hx⟩ : Algebra.adjoin R (s ∪ star s)) ⟨y, hy⟩) }
570
- #align star_subalgebra.adjoin_comm_semiring_of_comm StarSubalgebra .adjoinCommSemiringOfComm
572
+ #align star_subalgebra.adjoin_comm_semiring_of_comm StarAlgebra .adjoinCommSemiringOfComm
571
573
572
574
/-- If all elements of `s : Set A` commute pairwise and also commute pairwise with elements of
573
575
`star s`, then `StarSubalgebra.adjoin R s` is commutative. See note [reducible non-instances]. -/
@@ -577,9 +579,9 @@ def adjoinCommRingOfComm (R : Type u) {A : Type v} [CommRing R] [StarRing R] [Ri
577
579
(hcomm : ∀ a : A, a ∈ s → ∀ b : A, b ∈ s → a * b = b * a)
578
580
(hcomm_star : ∀ a : A, a ∈ s → ∀ b : A, b ∈ s → a * star b = star b * a) :
579
581
CommRing (adjoin R s) :=
580
- { StarSubalgebra .adjoinCommSemiringOfComm R hcomm hcomm_star,
582
+ { StarAlgebra .adjoinCommSemiringOfComm R hcomm hcomm_star,
581
583
(adjoin R s).toSubalgebra.toRing with }
582
- #align star_subalgebra.adjoin_comm_ring_of_comm StarSubalgebra .adjoinCommRingOfComm
584
+ #align star_subalgebra.adjoin_comm_ring_of_comm StarAlgebra .adjoinCommRingOfComm
583
585
584
586
/-- The star subalgebra `StarSubalgebra.adjoin R {x}` generated by a single `x : A` is commutative
585
587
if `x` is normal. -/
@@ -592,23 +594,30 @@ instance adjoinCommSemiringOfIsStarNormal (x : A) [IsStarNormal x] :
592
594
fun a ha b hb => by
593
595
rw [Set.mem_singleton_iff] at ha hb
594
596
simpa only [ha, hb] using (star_comm_self' x).symm
595
- #align star_subalgebra.adjoin_comm_semiring_of_is_star_normal StarSubalgebra .adjoinCommSemiringOfIsStarNormal
597
+ #align star_subalgebra.adjoin_comm_semiring_of_is_star_normal StarAlgebra .adjoinCommSemiringOfIsStarNormal
596
598
597
599
/-- The star subalgebra `StarSubalgebra.adjoin R {x}` generated by a single `x : A` is commutative
598
600
if `x` is normal. -/
599
601
instance adjoinCommRingOfIsStarNormal (R : Type u) {A : Type v} [CommRing R] [StarRing R] [Ring A]
600
602
[Algebra R A] [StarRing A] [StarModule R A] (x : A) [IsStarNormal x] :
601
603
CommRing (adjoin R ({x} : Set A)) :=
602
604
{ (adjoin R ({x} : Set A)).toSubalgebra.toRing with mul_comm := mul_comm }
603
- #align star_subalgebra.adjoin_comm_ring_of_is_star_normal StarSubalgebra .adjoinCommRingOfIsStarNormal
605
+ #align star_subalgebra.adjoin_comm_ring_of_is_star_normal StarAlgebra .adjoinCommRingOfIsStarNormal
604
606
605
607
/-! ### Complete lattice structure -/
606
608
609
+ end StarAlgebra
607
610
608
- variable {R} -- Porting note: redundant binder annotation update
611
+ namespace StarSubalgebra
612
+
613
+ variable {F R A B : Type *} [CommSemiring R] [StarRing R]
614
+
615
+ variable [Semiring A] [Algebra R A] [StarRing A] [StarModule R A]
616
+
617
+ variable [Semiring B] [Algebra R B] [StarRing B] [StarModule R B]
609
618
610
619
instance completeLattice : CompleteLattice (StarSubalgebra R A) where
611
- __ := GaloisInsertion.liftCompleteLattice StarSubalgebra .gi
620
+ __ := GaloisInsertion.liftCompleteLattice StarAlgebra .gi
612
621
bot := { toSubalgebra := ⊥, star_mem' := fun ⟨r, hr⟩ => ⟨star r, hr ▸ algebraMap_star_comm _⟩ }
613
622
bot_le S := (bot_le : ⊥ ≤ S.toSubalgebra)
614
623
@@ -718,7 +727,7 @@ end StarSubalgebra
718
727
719
728
namespace StarAlgHom
720
729
721
- open StarSubalgebra
730
+ open StarSubalgebra StarAlgebra
722
731
723
732
variable {F R A B : Type *} [CommSemiring R] [StarRing R]
724
733
variable [Semiring A] [Algebra R A] [StarRing A] [StarModule R A]
@@ -747,8 +756,8 @@ theorem ext_of_adjoin_eq_top {s : Set A} (h : adjoin R s = ⊤) ⦃f g : F⦄ (h
747
756
748
757
theorem map_adjoin (f : A →⋆ₐ[R] B) (s : Set A) :
749
758
map f (adjoin R s) = adjoin R (f '' s) :=
750
- GaloisConnection.l_comm_of_u_comm Set.image_preimage (gc_map_comap f) StarSubalgebra .gc
751
- StarSubalgebra .gc fun _ => rfl
759
+ GaloisConnection.l_comm_of_u_comm Set.image_preimage (gc_map_comap f) StarAlgebra .gc
760
+ StarAlgebra .gc fun _ => rfl
752
761
#align star_alg_hom.map_adjoin StarAlgHom.map_adjoin
753
762
754
763
theorem ext_adjoin {s : Set A} [FunLike F (adjoin R s) B]
0 commit comments