Modules over a monoid object form an abelian category #
Mathlib's CategoryTheory.Mod D A carries no additive structure.
This file supplies it, for A a monoid object in a monoidally
preadditive category D, and upgrades it to an abelian structure
when D is abelian and tensoring on the left is right exact.
Everything is computed in D and transported along the forgetful
functor:
- hom-groups are the subgroups of
D's hom-groups cut out by the intertwining condition — closed under addition becauseA ◁ −is additive; - the zero module is the zero object of
Dwith the zero action, and the biproduct ofRS.modBiprodexhibits binary biproducts; - the kernel of a module map is the kernel of its underlying
morphism, with the action restricted by the universal property of
the kernel: no exactness hypothesis is needed, since the
restricted action is produced by
kernel.lift; - the cokernel is the cokernel of the underlying morphism, with the
action descended along
A ◁ cokernel.π; here right exactness ofZ ◁ −is what makes the descent possible, and the module laws are checked after cancelling the epimorphisms𝟙_ D ◁ cokernel.πand(A ⊗ A) ◁ cokernel.π; - a module map is a monomorphism exactly when its underlying
morphism is, and likewise for epimorphisms, so normality in
Dtransports: the route toCategoryTheory.Abelianis the normality route, as for super modules inRS/Classical/Deligne/SuperModAbelian.lean.
The second half of the file is independent of module theory: in any
abelian category, a subobject of a finite direct sum of simple
objects is the direct sum of a sublist of them, and dually for
quotients. The engine is RS.idxSum, the direct sum of a list of
indices into a family of objects, and the two theorems
RS.exists_sublist_iso_of_mono/RS.exists_sublist_iso_of_epi are
proved by induction on the list from the two splitting lemmas
RS.isoBiprodOfRetraction/RS.isoBiprodOfSection: at each step
the intersection with the leading summand is a subobject of a
simple object, hence zero or the whole of it, and in either case
the inclusion of the kernel is split. The specialisations to a
Fin n-indexed biproduct
(RS.exists_sublist_iso_biproduct_of_mono and its epimorphism
companion) and to a sum of copies of two simple objects
(RS.exists_mixSum_iso_of_mono and its companion) follow.
The additive structure on module maps #
The zero morphism of carriers intertwines the actions.
A sum of module maps intertwines the actions.
The negative of a module map intertwines the actions.
The sum of two module maps.
Instances For
The zero module map.
Equations
Instances For
The negative of a module map.
Equations
- RS.homNeg f = CategoryTheory.Mod.Hom.mk' (-f.hom) ⋯
Instances For
Equations
- RS.instAddHomMod = { add := RS.homAdd }
Equations
- RS.instZeroHomMod = { zero := RS.homZero }
Equations
- RS.instNegHomMod = { neg := RS.homNeg }
The hom-groups of the category of modules.
Equations
- One or more equations did not get rendered due to their size.
Modules over a monoid object are preadditive, with hom-groups the intertwining subgroups of the ambient hom-groups.
Equations
- RS.instPreadditiveMod = { homGroup := fun (x x_1 : CategoryTheory.Mod D A) => RS.instAddCommGroupHomMod, add_comp := ⋯, comp_add := ⋯ }
The forgetful functor is additive.
The forgetful functor is faithful.
A module map whose underlying morphism is a monomorphism is a monomorphism.
A module map whose underlying morphism is an epimorphism is an epimorphism.
The zero module #
The zero object of D is a module, with the zero action.
Equations
- RS.zeroModObj A = { smul := 0, one_smul := ⋯, mul_smul := ⋯ }
Instances For
The zero module.
Equations
- RS.zeroMod A = { X := 0, mod := RS.zeroModObj A }
Instances For
The zero module is a zero object.
Modules over a monoid object have a zero object.
Binary biproducts #
The binary bicone carried by the biproduct of two modules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The bicone of the module biproduct is total.
The bicone of the module biproduct is a bilimit.
Equations
Instances For
Modules over a monoid object have binary biproducts.
Finite biproducts #
The componentwise action on a finite biproduct of carriers.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Unitality of the componentwise action.
Associativity of the componentwise action.
The module structure on a finite biproduct of carriers.
Equations
- RS.modBiproductModObj A M = { smul := RS.modBiproductAct A M, one_smul := ⋯, mul_smul := ⋯ }
Instances For
The finite biproduct of modules, bundled.
Equations
- RS.modBiproduct A M = { X := ⨁ fun (j : K) => (M j).X, mod := RS.modBiproductModObj A M }
Instances For
The projections of the biproduct are module maps.
Equations
- RS.modBiproductπ A M j = CategoryTheory.Mod.Hom.mk' (CategoryTheory.Limits.biproduct.π (fun (j : K) => (M j).X) j) ⋯
Instances For
The injections intertwine the actions.
The injections of the biproduct are module maps.
Equations
- RS.modBiproductInj A M j = CategoryTheory.Mod.Hom.mk' (CategoryTheory.Limits.biproduct.ι (fun (j : K) => (M j).X) j) ⋯
Instances For
The bicone carried by the finite biproduct of modules.
Equations
- RS.modBicone A M = { pt := RS.modBiproduct A M, π := RS.modBiproductπ A M, ι := RS.modBiproductInj A M, ι_π := ⋯ }
Instances For
Taking the underlying morphism of a module map is additive.
Equations
Instances For
The bicone of the finite biproduct of modules is total.
Modules over a monoid object have finite biproducts, computed in the ambient category.
Finite products #
Modules over a monoid object have finite products.
Kernels #
The action carried by the kernel lands in the kernel.
The action on the kernel of the underlying morphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Unitality of the action on the kernel.
Associativity of the action on the kernel.
The module structure on the kernel of the underlying morphism.
Equations
- RS.kerModObj A f = { smul := RS.kerAct A f, one_smul := ⋯, mul_smul := ⋯ }
Instances For
The kernel of a module map, bundled.
Equations
- RS.kerMod A f = { X := CategoryTheory.Limits.kernel f.hom, mod := RS.kerModObj A f }
Instances For
The inclusion of the kernel of a module map.
Equations
Instances For
The inclusion of the kernel is annihilated by the map.
The inclusion of the kernel is a monomorphism.
The lift of a module map annihilated by f through the
inclusion of the kernel.
Equations
- RS.kerLift A f k hk = CategoryTheory.Mod.Hom.mk' (CategoryTheory.Limits.kernel.lift f.hom k.hom ⋯) ⋯
Instances For
The lift through the kernel recovers the given map.
The kernel fork of a module map.
Equations
Instances For
The kernel fork of a module map is limiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Modules over a monoid object have kernels, computed in the ambient category.
Cokernels #
Whiskering a cokernel projection leaves an epimorphism.
Descent along a whiskered cokernel projection.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The descended action is well defined.
The action on the cokernel of the underlying morphism.
Equations
- RS.cokerAct A f = RS.whiskerCokernelDesc A f.hom (CategoryTheory.CategoryStruct.comp (RS.actLeft A N.X) (CategoryTheory.Limits.cokernel.π f.hom)) ⋯
Instances For
Unitality of the action on the cokernel.
Associativity of the action on the cokernel.
The module structure on the cokernel of the underlying morphism.
Equations
- RS.cokerModObj A f = { smul := RS.cokerAct A f, one_smul := ⋯, mul_smul := ⋯ }
Instances For
The cokernel of a module map, bundled.
Equations
- RS.cokerMod A f = { X := CategoryTheory.Limits.cokernel f.hom, mod := RS.cokerModObj A f }
Instances For
The projection onto the cokernel of a module map.
Equations
Instances For
The projection onto the cokernel annihilates the map.
The projection onto the cokernel is an epimorphism.
The descent of a module map annihilating f through the
projection onto the cokernel.
Equations
- RS.cokerDesc A f k hk = CategoryTheory.Mod.Hom.mk' (CategoryTheory.Limits.cokernel.desc f.hom k.hom ⋯) ⋯
Instances For
The descent through the cokernel recovers the given map.
The cokernel cofork of a module map.
Equations
Instances For
The cokernel cofork of a module map is colimiting.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Modules over a monoid object have cokernels, computed in the ambient category.
The monomorphism and epimorphism bridges #
A module map is a monomorphism exactly when its underlying morphism is.
Whiskering preserves epimorphisms: an epimorphism of an abelian category is the cokernel of its kernel, and tensoring on the left preserves that cokernel.
A module map is an epimorphism exactly when its underlying morphism is.
Normality and abelianness #
A module map annihilated by the projection onto the cokernel is annihilated by the underlying cokernel projection.
The underlying factorisation through a monomorphic module map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The underlying factorisation intertwines the actions.
The factorisation through a monomorphism of a module map annihilated by the projection onto its cokernel.
Equations
- RS.monoLift A φ k hk = CategoryTheory.Mod.Hom.mk' (RS.monoLiftHom A φ k hk) ⋯
Instances For
The factorisation through a monomorphism recovers the given map.
A module map with monomorphic underlying morphism is the kernel of its cokernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A module map annihilating the inclusion of the kernel is annihilated by the underlying kernel inclusion.
The underlying factorisation through an epimorphic module map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The underlying factorisation recovers the given map.
The underlying factorisation recovers the given map.
The underlying factorisation intertwines the actions.
The factorisation through an epimorphism of a module map annihilating the inclusion of its kernel.
Equations
- RS.epiDesc A φ k hk = CategoryTheory.Mod.Hom.mk' (RS.epiDescHom A φ k hk) ⋯
Instances For
The factorisation through an epimorphism recovers the given map.
A module map with epimorphic underlying morphism is the cokernel of its kernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every monomorphism of modules is a kernel.
Every epimorphism of modules is a cokernel.
Modules over a monoid object in an abelian monoidally preadditive category with right-exact tensor form an abelian category.
Equations
- RS.instAbelianMod A = { toPreadditive := RS.instPreadditiveMod, toIsNormalMonoCategory := ⋯, toIsNormalEpiCategory := ⋯, has_finite_products := ⋯, has_kernels := ⋯, has_cokernels := ⋯ }
The forgetful functor preserves monomorphisms.
The forgetful functor reflects monomorphisms.
The forgetful functor preserves epimorphisms.
The forgetful functor reflects epimorphisms.
Splitting off a retraction or a section #
The section of the cokernel projection determined by a retraction.
Equations
Instances For
The section is a section of the cokernel projection.
The section is annihilated by the retraction.
The bicone exhibiting the ambient object as the biproduct of a split monomorphism and its cokernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The bicone determined by a retraction is total.
A retraction splits off the cokernel: if k : K ⟶ N has a
retraction then N is the biproduct of K and the cokernel of
k.
Equations
Instances For
The retraction of the kernel inclusion determined by a section.
Equations
Instances For
The retraction is a retraction of the kernel inclusion.
The section is annihilated by the retraction.
The bicone exhibiting the ambient object as the biproduct of the kernel of a split epimorphism and its target.
Equations
- RS.sectionBicone c s hs = { pt := N, fst := RS.sectionRetraction c s hs, snd := c, inl := CategoryTheory.Limits.kernel.ι c, inr := s, inl_fst := ⋯, inl_snd := ⋯, inr_fst := ⋯, inr_snd := hs }
Instances For
The bicone determined by a section is total.
A section splits off the kernel: if c : N ⟶ C has a
section then N is the biproduct of the kernel of c and C.
Equations
Instances For
Subobjects and quotients of a finite sum of simples #
The inductive step for subobjects: a subobject of X ⊞ T
with X simple is either a subobject of T, or the sum of X
with one.
The inductive step for quotients: a quotient of X ⊞ T
with X simple is either a quotient of T, or the sum of X
with one.
The direct sum of a list of indices, formed by iterated binary biproducts from a family of objects.
Instances For
A subobject of a finite direct sum of simple objects is the direct sum of a sublist of them.
A quotient of a finite direct sum of simple objects is the direct sum of a sublist of them.
Sums of copies of two simple objects #
The direct sum of p copies of X and q copies of Y.
Equations
- RS.mixSum X Y p q = RS.idxSum id (List.replicate p X ++ List.replicate q Y)
Instances For
Every entry of a mixed replicate list is one of the two given objects.
A subobject of a sum of p copies of a simple object and q
copies of another is a sum of p' ≤ p copies of the first and
q' ≤ q copies of the second.
A quotient of a sum of p copies of a simple object and q
copies of another is a sum of p' ≤ p copies of the first and
q' ≤ q copies of the second.
The bicone splitting off the zeroth summand of a biproduct
indexed by Fin (n + 1).
Equations
- One or more equations did not get rendered due to their size.
Instances For
A biproduct indexed by Fin (n + 1) splits off its zeroth
summand.
Equations
- RS.biproductFinSuccIso S = CategoryTheory.Limits.biprod.uniqueUpToIso (S 0) (⨁ fun (i : Fin n) => S i.succ) (CategoryTheory.Limits.isBinaryBilimitOfTotal (RS.finSuccBicone S) ⋯)
Instances For
Reindexing a list sum along a map of indices.
A biproduct indexed by Fin n is the sum over the list of
its indices.
A subobject of a finite biproduct of simple objects is the sum over a sublist of the indices.