Documentation

Mathlib.RingTheory.Idempotents

Idempotents in rings #

The predicate IsIdempotentElem is defined for general monoids in Algebra/Ring/Idempotents.lean. In this file we provide various results regarding idempotent elements in rings.

Main definitions #

Main results #

theorem isIdempotentElem_one_sub_one_sub_pow_pow {R : Type u_1} [Ring R] (x : R) (n : ) (hx : (x - x ^ 2) ^ n = 0) :
IsIdempotentElem (1 - (1 - x ^ n) ^ n)
theorem exists_isIdempotentElem_mul_eq_zero_of_ker_isNilpotent_aux {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) (h : xRingHom.ker f, IsNilpotent x) (e₁ : S) (he : e₁ f.range) (he₁ : IsIdempotentElem e₁) (e₂ : R) (he₂ : IsIdempotentElem e₂) (he₁e₂ : e₁ * f e₂ = 0) :
∃ (e' : R), IsIdempotentElem e' f e' = e₁ e' * e₂ = 0
theorem exists_isIdempotentElem_mul_eq_zero_of_ker_isNilpotent {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) (h : xRingHom.ker f, IsNilpotent x) (e₁ : S) (he : e₁ f.range) (he₁ : IsIdempotentElem e₁) (e₂ : R) (he₂ : IsIdempotentElem e₂) (he₁e₂ : e₁ * f e₂ = 0) (he₂e₁ : f e₂ * e₁ = 0) :
∃ (e' : R), IsIdempotentElem e' f e' = e₁ e' * e₂ = 0 e₂ * e' = 0

Orthogonal idempotents lift along nil ideals.

theorem exists_isIdempotentElem_eq_of_ker_isNilpotent {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) (h : xRingHom.ker f, IsNilpotent x) (e : S) (he : e f.range) (he' : IsIdempotentElem e) :
∃ (e' : R), IsIdempotentElem e' f e' = e

Idempotents lift along nil ideals.

structure OrthogonalIdempotents {R : Type u_1} [Ring R] {I : Type u_3} (e : IR) :

A family { eᵢ } of idempotent elements is orthogonal if eᵢ * eⱼ = 0 for all i ≠ j.

Instances For
    theorem orthogonalIdempotents_iff {R : Type u_1} [Ring R] {I : Type u_3} (e : IR) :
    OrthogonalIdempotents e (∀ (i : I), IsIdempotentElem (e i)) Pairwise fun (x1 x2 : I) => e x1 * e x2 = 0
    theorem OrthogonalIdempotents.idem {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} (self : OrthogonalIdempotents e) (i : I) :
    theorem OrthogonalIdempotents.ortho {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} (self : OrthogonalIdempotents e) :
    Pairwise fun (x1 x2 : I) => e x1 * e x2 = 0
    theorem OrthogonalIdempotents.mul_eq {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} [DecidableEq I] (he : OrthogonalIdempotents e) (i : I) (j : I) :
    e i * e j = if i = j then e i else 0
    theorem OrthogonalIdempotents.iff_mul_eq {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} [DecidableEq I] :
    OrthogonalIdempotents e ∀ (i j : I), e i * e j = if i = j then e i else 0
    theorem OrthogonalIdempotents.isIdempotentElem_sum {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} (he : OrthogonalIdempotents e) {s : Finset I} :
    IsIdempotentElem (∑ is, e i)
    theorem OrthogonalIdempotents.mul_sum_of_mem {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} (he : OrthogonalIdempotents e) {i : I} {s : Finset I} (h : i s) :
    e i * js, e j = e i
    theorem OrthogonalIdempotents.mul_sum_of_not_mem {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} (he : OrthogonalIdempotents e) {i : I} {s : Finset I} (h : is) :
    e i * js, e j = 0
    theorem OrthogonalIdempotents.map {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) {I : Type u_3} {e : IR} (he : OrthogonalIdempotents e) :
    theorem OrthogonalIdempotents.map_injective_iff {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) {I : Type u_3} {e : IR} (hf : Function.Injective f) :
    theorem OrthogonalIdempotents.embedding {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} (he : OrthogonalIdempotents e) {J : Type u_4} (i : J I) :
    theorem OrthogonalIdempotents.equiv {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} {J : Type u_4} (i : J I) :
    theorem OrthogonalIdempotents.unique {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} [Unique I] :
    theorem OrthogonalIdempotents.option {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} (he : OrthogonalIdempotents e) [Fintype I] (x : R) (hx : IsIdempotentElem x) (hx₁ : x * i : I, e i = 0) (hx₂ : (∑ i : I, e i) * x = 0) :
    OrthogonalIdempotents fun (x_1 : Option I) => x_1.elim x e
    theorem OrthogonalIdempotents.lift_of_isNilpotent_ker_aux {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) (h : xRingHom.ker f, IsNilpotent x) {n : } {e : Fin nS} (he : OrthogonalIdempotents e) (he' : ∀ (i : Fin n), e i f.range) :
    ∃ (e' : Fin nR), OrthogonalIdempotents e' f e' = e
    theorem OrthogonalIdempotents.lift_of_isNilpotent_ker {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) {I : Type u_3} [Finite I] (h : xRingHom.ker f, IsNilpotent x) {e : IS} (he : OrthogonalIdempotents e) (he' : ∀ (i : I), e i f.range) :
    ∃ (e' : IR), OrthogonalIdempotents e' f e' = e

    A family of orthogonal idempotents lift along nil ideals.

    structure CompleteOrthogonalIdempotents {R : Type u_1} [Ring R] {I : Type u_3} [Fintype I] (e : IR) extends OrthogonalIdempotents :

    A family { eᵢ } of idempotent elements is complete orthogonal if

    1. (orthogonal) eᵢ * eⱼ = 0 for all i ≠ j.
    2. (complete) ∑ eᵢ = 1
    Instances For
      theorem completeOrthogonalIdempotents_iff {R : Type u_1} [Ring R] {I : Type u_3} [Fintype I] (e : IR) :
      theorem CompleteOrthogonalIdempotents.complete {R : Type u_1} [Ring R] {I : Type u_3} [Fintype I] {e : IR} (self : CompleteOrthogonalIdempotents e) :
      i : I, e i = 1
      theorem CompleteOrthogonalIdempotents.unique_iff {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} [Fintype I] [Unique I] :
      theorem CompleteOrthogonalIdempotents.single {I : Type u_4} [Fintype I] [DecidableEq I] (R : IType u_5) [(i : I) → Ring (R i)] :
      theorem CompleteOrthogonalIdempotents.map {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) {I : Type u_3} {e : IR} [Fintype I] (he : CompleteOrthogonalIdempotents e) :
      theorem CompleteOrthogonalIdempotents.equiv {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} [Fintype I] {J : Type u_4} [Fintype J] (i : J I) :
      theorem CompleteOrthogonalIdempotents.option {R : Type u_1} [Ring R] {I : Type u_3} {e : IR} [Fintype I] (he : OrthogonalIdempotents e) :
      CompleteOrthogonalIdempotents fun (x : Option I) => x.elim (1 - i : I, e i) e
      theorem CompleteOrthogonalIdempotents.lift_of_isNilpotent_ker_aux {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) (h : xRingHom.ker f, IsNilpotent x) {n : } {e : Fin nS} (he : CompleteOrthogonalIdempotents e) (he' : ∀ (i : Fin n), e i f.range) :
      ∃ (e' : Fin nR), CompleteOrthogonalIdempotents e' f e' = e
      theorem CompleteOrthogonalIdempotents.lift_of_isNilpotent_ker {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) {I : Type u_3} [Fintype I] (h : xRingHom.ker f, IsNilpotent x) {e : IS} (he : CompleteOrthogonalIdempotents e) (he' : ∀ (i : I), e i f.range) :
      ∃ (e' : IR), CompleteOrthogonalIdempotents e' f e' = e

      A system of complete orthogonal idempotents lift along nil ideals.

      theorem eq_of_isNilpotent_sub_of_isIdempotentElem_of_commute {R : Type u_1} [Ring R] {e₁ : R} {e₂ : R} (he₁ : IsIdempotentElem e₁) (he₂ : IsIdempotentElem e₂) (H : IsNilpotent (e₁ - e₂)) (H' : Commute e₁ e₂) :
      e₁ = e₂
      theorem CompleteOrthogonalIdempotents.of_ker_isNilpotent_of_isMulCentral {R : Type u_1} {S : Type u_2} [Ring R] [Ring S] (f : R →+* S) {I : Type u_3} {e : IR} [Fintype I] (h : xRingHom.ker f, IsNilpotent x) (he : ∀ (i : I), IsIdempotentElem (e i)) (he' : ∀ (i : I), IsMulCentral (e i)) (he'' : CompleteOrthogonalIdempotents (f e)) :
      theorem eq_of_isNilpotent_sub_of_isIdempotentElem {R : Type u_1} [CommRing R] {e₁ : R} {e₂ : R} (he₁ : IsIdempotentElem e₁) (he₂ : IsIdempotentElem e₂) (H : IsNilpotent (e₁ - e₂)) :
      e₁ = e₂
      theorem existsUnique_isIdempotentElem_eq_of_ker_isNilpotent {R : Type u_1} {S : Type u_2} [CommRing R] [Ring S] (f : R →+* S) (h : xRingHom.ker f, IsNilpotent x) (e : S) (he : e f.range) (he' : IsIdempotentElem e) :
      ∃! e' : R, IsIdempotentElem e' f e' = e
      theorem OrthogonalIdempotents.surjective_pi {R : Type u_1} [CommRing R] {I : Type u_3} [Finite I] {e : IR} (he : OrthogonalIdempotents e) :

      A family of orthogonal idempotents induces an surjection R ≃+* ∏ R ⧸ ⟨1 - eᵢ⟩

      theorem OrthogonalIdempotents.prod_one_sub {R : Type u_1} [CommRing R] {I : Type u_3} {e : IR} (he : OrthogonalIdempotents e) (s : Finset I) :
      is, (1 - e i) = 1 - is, e i
      theorem CompleteOrthogonalIdempotents.of_ker_isNilpotent {R : Type u_1} {S : Type u_2} [CommRing R] [Ring S] (f : R →+* S) {I : Type u_3} [Fintype I] {e : IR} (h : xRingHom.ker f, IsNilpotent x) (he : ∀ (i : I), IsIdempotentElem (e i)) (he' : CompleteOrthogonalIdempotents (f e)) :
      theorem CompleteOrthogonalIdempotents.prod_one_sub {R : Type u_1} [CommRing R] {I : Type u_3} [Fintype I] {e : IR} (he : CompleteOrthogonalIdempotents e) :
      i : I, (1 - e i) = 0
      theorem CompleteOrthogonalIdempotents.of_prod_one_sub {R : Type u_1} [CommRing R] {I : Type u_3} [Fintype I] {e : IR} (he : OrthogonalIdempotents e) (he' : i : I, (1 - e i) = 0) :
      theorem CompleteOrthogonalIdempotents.bijective_pi {R : Type u_1} [CommRing R] {I : Type u_3} [Fintype I] {e : IR} (he : CompleteOrthogonalIdempotents e) :

      A family of complete orthogonal idempotents induces an isomorphism R ≃+* ∏ R ⧸ ⟨1 - eᵢ⟩

      theorem CompleteOrthogonalIdempotents.bijective_pi' {R : Type u_1} [CommRing R] {I : Type u_3} [Fintype I] {e : IR} (he : CompleteOrthogonalIdempotents fun (x : I) => 1 - e x) :
      theorem bijective_pi_of_isIdempotentElem {R : Type u_1} [CommRing R] {I : Type u_3} [Fintype I] (e : IR) (he : ∀ (i : I), IsIdempotentElem (e i)) (he₁ : ∀ (i j : I), i j(1 - e i) * (1 - e j) = 0) (he₂ : i : I, e i = 0) :