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]
@[simp]
theorem ModuleCat.binaryProductLimitCone_isLimit_lift {R : Type u} [Ring R] (M N : ModuleCat R) (s : CategoryTheory.Limits.Cone (CategoryTheory.Limits.pair 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 } = ofHom (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 } = ofHom (LinearMap.snd 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_apply {R : Type u} [Ring R] (M N : ModuleCat R) (x : ↑M × ↑N) :
@[simp]
theorem ModuleCat.biprodIsoProd_inv_comp_snd_apply {R : Type u} [Ring R] (M N : ModuleCat R) (x : ↑M × ↑N) :
def ModuleCat.HasLimit.lift {R : Type u} [Ring R] {J : Type w} (f : J → ModuleCat R) (s : CategoryTheory.Limits.Fan f) :
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 = ModuleCat.ofHom { toFun := fun (x : ↑s.1) (j : J) => (CategoryTheory.ConcreteCategory.hom (s.π.app { as := j })) x, map_add' := ⋯, map_smul' := ⋯ }
Instances For
@[simp]
theorem ModuleCat.HasLimit.lift_hom_apply {R : Type u} [Ring R] {J : Type w} (f : J → ModuleCat R) (s : CategoryTheory.Limits.Fan f) (x : ↑s.1) (j : J) :
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_isLimit_lift {R : Type u} [Ring R] {J : Type w} (f : J → ModuleCat R) (s : CategoryTheory.Limits.Fan f) :
@[simp]
theorem ModuleCat.HasLimit.productLimitCone_cone_π {R : Type u} [Ring R] {J : Type w} (f : J → ModuleCat R) :
(productLimitCone f).cone.π = CategoryTheory.Discrete.natTrans fun (j : CategoryTheory.Discrete J) => ofHom (LinearMap.proj j.as)
@[simp]
theorem ModuleCat.HasLimit.productLimitCone_cone_pt_carrier {R : Type u} [Ring R] {J : Type w} (f : J → ModuleCat R) :
noncomputable def lequivProdOfRightSplitExact {R : Type u} {A : Type uA} {M : Type uM} {B : Type uB} [Ring R] [AddCommGroup A] [AddCommGroup B] [AddCommGroup M] [Module R A] [Module R B] [Module R M] {j : A →ₗ[R] M} {g : M →ₗ[R] B} {f : B →ₗ[R] M} (hj : Function.Injective ⇑j) (exac : j.range = g.ker) (h : g ∘ₗ f = LinearMap.id) :
The isomorphism A × B ≃ₗ[R] M coming from a right split exact sequence 0 ⟶ A ⟶ M ⟶ B ⟶ 0
of modules.
Equations
Instances For
noncomputable def lequivProdOfLeftSplitExact {R : Type u} {A : Type uA} {M : Type uM} {B : Type uB} [Ring R] [AddCommGroup A] [AddCommGroup B] [AddCommGroup M] [Module R A] [Module R B] [Module R M] {j : A →ₗ[R] M} {g : M →ₗ[R] B} {f : M →ₗ[R] A} (hg : Function.Surjective ⇑g) (exac : j.range = g.ker) (h : f ∘ₗ j = LinearMap.id) :
The isomorphism A × B ≃ₗ[R] M coming from a left split exact sequence 0 ⟶ A ⟶ M ⟶ B ⟶ 0
of modules.