mathlib3 documentation

algebra.category.Module.biproducts

The category of R-modules has finite biproducts #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

noncomputable def Module.biprod_iso_prod {R : Type u} [ring R] (M N : Module R) :

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

Equations
def Module.has_limit.lift {R : Type u} [ring R] {J : Type w} (f : J Module R) (s : category_theory.limits.fan f) :
s.X Module.of R (Π (j : J), (f j))

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

Equations
@[simp]
theorem Module.has_limit.lift_apply {R : Type u} [ring R] {J : Type w} (f : J Module R) (s : category_theory.limits.fan f) (x : (s.X)) (j : J) :
(Module.has_limit.lift f s) x j = (s.π.app {as := j}) x

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

Equations
@[simp]
noncomputable def Module.biproduct_iso_pi {R : Type u} [ring R] {J : Type} [fintype J] (f : J Module R) :
f Module.of R (Π (j : J), (f j))

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

Equations
@[simp]
theorem Module.biproduct_iso_pi_inv_comp_π_apply {R : Type u} [ring R] {J : Type} [fintype J] (f : J Module R) (j : J) (x : (Module.of R (Π (j : J), (f j)))) :
noncomputable def lequiv_prod_of_right_split_exact {R : Type u} {A M B : Type v} [ring R] [add_comm_group A] [module R A] [add_comm_group B] [module R B] [add_comm_group M] [module R M] {j : A →ₗ[R] M} {g : M →ₗ[R] B} {f : B →ₗ[R] M} (hj : function.injective j) (exac : linear_map.range j = linear_map.ker g) (h : g.comp f = linear_map.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
noncomputable def lequiv_prod_of_left_split_exact {R : Type u} {A M B : Type v} [ring R] [add_comm_group A] [module R A] [add_comm_group B] [module R B] [add_comm_group M] [module R M] {j : A →ₗ[R] M} {g : M →ₗ[R] B} {f : M →ₗ[R] A} (hg : function.surjective g) (exac : linear_map.range j = linear_map.ker g) (h : f.comp j = linear_map.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