Documentation

Linglib.Core.Algebra.Group.Idempotent

Left and right zeros #

An element a of a magma is a left zero when a * b = a for every b, and a right zero when b * a = a for every b. A one-sided zero is idempotent, and MulOpposite exchanges the two notions. In a semigroup the left zeros form a left ideal and the right zeros a right ideal.

Main definitions #

Main results #

References #

def IsLeftZero {M : Type u_1} [Mul M] (a : M) :

An element a is a left zero if a * b = a for every b.

Equations
Instances For
    def IsRightZero {M : Type u_1} [Mul M] (a : M) :

    An element a is a right zero if b * a = a for every b.

    Equations
    Instances For
      theorem isLeftZero_iff {M : Type u_1} [Mul M] {a : M} :
      IsLeftZero a ↔ ∀ (b : M), a * b = a
      theorem isRightZero_iff {M : Type u_1} [Mul M] {a : M} :
      IsRightZero a ↔ ∀ (b : M), b * a = a
      @[simp]
      theorem isLeftZero_op {M : Type u_1} [Mul M] {a : M} :
      IsLeftZero (MulOpposite.op a) ↔ IsRightZero a
      @[simp]
      theorem isRightZero_op {M : Type u_1} [Mul M] {a : M} :
      IsRightZero (MulOpposite.op a) ↔ IsLeftZero a
      theorem IsLeftZero.isIdempotentElem {M : Type u_1} [Mul M] {a : M} (h : IsLeftZero a) :
      IsIdempotentElem a

      A left zero is idempotent.

      theorem IsRightZero.isIdempotentElem {M : Type u_1} [Mul M] {a : M} (h : IsRightZero a) :
      IsIdempotentElem a

      A right zero is idempotent.

      theorem IsLeftZero.map_of_surjective {M : Type u_1} {N : Type u_2} {F : Type u_3} [Mul M] {a : M} [Mul N] [FunLike F M N] [MulHomClass F M N] {f : F} (h : IsLeftZero a) (hf : Function.Surjective ⇑f) :

      A surjective homomorphism sends left zeros to left zeros.

      theorem IsRightZero.map_of_surjective {M : Type u_1} {N : Type u_2} {F : Type u_3} [Mul M] {a : M} [Mul N] [FunLike F M N] [MulHomClass F M N] {f : F} (h : IsRightZero a) (hf : Function.Surjective ⇑f) :

      A surjective homomorphism sends right zeros to right zeros.

      theorem IsLeftZero.of_map {M : Type u_1} {N : Type u_2} {F : Type u_3} [Mul M] {a : M} [Mul N] [FunLike F M N] [MulHomClass F M N] {f : F} (h : IsLeftZero (f a)) (hf : Function.Injective ⇑f) :

      An element sent to a left zero by an injective homomorphism is a left zero.

      theorem IsRightZero.of_map {M : Type u_1} {N : Type u_2} {F : Type u_3} [Mul M] {a : M} [Mul N] [FunLike F M N] [MulHomClass F M N] {f : F} (h : IsRightZero (f a)) (hf : Function.Injective ⇑f) :

      An element sent to a right zero by an injective homomorphism is a right zero.

      theorem IsLeftZero.mul_left {M : Type u_1} [Semigroup M] {a : M} (h : IsLeftZero a) (b : M) :
      IsLeftZero (b * a)

      In a semigroup, multiplying a left zero on the left gives a left zero.

      theorem IsRightZero.mul_right {M : Type u_1} [Semigroup M] {a : M} (h : IsRightZero a) (b : M) :
      IsRightZero (a * b)

      In a semigroup, multiplying a right zero on the right gives a right zero.

      @[simp]
      theorem isLeftZero_zero {M : Type u_1} [MulZeroClass M] :
      @[simp]
      theorem isRightZero_zero {M : Type u_1} [MulZeroClass M] :