Documentation

LeanPool.ArtinWedderburn.MatrixUnits

Matrix units and the matrix-ring representation #

A ring with abstract matrix units eᵢⱼ is isomorphic to a matrix ring over the corner subring of e₀₀. This file packages the class hasMatrixUnits, the construction of matrix units from OrtIdemDiv, and the explicit ring isomorphism R ≃+* Matrix (Fin n) (Fin n) (e₀₀ R e₀₀).

Class packaging a system of n × n matrix units eᵢⱼ in a ring R.

  • es : Fin nFin nR

    The matrix units indexed by Fin n × Fin n.

  • diag_sum_eq_one : i : Fin n, es i i = 1
  • mul_ij_kl_eq_kron_delta_jk_mul_es_il (i j k l : Fin n) : es i j * es k l = if j = k then es i l else 0
Instances
    theorem LeanPool.ArtinWedderburn.nontrivial_ortidem_n_pos (R : Type u_1) [Ring R] (nontriv : Nontrivial R) (ort_idem : OrtIdemDiv R) :
    0 < ort_idem.n
    theorem LeanPool.ArtinWedderburn.OrtIdem_imply_MatUnits' (R : Type u_1) [Ring R] {n : } (hn : 0 < n) (diag_es : Fin nR) (idem : ∀ (i : Fin n), IsIdempotentElem (diag_es i)) (ort : ∀ (i j : Fin n), i jPairwiseOrthogonal (diag_es i) (diag_es j)) (sum_eq_one : i : Fin n, diag_es i = 1) (row_es : Fin nR) (row_in : ∀ (i : Fin n), row_es i bothMul (diag_es 0, hn) (diag_es i)) (col_es : Fin nR) (col_in : ∀ (i : Fin n), col_es i bothMul (diag_es i) (diag_es 0, hn)) (comp1 : ∀ (i : Fin n), row_es i * col_es i = diag_es 0, hn) (comp2 : ∀ (i : Fin n), col_es i * row_es i = diag_es i) :
    ∃ (mat_units : hasMatrixUnits R n), hasMatrixUnits.es 0, hn 0, hn = diag_es 0, hn
    theorem LeanPool.ArtinWedderburn.lemma_2_20' (R : Type u_1) [Ring R] (prime : IsPrimeRing R) (ort_idem : OrtIdemDiv R) (n_pos : 0 < ort_idem.n) :
    ∃ (mat_units : hasMatrixUnits R ort_idem.n), hasMatrixUnits.es 0, n_pos 0, n_pos = ort_idem.f 0, n_pos
    @[reducible, inline]
    abbrev LeanPool.ArtinWedderburn.e00Cornerring (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] :

    The corner ring of the (0, 0) matrix unit.

    Equations
    Instances For
      theorem LeanPool.ArtinWedderburn.e00_cornerring_1 (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] :
      theorem LeanPool.ArtinWedderburn.ei0e0j_eq_eij (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] (i j : Fin n) :
      def LeanPool.ArtinWedderburn.ijCorner (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] (i j : Fin n) (a : R) :
      (CornerSubring )

      The (i, j)-component e₀ᵢ * a * eⱼ₀ of a : R in the corner ring of e₀₀.

      Equations
      Instances For
        @[reducible, inline]
        abbrev LeanPool.ArtinWedderburn.matrixCorner (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] :
        Type u_1

        The matrix ring Matrix (Fin n) (Fin n) (e₀₀ R e₀₀).

        Equations
        Instances For
          def LeanPool.ArtinWedderburn.ringToMatrixRing (R : Type u_1) [Ring R] (n : ) (hn : 0 < n) (mu : hasMatrixUnits R n) :
          RMatrix (Fin n) (Fin n) (e00Cornerring R)

          The map sending a : R to the matrix with entries e₀ᵢ * a * eⱼ₀.

          Equations
          Instances For
            theorem LeanPool.ArtinWedderburn.ring_to_matrix_ring_additive (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] (a b : R) :
            ringToMatrixRing R n hn mu (a + b) = ringToMatrixRing R n hn mu a + ringToMatrixRing R n hn mu b
            theorem LeanPool.ArtinWedderburn.one_eq_sum_es_00e_00e (R : Type u_1) [Ring R] (n : ) (hn : 0 < n) (mu : hasMatrixUnits R n) :
            theorem LeanPool.ArtinWedderburn.ring_to_matrix_ring_multiplicative (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] (a b : R) :
            ringToMatrixRing R n hn mu (a * b) = ringToMatrixRing R n hn mu a * ringToMatrixRing R n hn mu b
            theorem LeanPool.ArtinWedderburn.matrix_one {n : } (S : Type u_2) [One S] [Zero S] [DecidableEq (Fin n)] :
            1 = fun (i j : Fin n) => if i = j then 1 else 0
            theorem LeanPool.ArtinWedderburn.corner_matrix_zero_equiv (R : Type u_1) [Ring R] {n : } [mu : hasMatrixUnits R n] (a : R) :
            (∀ (i j : Fin n), hasMatrixUnits.es i i * a * hasMatrixUnits.es j j = 0) a = 0
            theorem LeanPool.ArtinWedderburn.corner_matrix_zero_crit (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] (a : R) :
            (∀ (i j : Fin n), ijCorner R i j a = 0)a = 0
            def LeanPool.ArtinWedderburn.ringToMatrixRingHom (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] :
            R →+* Matrix (Fin n) (Fin n) (e00Cornerring R)

            The ring homomorphism from R to the matrix ring over its e₀₀ corner ring.

            Equations
            Instances For
              def LeanPool.ArtinWedderburn.matrixToRing (R : Type u_1) [Ring R] (n : ) (hn : 0 < n) (mu : hasMatrixUnits R n) :
              Matrix (Fin n) (Fin n) (e00Cornerring R)R

              Reassemble a ring element from its matrix of corner components by summing eᵢ₀ * M i j * e₀ⱼ.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem LeanPool.ArtinWedderburn.e0k_left_mul_sum (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] {k : Fin n} {f : Fin nR} :
                theorem LeanPool.ArtinWedderburn.right_mul_sum_e0k (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] {k : Fin n} {f : Fin nR} :
                (∑ i : Fin n, f i * hasMatrixUnits.es 0, hn i) * hasMatrixUnits.es k 0, hn = f k * hasMatrixUnits.es 0, hn 0, hn
                theorem LeanPool.ArtinWedderburn.matrixcorner1 (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] :
                1 = fun (i j : Fin n) => if i = j then 1 else 0
                theorem LeanPool.ArtinWedderburn.e00_unit (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] (a : (e00Cornerring R)) :
                hasMatrixUnits.es 0, hn 0, hn * a = a
                theorem LeanPool.ArtinWedderburn.unit_e00 (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] (a : (e00Cornerring R)) :
                a * hasMatrixUnits.es 0, hn 0, hn = a
                noncomputable def LeanPool.ArtinWedderburn.ringToMatrixIso (R : Type u_1) [Ring R] {n : } {hn : 0 < n} [mu : hasMatrixUnits R n] :
                R ≃+* Matrix (Fin n) (Fin n) (e00Cornerring R)

                A ring with matrix units eᵢⱼ is ring-isomorphic to the matrix ring over the corner ring of e₀₀.

                Equations
                Instances For
                  noncomputable def LeanPool.ArtinWedderburn.ringWithMatrixUnitsIsomorphicToMatrixRing (R : Type u_1) [Ring R] (n : ) (hn : 0 < n) (mu : hasMatrixUnits R n) :
                  R ≃+* Matrix (Fin n) (Fin n) (e00Cornerring R)

                  Lemma 2.17: a ring with matrix units is ring-isomorphic to the matrix ring over the corner ring of e₀₀.

                  Equations
                  Instances For
                    @[reducible]

                    Convert a proof of HasMatrixUnits (a Prop) into a hasMatrixUnits instance (a class) via choice.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For