Idempotents #
This file defines idempotents for an arbitrary multiplication and proves some basic results, including:
IsIdempotentElem.mul_of_commute
: In a semigroup, the product of two commuting idempotents is an idempotent;IsIdempotentElem.pow_succ_eq
: In a monoida ^ (n+1) = a
fora
an idempotent andn
a natural number.
Tags #
projection, idempotent
An element a
is said to be idempotent if a * a = a
.
Equations
- IsIdempotentElem a = (a * a = a)
Instances For
theorem
IsIdempotentElem.of_isIdempotent
{M : Type u_1}
[Mul M]
[Std.IdempotentOp fun (x1 x2 : M) => x1 * x2]
(a : M)
:
theorem
IsIdempotentElem.mul_of_commute
{S : Type u_3}
[Semigroup S]
{a b : S}
(hab : Commute a b)
(ha : IsIdempotentElem a)
(hb : IsIdempotentElem b)
:
IsIdempotentElem (a * b)
theorem
IsIdempotentElem.mul
{S : Type u_3}
[CommSemigroup S]
{a b : S}
(ha : IsIdempotentElem a)
(hb : IsIdempotentElem b)
:
IsIdempotentElem (a * b)
instance
IsIdempotentElem.instOneSubtype
{M : Type u_1}
[MulOneClass M]
:
One { a : M // IsIdempotentElem a }
Equations
- IsIdempotentElem.instOneSubtype = { one := ⟨1, ⋯⟩ }
theorem
IsIdempotentElem.pow
{M : Type u_1}
[Monoid M]
{a : M}
(n : ℕ)
(h : IsIdempotentElem a)
:
IsIdempotentElem (a ^ n)
theorem
IsIdempotentElem.pow_succ_eq
{M : Type u_1}
[Monoid M]
{a : M}
(n : ℕ)
(h : IsIdempotentElem a)
:
@[simp]
theorem
IsIdempotentElem.iff_eq_one
{M : Type u_1}
[CancelMonoid M]
{a : M}
:
IsIdempotentElem a ↔ a = 1
theorem
IsIdempotentElem.map
{M : Type u_4}
{N : Type u_5}
{F : Type u_6}
[Mul M]
[Mul N]
[FunLike F M N]
[MulHomClass F M N]
{e : M}
(he : IsIdempotentElem e)
(f : F)
:
IsIdempotentElem (f e)