Documentation

Mathlib.Algebra.Group.Center

Centers of magmas and semigroups #

Main definitions #

See also #

See Mathlib/GroupTheory/Subsemigroup/Center.lean for the definition of the center as a subsemigroup:

We provide Submonoid.center, AddSubmonoid.center, Subgroup.center, AddSubgroup.center, Subsemiring.center, and Subring.center in other files.

See Mathlib/GroupTheory/Subsemigroup/Centralizer.lean for the definition of the centralizer as a subsemigroup:

We provide Monoid.centralizer, AddMonoid.centralizer, Subgroup.centralizer, and AddSubgroup.centralizer in other files.

structure IsAddCentral {M : Type u_1} [Add M] (z : M) :

Conditions for an element to be additively central

  • comm (a : M) : AddCommute z a

    addition commutes

  • left_assoc (b c : M) : z + (b + c) = z + b + c

    associative property for left addition

  • right_assoc (a b : M) : a + b + z = a + (b + z)

    associative property for right addition

Instances For
    structure IsMulCentral {M : Type u_1} [Mul M] (z : M) :

    Conditions for an element to be multiplicatively central

    • comm (a : M) : Commute z a

      multiplication commutes

    • left_assoc (b c : M) : z * (b * c) = z * b * c

      associative property for left multiplication

    • right_assoc (a b : M) : a * b * z = a * (b * z)

      associative property for right multiplication

    Instances For
      theorem isMulCentral_iff {M : Type u_1} [Mul M] (z : M) :
      IsMulCentral z โ†” (โˆ€ (a : M), Commute z a) โˆง (โˆ€ (b c : M), z * (b * c) = z * b * c) โˆง โˆ€ (a b : M), a * b * z = a * (b * z)
      theorem isAddCentral_iff {M : Type u_1} [Add M] (z : M) :
      IsAddCentral z โ†” (โˆ€ (a : M), AddCommute z a) โˆง (โˆ€ (b c : M), z + (b + c) = z + b + c) โˆง โˆ€ (a b : M), a + b + z = a + (b + z)
      theorem IsMulCentral.mid_assoc {M : Type u_1} [Mul M] {z : M} (h : IsMulCentral z) (a c : M) :
      a * z * c = a * (z * c)
      theorem IsAddCentral.mid_assoc {M : Type u_1} [Add M] {z : M} (h : IsAddCentral z) (a c : M) :
      a + z + c = a + (z + c)
      theorem IsMulCentral.left_comm {M : Type u_1} {a : M} [Mul M] (h : IsMulCentral a) (b c : M) :
      a * (b * c) = b * (a * c)
      theorem IsAddCentral.left_comm {M : Type u_1} {a : M} [Add M] (h : IsAddCentral a) (b c : M) :
      a + (b + c) = b + (a + c)
      theorem IsMulCentral.right_comm {M : Type u_1} {c : M} [Mul M] (h : IsMulCentral c) (a b : M) :
      a * b * c = a * c * b
      theorem IsAddCentral.right_comm {M : Type u_1} {c : M} [Add M] (h : IsAddCentral c) (a b : M) :
      a + b + c = a + c + b

      Center #

      def Set.center (M : Type u_1) [Mul M] :
      Set M

      The center of a magma.

      Equations
        Instances For
          def Set.addCenter (M : Type u_1) [Add M] :
          Set M

          The center of an additive magma.

          Equations
            Instances For
              def Set.centralizer {M : Type u_1} (S : Set M) [Mul M] :
              Set M

              The centralizer of a subset of a magma.

              Equations
                Instances For
                  def Set.addCentralizer {M : Type u_1} (S : Set M) [Add M] :
                  Set M

                  The centralizer of a subset of an additive magma.

                  Equations
                    Instances For
                      theorem Set.mem_centralizer_iff {M : Type u_1} {S : Set M} [Mul M] {c : M} :
                      c โˆˆ S.centralizer โ†” โˆ€ m โˆˆ S, m * c = c * m
                      theorem Set.mem_addCentralizer {M : Type u_1} {S : Set M} [Add M] {c : M} :
                      c โˆˆ S.addCentralizer โ†” โˆ€ m โˆˆ S, m + c = c + m
                      @[simp]
                      theorem Set.mul_mem_center {M : Type u_1} [Mul M] {zโ‚ zโ‚‚ : M} (hzโ‚ : zโ‚ โˆˆ center M) (hzโ‚‚ : zโ‚‚ โˆˆ center M) :
                      zโ‚ * zโ‚‚ โˆˆ center M
                      @[simp]
                      theorem Set.add_mem_addCenter {M : Type u_1} [Add M] {zโ‚ zโ‚‚ : M} (hzโ‚ : zโ‚ โˆˆ addCenter M) (hzโ‚‚ : zโ‚‚ โˆˆ addCenter M) :
                      zโ‚ + zโ‚‚ โˆˆ addCenter M
                      instance Set.decidableMemCentralizer {M : Type u_1} {S : Set M} [Mul M] [(a : M) โ†’ Decidable (โˆ€ b โˆˆ S, b * a = a * b)] :
                      DecidablePred fun (x : M) => x โˆˆ S.centralizer
                      Equations
                        instance Set.decidableMemAddCentralizer {M : Type u_1} {S : Set M} [Add M] [(a : M) โ†’ Decidable (โˆ€ b โˆˆ S, b + a = a + b)] :
                        Equations
                          theorem Set.centralizer_centralizer_comm_of_comm {M : Type u_1} {S : Set M} [Mul M] (h_comm : โˆ€ x โˆˆ S, โˆ€ y โˆˆ S, x * y = y * x) (x : M) :
                          x โˆˆ S.centralizer.centralizer โ†’ โˆ€ y โˆˆ S.centralizer.centralizer, x * y = y * x
                          theorem Set.addCentralizer_addCentralizer_comm_of_comm {M : Type u_1} {S : Set M} [Add M] (h_comm : โˆ€ x โˆˆ S, โˆ€ y โˆˆ S, x + y = y + x) (x : M) :
                          x โˆˆ S.addCentralizer.addCentralizer โ†’ โˆ€ y โˆˆ S.addCentralizer.addCentralizer, x + y = y + x
                          theorem Set.centralizer_prod {M : Type u_1} [Mul M] {N : Type u_2} [Mul N] {S : Set M} {T : Set N} (hS : S.Nonempty) (hT : T.Nonempty) :

                          The centralizer of the product of non-empty sets is equal to the product of the centralizers.

                          theorem Set.center_prod {M : Type u_1} [Mul M] {N : Type u_2} [Mul N] :
                          theorem Set.center_pi {ฮน : Type u_2} {A : ฮน โ†’ Type u_3} [(i : ฮน) โ†’ Mul (A i)] :
                          center ((i : ฮน) โ†’ A i) = univ.pi fun (i : ฮน) => center (A i)
                          theorem Set.addCenter_pi {ฮน : Type u_2} {A : ฮน โ†’ Type u_3} [(i : ฮน) โ†’ Add (A i)] :
                          addCenter ((i : ฮน) โ†’ A i) = univ.pi fun (i : ฮน) => addCenter (A i)
                          theorem Semigroup.mem_center_iff {M : Type u_1} [Semigroup M] {z : M} :
                          z โˆˆ Set.center M โ†” โˆ€ (g : M), g * z = z * g
                          theorem AddSemigroup.mem_center_iff {M : Type u_1} [AddSemigroup M] {z : M} :
                          z โˆˆ Set.addCenter M โ†” โˆ€ (g : M), g + z = z + g
                          @[simp]
                          theorem Set.mul_mem_centralizer {M : Type u_1} {S : Set M} [Semigroup M] {a b : M} (ha : a โˆˆ S.centralizer) (hb : b โˆˆ S.centralizer) :
                          @[simp]
                          theorem Set.add_mem_addCentralizer {M : Type u_1} {S : Set M} [AddSemigroup M] {a b : M} (ha : a โˆˆ S.addCentralizer) (hb : b โˆˆ S.addCentralizer) :
                          instance Set.decidableMemCenter {M : Type u_1} [Semigroup M] [(a : M) โ†’ Decidable (โˆ€ (b : M), b * a = a * b)] :
                          DecidablePred fun (x : M) => x โˆˆ center M
                          Equations
                            instance Set.decidableMemAddCenter {M : Type u_1} [AddSemigroup M] [(a : M) โ†’ Decidable (โˆ€ (b : M), b + a = a + b)] :
                            DecidablePred fun (x : M) => x โˆˆ addCenter M
                            Equations
                              @[simp]
                              theorem Set.units_inv_mem_center {M : Type u_1} [Monoid M] {a : Mหฃ} (ha : โ†‘a โˆˆ center M) :
                              @[simp]
                              theorem Set.addUnits_neg_mem_center {M : Type u_1} [AddMonoid M] {a : AddUnits M} (ha : โ†‘a โˆˆ addCenter M) :
                              โ†‘(-a) โˆˆ addCenter M
                              @[simp]
                              theorem Set.invOf_mem_center {M : Type u_1} [Monoid M] {a : M} [Invertible a] (ha : a โˆˆ center M) :
                              @[simp]
                              theorem Set.div_mem_center {M : Type u_1} [DivisionMonoid M] {a b : M} (ha : a โˆˆ center M) (hb : b โˆˆ center M) :
                              @[simp]
                              theorem Set.sub_mem_addCenter {M : Type u_1} [SubtractionMonoid M] {a b : M} (ha : a โˆˆ addCenter M) (hb : b โˆˆ addCenter M) :
                              @[simp]
                              theorem Set.div_mem_centralizer {M : Type u_1} {S : Set M} [Group M] {a b : M} (ha : a โˆˆ S.centralizer) (hb : b โˆˆ S.centralizer) :
                              @[simp]
                              theorem Set.sub_mem_addCentralizer {M : Type u_1} {S : Set M} [AddGroup M] {a b : M} (ha : a โˆˆ S.addCentralizer) (hb : b โˆˆ S.addCentralizer) :