Binary biproducts #
We introduce the notion of 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.
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
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.
A morphism between the two vertex objects of the bicones
The triangle consisting of the two natural transformations and
hom
commutesThe triangle consisting of the two natural transformations and
hom
commutesThe triangle consisting of the two natural transformations and
hom
commutesThe triangle consisting of the two natural transformations and
hom
commutes
Instances For
The category of binary bicones on a given diagram.
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.
Instances For
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.
Instances For
Extract the cone from a binary bicone.
Equations
Instances For
Extract the cocone from a binary bicone.
Equations
Instances For
Convert a BinaryBicone
into a Bicone
over a pair.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A shorthand for toBiconeFunctor.obj
Equations
Instances For
A binary bicone is a limit cone if and only if the corresponding bicone is a limit cone.
Equations
Instances For
A binary bicone is a colimit cocone if and only if the corresponding bicone is a colimit cocone.
Equations
Instances For
Convert a Bicone
over a function on WalkingPair
to a BinaryBicone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A shorthand for toBinaryBiconeFunctor.obj
Instances For
A bicone over a pair is a limit cone if and only if the corresponding binary bicone is a limit cone.
Equations
Instances For
A bicone over a pair is a colimit cocone if and only if the corresponding binary bicone is a colimit cocone.
Equations
Instances For
Structure witnessing that a binary bicone is a limit cone and a limit cocone.
Structure witnessing that a binary bicone is a limit cone and a limit cocone.
Structure witnessing that a binary bicone is a limit cone and a limit cocone.
Instances For
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.
Instances For
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.
Instances For
A bicone over P Q : C
, which is both a limit cone and a colimit cocone.
- bicone : BinaryBicone P Q
A bicone over
P Q : C
, which is both a limit cone and a colimit cocone. A bicone over
P Q : C
, which is both a limit cone and a colimit cocone.
Instances For
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 (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
Instances For
A bicone for P Q
which is both a limit cone and a colimit cocone.
Equations
Instances For
BinaryBiproduct.bicone P Q
is a limit bicone.
Equations
Instances For
BinaryBiproduct.bicone P Q
is a limit cone.
Equations
Instances For
BinaryBiproduct.bicone P Q
is a colimit cocone.
Equations
Instances For
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) : 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.
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.
Instances For
An arbitrary choice of biproduct of a pair of objects.
Equations
- (X ⊞ Y) = (CategoryTheory.Limits.BinaryBiproduct.bicone X Y).pt
Instances For
An arbitrary choice of biproduct of a pair of objects.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The projection onto the first summand of a binary biproduct.
Instances For
The projection onto the second summand of a binary biproduct.
Instances For
The inclusion into the first summand of a binary biproduct.
Instances For
The inclusion into the second summand of a binary biproduct.
Instances For
Given a pair of maps into the summands of a binary biproduct, we obtain a map into the binary biproduct.
Equations
Instances For
Given a pair of maps out of the summands of a binary biproduct, we obtain a map out of the binary biproduct.
Equations
Instances For
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.
Instances For
An alternative to biprod.map
constructed via colimits.
This construction only exists in order to show it is equal to biprod.map
.
Equations
Instances For
The canonical isomorphism between the chosen biproduct and the chosen product.
Equations
Instances For
The canonical isomorphism between the chosen biproduct and the chosen coproduct.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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 := ⋯ }
Instances For
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.
Instances For
A kernel fork for the kernel of BinaryBicone.fst
. It consists of the morphism
BinaryBicone.inr
.
Equations
Instances For
A kernel fork for the kernel of BinaryBicone.snd
. It consists of the morphism
BinaryBicone.inl
.
Equations
Instances For
A cokernel cofork for the cokernel of BinaryBicone.inl
. It consists of the morphism
BinaryBicone.snd
.
Equations
Instances For
A cokernel cofork for the cokernel of BinaryBicone.inr
. It consists of the morphism
BinaryBicone.fst
.
Equations
Instances For
The fork defined in BinaryBicone.fstKernelFork
is indeed a kernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The fork defined in BinaryBicone.sndKernelFork
is indeed a kernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cofork defined in BinaryBicone.inlCokernelCofork
is indeed a cokernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cofork defined in BinaryBicone.inrCokernelCofork
is indeed a cokernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A kernel fork for the kernel of biprod.fst
. It consists of the
morphism biprod.inr
.
Equations
Instances For
The fork biprod.fstKernelFork
is indeed a limit.
Equations
Instances For
A kernel fork for the kernel of biprod.snd
. It consists of the
morphism biprod.inl
.
Equations
Instances For
The fork biprod.sndKernelFork
is indeed a limit.
Equations
Instances For
A cokernel cofork for the cokernel of biprod.inl
. It consists of the
morphism biprod.snd
.
Equations
Instances For
The cofork biprod.inlCokernelFork
is indeed a colimit.
Equations
Instances For
A cokernel cofork for the cokernel of biprod.inr
. It consists of the
morphism biprod.fst
.
Equations
Instances For
The cofork biprod.inrCokernelFork
is indeed a colimit.
Equations
Instances For
The kernel of biprod.fst : X ⊞ Y ⟶ X
is Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The kernel of biprod.snd : X ⊞ Y ⟶ Y
is X
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cokernel of biprod.inl : X ⟶ X ⊞ Y
is Y
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The cokernel of biprod.inr : Y ⟶ X ⊞ Y
is X
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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 := ⋯ }
Instances For
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 := ⋯ }
Instances For
The braiding isomorphism which swaps a binary biproduct.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Instances For
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.
Instances For
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)
Instances For
If
(f 0)
(0 g)
is invertible, then f
is invertible.
If
(f 0)
(0 g)
is invertible, then g
is invertible.