Documentation

Mathlib.Algebra.Category.ModuleCat.Biproducts

The category of R-modules has finite biproducts #

Construct limit data for a binary product in ModuleCat R, using ModuleCat.of R (M × N).

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem ModuleCat.binaryProductLimitCone_isLimit_lift {R : Type u} [Ring R] (M N : ModuleCat R) (s : CategoryTheory.Limits.Cone (CategoryTheory.Limits.pair M N)) :
    (M.binaryProductLimitCone N).isLimit.lift s = LinearMap.prod (s.app { as := CategoryTheory.Limits.WalkingPair.left }) (s.app { as := CategoryTheory.Limits.WalkingPair.right })
    @[simp]
    theorem ModuleCat.binaryProductLimitCone_cone_pt {R : Type u} [Ring R] (M N : ModuleCat R) :
    (M.binaryProductLimitCone N).cone.pt = ModuleCat.of R (M × N)
    @[simp]
    theorem ModuleCat.binaryProductLimitCone_cone_π_app_left {R : Type u} [Ring R] (M N : ModuleCat R) :
    (M.binaryProductLimitCone N).cone.app { as := CategoryTheory.Limits.WalkingPair.left } = LinearMap.fst R M N
    @[simp]
    theorem ModuleCat.binaryProductLimitCone_cone_π_app_right {R : Type u} [Ring R] (M N : ModuleCat R) :
    (M.binaryProductLimitCone N).cone.app { as := CategoryTheory.Limits.WalkingPair.right } = LinearMap.snd R M N
    noncomputable def ModuleCat.biprodIsoProd {R : Type u} [Ring R] (M N : ModuleCat R) :
    M N ModuleCat.of R (M × N)

    We verify that the biproduct in ModuleCat R is isomorphic to the cartesian product of the underlying types:

    Equations
    Instances For
      @[simp]
      theorem ModuleCat.biprodIsoProd_inv_comp_fst {R : Type u} [Ring R] (M N : ModuleCat R) :
      CategoryTheory.CategoryStruct.comp (M.biprodIsoProd N).inv CategoryTheory.Limits.biprod.fst = LinearMap.fst R M N
      theorem ModuleCat.biprodIsoProd_inv_comp_fst_apply {R : Type u} [Ring R] (M N : ModuleCat R) (x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.of R (M × N))) :
      CategoryTheory.Limits.biprod.fst ((M.biprodIsoProd N).inv x) = (LinearMap.fst R M N) x
      @[simp]
      theorem ModuleCat.biprodIsoProd_inv_comp_snd {R : Type u} [Ring R] (M N : ModuleCat R) :
      CategoryTheory.CategoryStruct.comp (M.biprodIsoProd N).inv CategoryTheory.Limits.biprod.snd = LinearMap.snd R M N
      theorem ModuleCat.biprodIsoProd_inv_comp_snd_apply {R : Type u} [Ring R] (M N : ModuleCat R) (x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.of R (M × N))) :
      CategoryTheory.Limits.biprod.snd ((M.biprodIsoProd N).inv x) = (LinearMap.snd R M N) x
      def ModuleCat.HasLimit.lift {R : Type u} [Ring R] {J : Type w} (f : JModuleCat R) (s : CategoryTheory.Limits.Fan f) :
      s.pt ModuleCat.of R ((j : J) → (f j))

      The map from an arbitrary cone over an indexed family of abelian groups to the cartesian product of those groups.

      Equations
      • ModuleCat.HasLimit.lift f s = { toFun := fun (x : s.pt) (j : J) => (s.app { as := j }) x, map_add' := , map_smul' := }
      Instances For
        @[simp]
        theorem ModuleCat.HasLimit.lift_apply {R : Type u} [Ring R] {J : Type w} (f : JModuleCat R) (s : CategoryTheory.Limits.Fan f) (x : s.pt) (j : J) :
        (ModuleCat.HasLimit.lift f s) x j = (s.app { as := j }) x

        Construct limit data for a product in ModuleCat R, using ModuleCat.of R (∀ j, F.obj j).

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem ModuleCat.HasLimit.productLimitCone_cone_pt {R : Type u} [Ring R] {J : Type w} (f : JModuleCat R) :
          (ModuleCat.HasLimit.productLimitCone f).cone.pt = ModuleCat.of R ((j : J) → (f j))
          noncomputable def ModuleCat.biproductIsoPi {R : Type u} [Ring R] {J : Type} [Finite J] (f : JModuleCat R) :
          f ModuleCat.of R ((j : J) → (f j))

          We verify that the biproduct we've just defined is isomorphic to the ModuleCat R structure on the dependent function type.

          Equations
          Instances For
            theorem ModuleCat.biproductIsoPi_inv_comp_π_apply {R : Type u} [Ring R] {J : Type} [Finite J] (f : JModuleCat R) (j : J) (x : (CategoryTheory.forget (ModuleCat R)).obj (ModuleCat.of R ((j : J) → (f j)))) :
            noncomputable def lequivProdOfRightSplitExact {R : Type u} {A M B : Type v} [Ring R] [AddCommGroup A] [Module R A] [AddCommGroup B] [Module R B] [AddCommGroup M] [Module R M] {j : A →ₗ[R] M} {g : M →ₗ[R] B} {f : B →ₗ[R] M} (hj : Function.Injective j) (exac : LinearMap.range j = LinearMap.ker g) (h : g ∘ₗ f = LinearMap.id) :
            (A × B) ≃ₗ[R] M

            The isomorphism A × B ≃ₗ[R] M coming from a right split exact sequence 0 ⟶ A ⟶ M ⟶ B ⟶ 0 of modules.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              noncomputable def lequivProdOfLeftSplitExact {R : Type u} {A M B : Type v} [Ring R] [AddCommGroup A] [Module R A] [AddCommGroup B] [Module R B] [AddCommGroup M] [Module R M] {j : A →ₗ[R] M} {g : M →ₗ[R] B} {f : M →ₗ[R] A} (hg : Function.Surjective g) (exac : LinearMap.range j = LinearMap.ker g) (h : f ∘ₗ j = LinearMap.id) :
              (A × B) ≃ₗ[R] M

              The isomorphism A × B ≃ₗ[R] M coming from a left split exact sequence 0 ⟶ A ⟶ M ⟶ B ⟶ 0 of modules.

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