Documentation

Mathlib.LinearAlgebra.Isomorphisms

Isomorphism theorems for modules. #

The first and second isomorphism theorems for modules.

noncomputable def LinearMap.quotKerEquivRange {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup M₂] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) :
(M ker f) ≃ₗ[R] (range f)

The first isomorphism law for modules. The quotient of M by the kernel of f is linearly equivalent to the range of f.

Equations
    Instances For
      noncomputable def LinearMap.quotKerEquivOfSurjective {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup M₂] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) (hf : Function.Surjective f) :
      (M ker f) ≃ₗ[R] M₂

      The first isomorphism theorem for surjective linear maps.

      Equations
        Instances For
          @[simp]
          theorem LinearMap.quotKerEquivRange_apply_mk {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup M₂] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) (x : M) :
          @[simp]
          theorem LinearMap.quotKerEquivOfSurjective_apply_mk {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup M₂] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) (hf : Function.Surjective f) (x : M) :
          @[simp]
          theorem LinearMap.quotKerEquivRange_symm_apply_image {R : Type u_1} {M : Type u_2} {M₂ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup M₂] [Module R M] [Module R M₂] (f : M →ₗ[R] M₂) (x : M) (h : f x range f) :
          @[reducible, inline]
          abbrev LinearMap.subToSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (p p' : Submodule R M) :
          p →ₗ[R] (pp') Submodule.comap (pp').subtype p'

          Linear map from p to p+p'/p' where p p' are submodules of R

          Equations
            Instances For
              theorem LinearMap.comap_leq_ker_subToSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (p p' : Submodule R M) :
              def LinearMap.quotientInfToSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (p p' : Submodule R M) :
              p Submodule.comap p.subtype pSubmodule.comap p.subtype p' →ₗ[R] (pp') Submodule.comap (pp').subtype p'

              Canonical linear map from the quotient p/(p ∩ p') to (p+p')/p', mapping x + (p ∩ p') to x + p', where p and p' are submodules of an ambient module.

              Note that in the following declaration the type of the domain is expressed using ``comap p.subtype p ⊓ comap p.subtype p'instead of `comap p.subtype (p ⊓ p')because the former is the simp normal form (see alsoSubmodule.comap_inf`).

              Equations
                Instances For
                  noncomputable def LinearMap.quotientInfEquivSupQuotient {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (p p' : Submodule R M) :
                  (p Submodule.comap p.subtype pSubmodule.comap p.subtype p') ≃ₗ[R] (pp') Submodule.comap (pp').subtype p'

                  Second Isomorphism Law : the canonical map from p/(p ∩ p') to (p+p')/p' as a linear isomorphism.

                  Note that in the following declaration the type of the domain is expressed using ``comap p.subtype p ⊓ comap p.subtype p'instead of `comap p.subtype (p ⊓ p')because the former is the simp normal form (see alsoSubmodule.comap_inf`).

                  Equations
                    Instances For
                      @[simp]
                      theorem LinearMap.quotientInfEquivSupQuotient_symm_apply_left {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (p p' : Submodule R M) (x : (pp')) (hx : x p) :
                      theorem LinearMap.quotientInfEquivSupQuotient_symm_apply_right {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (p p' : Submodule R M) {x : (pp')} (hx : x p') :

                      The third isomorphism theorem for modules.

                      def Submodule.quotientQuotientEquivQuotientAux {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) (h : S T) :
                      (M S) map S.mkQ T →ₗ[R] M T

                      The map from the third isomorphism theorem for modules: (M / S) / (T / S) → M / T.

                      Equations
                        Instances For
                          @[simp]
                          theorem Submodule.quotientQuotientEquivQuotientAux_mk {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) (h : S T) (x : M S) :
                          def Submodule.quotientQuotientEquivQuotient {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) (h : S T) :
                          ((M S) map S.mkQ T) ≃ₗ[R] M T

                          Noether's third isomorphism theorem for modules: (M / S) / (T / S) ≃ M / T.

                          Equations
                            Instances For
                              def Submodule.quotientQuotientEquivQuotientSup {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) :
                              ((M S) map S.mkQ T) ≃ₗ[R] M ST

                              Essentially the same equivalence as in the third isomorphism theorem, except restated in terms of suprema/addition of submodules instead of .

                              Equations
                                Instances For
                                  theorem Submodule.card_quotient_mul_card_quotient {R : Type u_1} {M : Type u_2} [Ring R] [AddCommGroup M] [Module R M] (S T : Submodule R M) (hST : T S) :
                                  Nat.card (map T.mkQ S) * Nat.card (M S) = Nat.card (M T)

                                  Corollary of the third isomorphism theorem: [S : T] [M : S] = [M : T]