Biproducts and binary biproducts #
We introduce the notion of (finite) biproducts and binary biproducts.
These are slightly unusual relative to the other shapes in the library, as they are simultaneously limits and colimits. (Zero objects are similar; they are "biterminal".)
For results about biproducts in preadditive categories see
CategoryTheory.Preadditive.Biproducts
.
In a category with zero morphisms, we model the (binary) biproduct of P Q : C
using a BinaryBicone
, which has a cone point X
,
and morphisms fst : X ⟶ P
, snd : X ⟶ Q
, inl : P ⟶ X
and inr : X ⟶ Q
,
such that inl ≫ fst = 𝟙 P
, inl ≫ snd = 0
, inr ≫ fst = 0
, and inr ≫ snd = 𝟙 Q
.
Such a BinaryBicone
is a biproduct if the cone is a limit cone, and the cocone is a colimit
cocone.
For biproducts indexed by a Fintype J
, a bicone
again consists of a cone point X
and morphisms π j : X ⟶ F j
and ι j : F j ⟶ X
for each j
,
such that ι j ≫ π j'
is the identity when j = j'
and zero otherwise.
Notation #
As ⊕
is already taken for the sum of types, we introduce the notation X ⊞ Y
for
a binary biproduct. We introduce ⨁ f
for the indexed biproduct.
Implementation notes #
Prior to https://github.com/leanprover-community/mathlib3/pull/14046,
HasFiniteBiproducts
required a DecidableEq
instance on the indexing type.
As this had no pay-off (everything about limits is non-constructive in mathlib),
and occasional cost
(constructing decidability instances appropriate for constructions involving the indexing type),
we made everything classical.
A c : Bicone F
is:
- an object
c.pt
and - morphisms
π j : pt ⟶ F j
andι j : F j ⟶ pt
for eachj
, - such that
ι j ≫ π j'
is the identity whenj = j'
and zero otherwise.
- pt : C
- π : (j : J) → self.pt ⟶ F j
- ι : (j : J) → F j ⟶ self.pt
- ι_π : ∀ (j j' : J), CategoryTheory.CategoryStruct.comp (self.ι j) (self.π j') = if h : j = j' then CategoryTheory.eqToHom ⋯ else 0
Instances For
A bicone morphism between two bicones for the same diagram is a morphism of the bicone points which commutes with the cone and cocone legs.
- hom : A.pt ⟶ B.pt
A morphism between the two vertex objects of the bicones
- wπ : ∀ (j : J), CategoryTheory.CategoryStruct.comp self.hom (B.π j) = A.π j
The triangle consisting of the two natural transformations and
hom
commutes - wι : ∀ (j : J), CategoryTheory.CategoryStruct.comp (A.ι j) self.hom = B.ι j
The triangle consisting of the two natural transformations and
hom
commutes
The category of bicones on a given diagram.
Equations
- CategoryTheory.Limits.Bicone.category = CategoryTheory.Category.mk ⋯ ⋯ ⋯
To give an isomorphism between cocones, it suffices to give an isomorphism between their vertices which commutes with the cocone maps.
Equations
- CategoryTheory.Limits.Bicones.ext φ wι wπ = { hom := { hom := φ.hom, wπ := ⋯, wι := ⋯ }, inv := { hom := φ.inv, wπ := ⋯, wι := ⋯ }, hom_inv_id := ⋯, inv_hom_id := ⋯ }
A functor G : C ⥤ D
sends bicones over F
to bicones over G.obj ∘ F
functorially.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Extract the cone from a bicone.
Equations
- One or more equations did not get rendered due to their size.
A shorthand for toConeFunctor.obj
Equations
- B.toCone = CategoryTheory.Limits.Bicone.toConeFunctor.obj B
Extract the cocone from a bicone.
Equations
- One or more equations did not get rendered due to their size.
A shorthand for toCoconeFunctor.obj
Equations
- B.toCocone = CategoryTheory.Limits.Bicone.toCoconeFunctor.obj B
We can turn any limit cone over a discrete collection of objects into a bicone.
Equations
- One or more equations did not get rendered due to their size.
We can turn any colimit cocone over a discrete collection of objects into a bicone.
Equations
- One or more equations did not get rendered due to their size.
Structure witnessing that a bicone is both a limit cone and a colimit cocone.
- isLimit : CategoryTheory.Limits.IsLimit B.toCone
Structure witnessing that a bicone is both a limit cone and a colimit cocone.
- isColimit : CategoryTheory.Limits.IsColimit B.toCocone
Structure witnessing that a bicone is both a limit cone and a colimit cocone.
Instances For
Equations
- ⋯ = ⋯
Whisker a bicone with an equivalence between the indexing types.
Equations
- c.whisker g = { pt := c.pt, π := fun (k : K) => c.π (g k), ι := fun (k : K) => c.ι (g k), ι_π := ⋯ }
Taking the cone of a whiskered bicone results in a cone isomorphic to one gained by whiskering the cone and postcomposing with a suitable isomorphism.
Equations
- c.whiskerToCone g = CategoryTheory.Limits.Cones.ext (CategoryTheory.Iso.refl (c.whisker g).toCone.pt) ⋯
Taking the cocone of a whiskered bicone results in a cone isomorphic to one gained by whiskering the cocone and precomposing with a suitable isomorphism.
Equations
- c.whiskerToCocone g = CategoryTheory.Limits.Cocones.ext (CategoryTheory.Iso.refl (c.whisker g).toCocone.pt) ⋯
Whiskering a bicone with an equivalence between types preserves being a bilimit bicone.
Equations
- One or more equations did not get rendered due to their size.
A bicone over F : J → C
, which is both a limit cone and a colimit cocone.
- bicone : CategoryTheory.Limits.Bicone F
A bicone over
F : J → C
, which is both a limit cone and a colimit cocone. - isBilimit : self.bicone.IsBilimit
A bicone over
F : J → C
, which is both a limit cone and a colimit cocone.
HasBiproduct F
expresses the mere existence of a bicone which is
simultaneously a limit and a colimit of the diagram F
.
- mk' :: (
- exists_biproduct : Nonempty (CategoryTheory.Limits.LimitBicone F)
HasBiproduct F
expresses the mere existence of a bicone which is simultaneously a limit and a colimit of the diagramF
. - )
Use the axiom of choice to extract explicit BiproductData F
from HasBiproduct F
.
Equations
A bicone for F
which is both a limit cone and a colimit cocone.
Equations
biproduct.bicone F
is a bilimit bicone.
Equations
biproduct.bicone F
is a limit cone.
Equations
- CategoryTheory.Limits.biproduct.isLimit F = (CategoryTheory.Limits.getBiproductData F).isBilimit.isLimit
biproduct.bicone F
is a colimit cocone.
Equations
- CategoryTheory.Limits.biproduct.isColimit F = (CategoryTheory.Limits.getBiproductData F).isBilimit.isColimit
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
C
has biproducts of shape J
if we have
a limit and a colimit, with the same cone points,
of every function F : J → C
.
- has_biproduct : ∀ (F : J → C), CategoryTheory.Limits.HasBiproduct F
HasFiniteBiproducts C
represents a choice of biproduct for every family of objects in C
indexed by a finite type.
- out : ∀ (n : ℕ), CategoryTheory.Limits.HasBiproductsOfShape (Fin n) C
HasFiniteBiproducts C
represents a choice of biproduct for every family of objects inC
indexed by a finite type.
Instances
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The isomorphism between the specified limit and the specified colimit for a functor with a bilimit.
Equations
- One or more equations did not get rendered due to their size.
biproduct f
computes the biproduct of a family of elements f
. (It is defined as an
abbreviation for limit (Discrete.functor f)
, so for most facts about biproduct f
, you will
just use general facts about limits and colimits.)
Equations
- (⨁ f) = (CategoryTheory.Limits.biproduct.bicone f).pt
biproduct f
computes the biproduct of a family of elements f
. (It is defined as an
abbreviation for limit (Discrete.functor f)
, so for most facts about biproduct f
, you will
just use general facts about limits and colimits.)
Equations
- CategoryTheory.Limits.«term⨁_» = Lean.ParserDescr.node `CategoryTheory.Limits.«term⨁_» 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "⨁ ") (Lean.ParserDescr.cat `term 20))
The projection onto a summand of a biproduct.
Equations
The inclusion into a summand of a biproduct.
Equations
Note that as this lemma has an if
in the statement, we include a DecidableEq
argument.
This means you may not be able to simp
using this lemma unless you open scoped Classical
.
Given a collection of maps into the summands, we obtain a map into the biproduct.
Equations
Given a collection of maps out of the summands, we obtain a map out of the biproduct.
Equations
Given a collection of maps between corresponding summands of a pair of biproducts indexed by the same type, we obtain a map between the biproducts.
Equations
- One or more equations did not get rendered due to their size.
An alternative to biproduct.map
constructed via colimits.
This construction only exists in order to show it is equal to biproduct.map
.
Equations
- One or more equations did not get rendered due to their size.
The canonical isomorphism between the chosen biproduct and the chosen product.
Equations
- CategoryTheory.Limits.biproduct.isoProduct f = (CategoryTheory.Limits.biproduct.isLimit f).conePointUniqueUpToIso (CategoryTheory.Limits.limit.isLimit (CategoryTheory.Discrete.functor f))
The canonical isomorphism between the chosen biproduct and the chosen coproduct.
Equations
- One or more equations did not get rendered due to their size.
If a category has biproducts of a shape J
, its colim
and lim
functor on diagrams over J
are isomorphic.
Equations
- One or more equations did not get rendered due to their size.
Given a collection of isomorphisms between corresponding summands of a pair of biproducts indexed by the same type, we obtain an isomorphism between the biproducts.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Two biproducts which differ by an equivalence in the indexing type, and up to isomorphism in the factors, are isomorphic.
Unfortunately there are two natural ways to define each direction of this isomorphism (because it is true for both products and coproducts separately). We give the alternative definitions as lemmas below.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
An iterated biproduct is a biproduct over a sigma type.
Equations
- One or more equations did not get rendered due to their size.
The canonical morphism from the biproduct over a restricted index type to the biproduct of the full index type.
Equations
Instances For
The canonical morphism from a biproduct to the biproduct over a restriction of its index type.
Equations
Instances For
The kernel of biproduct.π f i
is the inclusion from the biproduct which omits i
from the index set J
into the biproduct over J
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The kernel of biproduct.π f i
is ⨁ Subtype.restrict {i}ᶜ f
.
Equations
- One or more equations did not get rendered due to their size.
The cokernel of biproduct.ι f i
is the projection from the biproduct over the index set J
onto the biproduct omitting i
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The cokernel of biproduct.ι f i
is ⨁ Subtype.restrict {i}ᶜ f
.
Equations
- One or more equations did not get rendered due to their size.
The limit cone exhibiting ⨁ Subtype.restrict pᶜ f
as the kernel of
biproduct.toSubtype f p
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The kernel of biproduct.toSubtype f p
is ⨁ Subtype.restrict pᶜ f
.
The colimit cocone exhibiting ⨁ Subtype.restrict pᶜ f
as the cokernel of
biproduct.fromSubtype f p
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The cokernel of biproduct.fromSubtype f p
is ⨁ Subtype.restrict pᶜ f
.
Convert a (dependently typed) matrix to a morphism of biproducts.
Equations
- CategoryTheory.Limits.biproduct.matrix m = CategoryTheory.Limits.biproduct.desc fun (j : J) => CategoryTheory.Limits.biproduct.lift fun (k : K) => m j k
Extract the matrix components from a morphism of biproducts.
Equations
- One or more equations did not get rendered due to their size.
Morphisms between direct sums are matrices.
Equations
- CategoryTheory.Limits.biproduct.matrixEquiv = { toFun := CategoryTheory.Limits.biproduct.components, invFun := CategoryTheory.Limits.biproduct.matrix, left_inv := ⋯, right_inv := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Auxiliary lemma for biproduct.uniqueUpToIso
.
Auxiliary lemma for biproduct.uniqueUpToIso
.
Biproducts are unique up to isomorphism. This already follows because bilimits are limits,
but in the case of biproducts we can give an isomorphism with particularly nice definitional
properties, namely that biproduct.lift b.π
and biproduct.desc b.ι
are inverses of each
other.
Equations
- CategoryTheory.Limits.biproduct.uniqueUpToIso f hb = { hom := CategoryTheory.Limits.biproduct.lift b.π, inv := CategoryTheory.Limits.biproduct.desc b.ι, hom_inv_id := ⋯, inv_hom_id := ⋯ }
A category with finite biproducts has a zero object.
Equations
- ⋯ = ⋯
The limit bicone for the biproduct over an index type with exactly one term.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
A biproduct over an index type with exactly one term is just the object over that term.
Equations
A binary bicone for a pair of objects P Q : C
consists of the cone point X
,
maps from X
to both P
and Q
, and maps from both P
and Q
to X
,
so that inl ≫ fst = 𝟙 P
, inl ≫ snd = 0
, inr ≫ fst = 0
, and inr ≫ snd = 𝟙 Q
- pt : C
- fst : self.pt ⟶ P
- snd : self.pt ⟶ Q
- inl : P ⟶ self.pt
- inr : Q ⟶ self.pt
- inl_fst : CategoryTheory.CategoryStruct.comp self.inl self.fst = CategoryTheory.CategoryStruct.id P
- inl_snd : CategoryTheory.CategoryStruct.comp self.inl self.snd = 0
- inr_fst : CategoryTheory.CategoryStruct.comp self.inr self.fst = 0
- inr_snd : CategoryTheory.CategoryStruct.comp self.inr self.snd = CategoryTheory.CategoryStruct.id Q
Instances For
A binary bicone morphism between two binary bicones for the same diagram is a morphism of the binary bicone points which commutes with the cone and cocone legs.
- hom : A.pt ⟶ B.pt
A morphism between the two vertex objects of the bicones
- wfst : CategoryTheory.CategoryStruct.comp self.hom B.fst = A.fst
The triangle consisting of the two natural transformations and
hom
commutes - wsnd : CategoryTheory.CategoryStruct.comp self.hom B.snd = A.snd
The triangle consisting of the two natural transformations and
hom
commutes - winl : CategoryTheory.CategoryStruct.comp A.inl self.hom = B.inl
The triangle consisting of the two natural transformations and
hom
commutes - winr : CategoryTheory.CategoryStruct.comp A.inr self.hom = B.inr
The triangle consisting of the two natural transformations and
hom
commutes
The category of binary bicones on a given diagram.
Equations
- CategoryTheory.Limits.BinaryBicone.category = CategoryTheory.Category.mk ⋯ ⋯ ⋯
To give an isomorphism between cocones, it suffices to give an isomorphism between their vertices which commutes with the cocone maps.
Equations
- One or more equations did not get rendered due to their size.
A functor F : C ⥤ D
sends binary bicones for P
and Q
to binary bicones for G.obj P
and G.obj Q
functorially.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Extract the cone from a binary bicone.
Equations
- c.toCone = CategoryTheory.Limits.BinaryFan.mk c.fst c.snd
Extract the cocone from a binary bicone.
Equations
- c.toCocone = CategoryTheory.Limits.BinaryCofan.mk c.inl c.inr
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Convert a BinaryBicone
into a Bicone
over a pair.
Equations
- One or more equations did not get rendered due to their size.
A shorthand for toBiconeFunctor.obj
Equations
- b.toBicone = CategoryTheory.Limits.BinaryBicone.toBiconeFunctor.obj b
A binary bicone is a limit cone if and only if the corresponding bicone is a limit cone.
Equations
- b.toBiconeIsLimit = CategoryTheory.Limits.IsLimit.equivIsoLimit (CategoryTheory.Limits.Cones.ext (CategoryTheory.Iso.refl b.toBicone.toCone.pt) ⋯)
A binary bicone is a colimit cocone if and only if the corresponding bicone is a colimit cocone.
Equations
- b.toBiconeIsColimit = CategoryTheory.Limits.IsColimit.equivIsoColimit (CategoryTheory.Limits.Cocones.ext (CategoryTheory.Iso.refl b.toBicone.toCocone.pt) ⋯)
Convert a Bicone
over a function on WalkingPair
to a BinaryBicone.
Equations
- One or more equations did not get rendered due to their size.
A shorthand for toBinaryBiconeFunctor.obj
Equations
- b.toBinaryBicone = CategoryTheory.Limits.Bicone.toBinaryBiconeFunctor.obj b
A bicone over a pair is a limit cone if and only if the corresponding binary bicone is a limit cone.
Equations
- b.toBinaryBiconeIsLimit = CategoryTheory.Limits.IsLimit.equivIsoLimit (CategoryTheory.Limits.Cones.ext (CategoryTheory.Iso.refl b.toBinaryBicone.toCone.pt) ⋯)
A bicone over a pair is a colimit cocone if and only if the corresponding binary bicone is a colimit cocone.
Equations
- b.toBinaryBiconeIsColimit = CategoryTheory.Limits.IsColimit.equivIsoColimit (CategoryTheory.Limits.Cocones.ext (CategoryTheory.Iso.refl b.toBinaryBicone.toCocone.pt) ⋯)
Structure witnessing that a binary bicone is a limit cone and a limit cocone.
- isLimit : CategoryTheory.Limits.IsLimit b.toCone
Structure witnessing that a binary bicone is a limit cone and a limit cocone.
- isColimit : CategoryTheory.Limits.IsColimit b.toCocone
Structure witnessing that a binary bicone is a limit cone and a limit cocone.
A binary bicone is a bilimit bicone if and only if the corresponding bicone is a bilimit.
Equations
- One or more equations did not get rendered due to their size.
A bicone over a pair is a bilimit bicone if and only if the corresponding binary bicone is a bilimit.
Equations
- One or more equations did not get rendered due to their size.
A bicone over P Q : C
, which is both a limit cone and a colimit cocone.
- bicone : CategoryTheory.Limits.BinaryBicone P Q
A bicone over
P Q : C
, which is both a limit cone and a colimit cocone. - isBilimit : self.bicone.IsBilimit
A bicone over
P Q : C
, which is both a limit cone and a colimit cocone.
HasBinaryBiproduct P Q
expresses the mere existence of a bicone which is
simultaneously a limit and a colimit of the diagram pair P Q
.
- mk' :: (
- exists_binary_biproduct : Nonempty (CategoryTheory.Limits.BinaryBiproductData P Q)
HasBinaryBiproduct P Q
expresses the mere existence of a bicone which is simultaneously a limit and a colimit of the diagrampair P Q
. - )
Instances
Use the axiom of choice to extract explicit BinaryBiproductData F
from HasBinaryBiproduct F
.
Equations
A bicone for P Q
which is both a limit cone and a colimit cocone.
Equations
BinaryBiproduct.bicone P Q
is a limit bicone.
Equations
BinaryBiproduct.bicone P Q
is a limit cone.
Equations
- CategoryTheory.Limits.BinaryBiproduct.isLimit P Q = (CategoryTheory.Limits.getBinaryBiproductData P Q).isBilimit.isLimit
BinaryBiproduct.bicone P Q
is a colimit cocone.
Equations
- CategoryTheory.Limits.BinaryBiproduct.isColimit P Q = (CategoryTheory.Limits.getBinaryBiproductData P Q).isBilimit.isColimit
HasBinaryBiproducts C
represents the existence of a bicone which is
simultaneously a limit and a colimit of the diagram pair P Q
, for every P Q : C
.
- has_binary_biproduct : ∀ (P Q : C), CategoryTheory.Limits.HasBinaryBiproduct P Q
Instances
A category with finite biproducts has binary biproducts.
This is not an instance as typically in concrete categories there will be an alternative construction with nicer definitional properties.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The isomorphism between the specified binary product and the specified binary coproduct for a pair for a binary biproduct.
Equations
- One or more equations did not get rendered due to their size.
An arbitrary choice of biproduct of a pair of objects.
Equations
- (X ⊞ Y) = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).pt
An arbitrary choice of biproduct of a pair of objects.
Equations
- One or more equations did not get rendered due to their size.
The projection onto the first summand of a binary biproduct.
Equations
- CategoryTheory.Limits.biprod.fst = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).fst
The projection onto the second summand of a binary biproduct.
Equations
- CategoryTheory.Limits.biprod.snd = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).snd
The inclusion into the first summand of a binary biproduct.
Equations
- CategoryTheory.Limits.biprod.inl = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).inl
The inclusion into the second summand of a binary biproduct.
Equations
- CategoryTheory.Limits.biprod.inr = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).inr
Given a pair of maps into the summands of a binary biproduct, we obtain a map into the binary biproduct.
Equations
Given a pair of maps out of the summands of a binary biproduct, we obtain a map out of the binary biproduct.
Equations
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Given a pair of maps between the summands of a pair of binary biproducts, we obtain a map between the binary biproducts.
Equations
- One or more equations did not get rendered due to their size.
An alternative to biprod.map
constructed via colimits.
This construction only exists in order to show it is equal to biprod.map
.
Equations
- CategoryTheory.Limits.biprod.map' f g = (CategoryTheory.Limits.BinaryBiproduct.isColimit W X).map (CategoryTheory.Limits.BinaryBiproduct.bicone Y Z).toCocone (CategoryTheory.Limits.mapPair f g)
The canonical isomorphism between the chosen biproduct and the chosen product.
Equations
- CategoryTheory.Limits.biprod.isoProd X Y = (CategoryTheory.Limits.BinaryBiproduct.isLimit X Y).conePointUniqueUpToIso (CategoryTheory.Limits.limit.isLimit (CategoryTheory.Limits.pair X Y))
The canonical isomorphism between the chosen biproduct and the chosen coproduct.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Given a pair of isomorphisms between the summands of a pair of binary biproducts, we obtain an isomorphism between the binary biproducts.
Equations
- CategoryTheory.Limits.biprod.mapIso f g = { hom := CategoryTheory.Limits.biprod.map f.hom g.hom, inv := CategoryTheory.Limits.biprod.map f.inv g.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Auxiliary lemma for biprod.uniqueUpToIso
.
Auxiliary lemma for biprod.uniqueUpToIso
.
Binary biproducts are unique up to isomorphism. This already follows because bilimits are
limits, but in the case of biproducts we can give an isomorphism with particularly nice
definitional properties, namely that biprod.lift b.fst b.snd
and biprod.desc b.inl b.inr
are inverses of each other.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
A kernel fork for the kernel of BinaryBicone.fst
. It consists of the morphism
BinaryBicone.inr
.
Equations
- c.fstKernelFork = CategoryTheory.Limits.KernelFork.ofι c.inr ⋯
A kernel fork for the kernel of BinaryBicone.snd
. It consists of the morphism
BinaryBicone.inl
.
Equations
- c.sndKernelFork = CategoryTheory.Limits.KernelFork.ofι c.inl ⋯
A cokernel cofork for the cokernel of BinaryBicone.inl
. It consists of the morphism
BinaryBicone.snd
.
Equations
- c.inlCokernelCofork = CategoryTheory.Limits.CokernelCofork.ofπ c.snd ⋯
A cokernel cofork for the cokernel of BinaryBicone.inr
. It consists of the morphism
BinaryBicone.fst
.
Equations
- c.inrCokernelCofork = CategoryTheory.Limits.CokernelCofork.ofπ c.fst ⋯
The fork defined in BinaryBicone.fstKernelFork
is indeed a kernel.
Equations
- One or more equations did not get rendered due to their size.
The fork defined in BinaryBicone.sndKernelFork
is indeed a kernel.
Equations
- One or more equations did not get rendered due to their size.
The cofork defined in BinaryBicone.inlCokernelCofork
is indeed a cokernel.
Equations
- One or more equations did not get rendered due to their size.
The cofork defined in BinaryBicone.inrCokernelCofork
is indeed a cokernel.
Equations
- One or more equations did not get rendered due to their size.
A kernel fork for the kernel of biprod.fst
. It consists of the
morphism biprod.inr
.
Equations
- CategoryTheory.Limits.biprod.fstKernelFork X Y = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).fstKernelFork
The fork biprod.fstKernelFork
is indeed a limit.
A kernel fork for the kernel of biprod.snd
. It consists of the
morphism biprod.inl
.
Equations
- CategoryTheory.Limits.biprod.sndKernelFork X Y = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).sndKernelFork
The fork biprod.sndKernelFork
is indeed a limit.
A cokernel cofork for the cokernel of biprod.inl
. It consists of the
morphism biprod.snd
.
Equations
- CategoryTheory.Limits.biprod.inlCokernelCofork X Y = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).inlCokernelCofork
The cofork biprod.inlCokernelFork
is indeed a colimit.
A cokernel cofork for the cokernel of biprod.inr
. It consists of the
morphism biprod.fst
.
Equations
- CategoryTheory.Limits.biprod.inrCokernelCofork X Y = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).inrCokernelCofork
The cofork biprod.inrCokernelFork
is indeed a colimit.
Equations
- ⋯ = ⋯
The kernel of biprod.fst : X ⊞ Y ⟶ X
is Y
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The kernel of biprod.snd : X ⊞ Y ⟶ Y
is X
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The cokernel of biprod.inl : X ⟶ X ⊞ Y
is Y
.
Equations
- One or more equations did not get rendered due to their size.
Equations
- ⋯ = ⋯
The cokernel of biprod.inr : Y ⟶ X ⊞ Y
is X
.
Equations
- One or more equations did not get rendered due to their size.
If Y
is a zero object, X ≅ X ⊞ Y
for any X
.
Equations
- CategoryTheory.Limits.isoBiprodZero hY = { hom := CategoryTheory.Limits.biprod.inl, inv := CategoryTheory.Limits.biprod.fst, hom_inv_id := ⋯, inv_hom_id := ⋯ }
If X
is a zero object, Y ≅ X ⊞ Y
for any Y
.
Equations
- CategoryTheory.Limits.isoZeroBiprod hY = { hom := CategoryTheory.Limits.biprod.inr, inv := CategoryTheory.Limits.biprod.snd, hom_inv_id := ⋯, inv_hom_id := ⋯ }
The braiding isomorphism which swaps a binary biproduct.
Equations
- One or more equations did not get rendered due to their size.
An alternative formula for the braiding isomorphism which swaps a binary biproduct, using the fact that the biproduct is a coproduct.
Equations
- One or more equations did not get rendered due to their size.
The braiding isomorphism can be passed through a map by swapping the order.
The braiding isomorphism is symmetric.
The associator isomorphism which associates a binary biproduct.
Equations
- One or more equations did not get rendered due to their size.
The associator isomorphism can be passed through a map by swapping the order.
The associator isomorphism can be passed through a map by swapping the order.
An object is indecomposable if it cannot be written as the biproduct of two nonzero objects.
Equations
- CategoryTheory.Indecomposable X = (¬CategoryTheory.Limits.IsZero X ∧ ∀ (Y Z : C), (X ≅ Y ⊞ Z) → CategoryTheory.Limits.IsZero Y ∨ CategoryTheory.Limits.IsZero Z)
If
(f 0)
(0 g)
is invertible, then f
is invertible.
If
(f 0)
(0 g)
is invertible, then g
is invertible.