Documentation

Mathlib.Algebra.Ring.CentroidHom

Centroid homomorphisms #

Let A be a (nonunital, non-associative) algebra. The centroid of A is the set of linear maps T on A such that T commutes with left and right multiplication, that is to say, for all a and b in A, $$ T(ab) = (Ta)b, T(ab) = a(Tb). $$ In mathlib we call elements of the centroid "centroid homomorphisms" (CentroidHom) in keeping with AddMonoidHom etc.

We use the DFunLike design, so each type of morphisms has a companion typeclass which is meant to be satisfied by itself and all stricter types.

Types of morphisms #

Typeclasses #

References #

Tags #

centroid

structure CentroidHom (α : Type u_6) [NonUnitalNonAssocSemiring α] extends α →+ α :
Type u_6

The type of centroid homomorphisms from α to α.

Instances For
    class CentroidHomClass (F : Type u_6) (α : outParam (Type u_7)) [NonUnitalNonAssocSemiring α] [FunLike F α α] extends AddMonoidHomClass F α α :

    CentroidHomClass F α states that F is a type of centroid homomorphisms.

    You should extend this class when you extend CentroidHom.

    • map_add (f : F) (x y : α) : f (x + y) = f x + f y
    • map_zero (f : F) : f 0 = 0
    • map_mul_left (f : F) (a b : α) : f (a * b) = a * f b

      Commutativity of centroid homomorphisms with left multiplication.

    • map_mul_right (f : F) (a b : α) : f (a * b) = f a * b

      Commutativity of centroid homomorphisms with right multiplication.

    Instances
      @[implicit_reducible]
      instance instCoeTCCentroidHomOfCentroidHomClass {F : Type u_1} {α : Type u_5} [NonUnitalNonAssocSemiring α] [FunLike F α α] [CentroidHomClass F α] :
      CoeTC F (CentroidHom α)

      Centroid homomorphisms #

      @[implicit_reducible]
      theorem CentroidHom.ext {α : Type u_5} [NonUnitalNonAssocSemiring α] {f g : CentroidHom α} (h : ∀ (a : α), f a = g a) :
      f = g
      theorem CentroidHom.ext_iff {α : Type u_5} [NonUnitalNonAssocSemiring α] {f g : CentroidHom α} :
      f = g ∀ (a : α), f a = g a
      @[simp]
      theorem CentroidHom.coe_toAddMonoidHom {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α) :
      f = f

      Turn a centroid homomorphism into an additive monoid endomorphism.

      Instances For
        def CentroidHom.copy {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α) (f' : αα) (h : f' = f) :

        Copy of a CentroidHom with a new toFun equal to the old one. Useful to fix definitional equalities.

        Instances For
          @[simp]
          theorem CentroidHom.coe_copy {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α) (f' : αα) (h : f' = f) :
          (f.copy f' h) = f'
          theorem CentroidHom.copy_eq {α : Type u_5} [NonUnitalNonAssocSemiring α] (f : CentroidHom α) (f' : αα) (h : f' = f) :
          f.copy f' h = f
          @[implicit_reducible]
          instance CentroidHom.instInhabited (α : Type u_5) [NonUnitalNonAssocSemiring α] :
          Inhabited (CentroidHom α)
          @[simp]
          theorem CentroidHom.id_apply {α : Type u_5} [NonUnitalNonAssocSemiring α] (a : α) :
          (CentroidHom.id α) a = a

          Composition of CentroidHoms as a CentroidHom.

          Instances For
            @[simp]
            theorem CentroidHom.coe_comp {α : Type u_5} [NonUnitalNonAssocSemiring α] (g f : CentroidHom α) :
            (g.comp f) = g f
            @[simp]
            theorem CentroidHom.comp_apply {α : Type u_5} [NonUnitalNonAssocSemiring α] (g f : CentroidHom α) (a : α) :
            (g.comp f) a = g (f a)
            @[simp]
            theorem CentroidHom.coe_comp_addMonoidHom {α : Type u_5} [NonUnitalNonAssocSemiring α] (g f : CentroidHom α) :
            (g.comp f) = (↑g).comp f
            @[simp]
            theorem CentroidHom.comp_assoc {α : Type u_5} [NonUnitalNonAssocSemiring α] (h g f : CentroidHom α) :
            (h.comp g).comp f = h.comp (g.comp f)
            @[simp]
            theorem CentroidHom.cancel_right {α : Type u_5} [NonUnitalNonAssocSemiring α] {g₁ g₂ f : CentroidHom α} (hf : Function.Surjective f) :
            g₁.comp f = g₂.comp f g₁ = g₂
            @[simp]
            theorem CentroidHom.cancel_left {α : Type u_5} [NonUnitalNonAssocSemiring α] {g f₁ f₂ : CentroidHom α} (hg : Function.Injective g) :
            g.comp f₁ = g.comp f₂ f₁ = f₂
            @[implicit_reducible]
            @[implicit_reducible]
            @[implicit_reducible]
            @[implicit_reducible]
            @[implicit_reducible]
            instance CentroidHom.instSMul {M : Type u_2} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] :
            SMul M (CentroidHom α)
            instance CentroidHom.instIsScalarTower {M : Type u_2} {N : Type u_3} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [Monoid N] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] [DistribMulAction N α] [SMulCommClass N α α] [IsScalarTower N α α] [SMul M N] [IsScalarTower M N α] :
            @[implicit_reducible]
            instance CentroidHom.hasNPowNat {α : Type u_5} [NonUnitalNonAssocSemiring α] :
            Pow (CentroidHom α)
            @[simp]
            theorem CentroidHom.coe_zero {α : Type u_5} [NonUnitalNonAssocSemiring α] :
            0 = 0
            @[simp]
            theorem CentroidHom.coe_one {α : Type u_5} [NonUnitalNonAssocSemiring α] :
            1 = id
            @[simp]
            theorem CentroidHom.coe_add {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α) :
            (f + g) = f + g
            @[simp]
            theorem CentroidHom.coe_mul {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α) :
            (f * g) = f g
            @[simp]
            theorem CentroidHom.coe_smul {M : Type u_2} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] (n : M) (f : CentroidHom α) :
            (n f) = n f
            @[simp]
            theorem CentroidHom.zero_apply {α : Type u_5} [NonUnitalNonAssocSemiring α] (a : α) :
            0 a = 0
            @[simp]
            theorem CentroidHom.one_apply {α : Type u_5} [NonUnitalNonAssocSemiring α] (a : α) :
            1 a = a
            @[simp]
            theorem CentroidHom.add_apply {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α) (a : α) :
            (f + g) a = f a + g a
            @[simp]
            theorem CentroidHom.mul_apply {α : Type u_5} [NonUnitalNonAssocSemiring α] (f g : CentroidHom α) (a : α) :
            (f * g) a = f (g a)
            @[simp]
            theorem CentroidHom.smul_apply {M : Type u_2} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] (n : M) (f : CentroidHom α) (a : α) :
            (n f) a = n f a
            @[simp]
            theorem CentroidHom.toEnd_add {α : Type u_5} [NonUnitalNonAssocSemiring α] (x y : CentroidHom α) :
            (x + y).toEnd = x.toEnd + y.toEnd
            theorem CentroidHom.toEnd_smul {M : Type u_2} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Monoid M] [DistribMulAction M α] [SMulCommClass M α α] [IsScalarTower M α α] (m : M) (x : CentroidHom α) :
            (m x).toEnd = m x.toEnd
            @[implicit_reducible]
            instance CentroidHom.instNatCast {α : Type u_5} [NonUnitalNonAssocSemiring α] :
            NatCast (CentroidHom α)
            @[simp]
            theorem CentroidHom.coe_natCast {α : Type u_5} [NonUnitalNonAssocSemiring α] (n : ) :
            n = n (CentroidHom.id α)
            theorem CentroidHom.natCast_apply {α : Type u_5} [NonUnitalNonAssocSemiring α] (n : ) (m : α) :
            n m = n m
            @[simp]
            theorem CentroidHom.toEnd_mul {α : Type u_5} [NonUnitalNonAssocSemiring α] (x y : CentroidHom α) :
            (x * y).toEnd = x.toEnd * y.toEnd
            @[simp]
            theorem CentroidHom.toEnd_pow {α : Type u_5} [NonUnitalNonAssocSemiring α] (x : CentroidHom α) (n : ) :
            (x ^ n).toEnd = x.toEnd ^ n
            @[simp]
            theorem CentroidHom.toEnd_natCast {α : Type u_5} [NonUnitalNonAssocSemiring α] (n : ) :
            (↑n).toEnd = n
            theorem CentroidHom.comp_mul_comm {α : Type u_5} [NonUnitalNonAssocSemiring α] (T S : CentroidHom α) (a b : α) :
            (T S) (a * b) = (S T) (a * b)
            @[implicit_reducible]
            @[implicit_reducible]
            instance CentroidHom.instModule {R : Type u_4} {α : Type u_5} [NonUnitalNonAssocSemiring α] [Semiring R] [Module R α] [SMulCommClass R α α] [IsScalarTower R α α] :

            The following instances show that α is a non-unital and non-associative algebra over CentroidHom α.

            @[implicit_reducible]

            The tautological action by CentroidHom α on α.

            This generalizes Function.End.applyMulAction.

            @[simp]
            theorem CentroidHom.smul_def {α : Type u_5} [NonUnitalNonAssocSemiring α] (T : CentroidHom α) (a : α) :
            T a = T a

            Let α be an algebra over R, such that the canonical ring homomorphism of R into CentroidHom α lies in the center of CentroidHom α. Then CentroidHom α is an algebra over R

            def Module.toCentroidHom {α : Type u_5} [NonUnitalNonAssocSemiring α] {R : Type u_6} [CommSemiring R] [Module R α] [SMulCommClass R α α] [IsScalarTower R α α] :

            The natural ring homomorphism from R into CentroidHom α.

            This is a stronger version of Module.toAddMonoidEnd.

            Instances For
              @[simp]
              theorem Module.toCentroidHom_apply_toFun {α : Type u_5} [NonUnitalNonAssocSemiring α] {R : Type u_6} [CommSemiring R] [Module R α] [SMulCommClass R α α] [IsScalarTower R α α] (x : R) (a : α) :
              (toCentroidHom x) a = x a

              The canonical homomorphism from the center into the center of the centroid

              Instances For

                The canonical homomorphism from the center into the centroid

                Instances For

                  The canonical isomorphism from the center of a (non-associative) semiring onto its centroid.

                  Instances For
                    @[implicit_reducible]
                    instance CentroidHom.instNeg {α : Type u_5} [NonUnitalNonAssocRing α] :
                    Neg (CentroidHom α)

                    Negation of CentroidHoms as a CentroidHom.

                    @[implicit_reducible]
                    instance CentroidHom.instSub {α : Type u_5} [NonUnitalNonAssocRing α] :
                    Sub (CentroidHom α)
                    @[implicit_reducible]
                    instance CentroidHom.instIntCast {α : Type u_5} [NonUnitalNonAssocRing α] :
                    IntCast (CentroidHom α)
                    @[simp]
                    theorem CentroidHom.coe_intCast {α : Type u_5} [NonUnitalNonAssocRing α] (z : ) :
                    z = z (CentroidHom.id α)
                    theorem CentroidHom.intCast_apply {α : Type u_5} [NonUnitalNonAssocRing α] (z : ) (m : α) :
                    z m = z m
                    @[simp]
                    theorem CentroidHom.toEnd_sub {α : Type u_5} [NonUnitalNonAssocRing α] (x y : CentroidHom α) :
                    (x - y).toEnd = x.toEnd - y.toEnd
                    @[simp]
                    theorem CentroidHom.coe_neg {α : Type u_5} [NonUnitalNonAssocRing α] (f : CentroidHom α) :
                    ⇑(-f) = -f
                    @[simp]
                    theorem CentroidHom.coe_sub {α : Type u_5} [NonUnitalNonAssocRing α] (f g : CentroidHom α) :
                    (f - g) = f - g
                    @[simp]
                    theorem CentroidHom.neg_apply {α : Type u_5} [NonUnitalNonAssocRing α] (f : CentroidHom α) (a : α) :
                    (-f) a = -f a
                    @[simp]
                    theorem CentroidHom.sub_apply {α : Type u_5} [NonUnitalNonAssocRing α] (f g : CentroidHom α) (a : α) :
                    (f - g) a = f a - g a
                    @[simp]
                    theorem CentroidHom.toEnd_intCast {α : Type u_5} [NonUnitalNonAssocRing α] (z : ) :
                    (↑z).toEnd = z
                    @[implicit_reducible]
                    @[reducible, inline]
                    abbrev CentroidHom.commRing {α : Type u_5} [NonUnitalRing α] (h : ∀ (a b : α), (∀ (r : α), a * r * b = 0)a = 0 b = 0) :

                    A prime associative ring has commutative centroid.

                    Instances For