Binary (co)products #
We define a category WalkingPair
, which is the index category
for a binary (co)product diagram. A convenience method pair X Y
constructs the functor from the walking pair, hitting the given objects.
We define prod X Y
and coprod X Y
as limits and colimits of such functors.
Typeclasses HasBinaryProducts
and HasBinaryCoproducts
assert the existence
of (co)limits shaped as walking pairs.
We include lemmas for simplifying equations involving projections and coprojections, and define braiding and associating isomorphisms, and the product comparison morphism.
References #
The type of objects for the diagram indexing a binary (co)product.
Equations
- CategoryTheory.Limits.instDecidableEqWalkingPair x y = if h : x.toCtorIdx = y.toCtorIdx then isTrue ⋯ else isFalse ⋯
The equivalence swapping left and right.
Equations
- One or more equations did not get rendered due to their size.
An equivalence from WalkingPair
to Bool
, sometimes useful when reindexing limits.
Equations
- One or more equations did not get rendered due to their size.
The function on the walking pair, sending the two points to X
and Y
.
Equations
The diagram on the walking pair, sending the two points to X
and Y
.
Equations
The natural transformation between two functors out of the walking pair, specified by its components.
Equations
- One or more equations did not get rendered due to their size.
The natural isomorphism between two functors out of the walking pair, specified by its components.
Equations
- One or more equations did not get rendered due to their size.
Every functor out of the walking pair is naturally isomorphic (actually, equal) to a pair
Equations
- One or more equations did not get rendered due to their size.
The natural isomorphism between pair X Y ⋙ F
and pair (F.obj X) (F.obj Y)
.
Equations
- CategoryTheory.Limits.pairComp X Y F = CategoryTheory.Limits.diagramIsoPair ((CategoryTheory.Limits.pair X Y).comp F)
A binary fan is just a cone on a diagram indexing a product.
Equations
The first projection of a binary fan.
Equations
- s.fst = s.π.app { as := CategoryTheory.Limits.WalkingPair.left }
The second projection of a binary fan.
Equations
- s.snd = s.π.app { as := CategoryTheory.Limits.WalkingPair.right }
Constructs an isomorphism of BinaryFan
s out of an isomorphism of the tips that commutes with
the projections.
Equations
A convenient way to show that a binary fan is a limit.
Equations
- One or more equations did not get rendered due to their size.
A binary cofan is just a cocone on a diagram indexing a coproduct.
Equations
The first inclusion of a binary cofan.
Equations
- s.inl = s.ι.app { as := CategoryTheory.Limits.WalkingPair.left }
The second inclusion of a binary cofan.
Equations
- s.inr = s.ι.app { as := CategoryTheory.Limits.WalkingPair.right }
Constructs an isomorphism of BinaryCofan
s out of an isomorphism of the tips that commutes with
the injections.
Equations
A convenient way to show that a binary cofan is a colimit.
Equations
- One or more equations did not get rendered due to their size.
A binary fan with vertex P
consists of the two projections π₁ : P ⟶ X
and π₂ : P ⟶ Y
.
Equations
- One or more equations did not get rendered due to their size.
A binary cofan with vertex P
consists of the two inclusions ι₁ : X ⟶ P
and ι₂ : Y ⟶ P
.
Equations
- One or more equations did not get rendered due to their size.
Every BinaryFan
is isomorphic to an application of BinaryFan.mk
.
Equations
Every BinaryFan
is isomorphic to an application of BinaryFan.mk
.
This is a more convenient formulation to show that a BinaryFan
constructed using
BinaryFan.mk
is a limit cone.
Equations
- CategoryTheory.Limits.BinaryFan.isLimitMk lift fac_left fac_right uniq = { lift := lift, fac := ⋯, uniq := ⋯ }
This is a more convenient formulation to show that a BinaryCofan
constructed using
BinaryCofan.mk
is a colimit cocone.
Equations
- CategoryTheory.Limits.BinaryCofan.isColimitMk desc fac_left fac_right uniq = { desc := desc, fac := ⋯, uniq := ⋯ }
If s
is a limit binary fan over X
and Y
, then every pair of morphisms f : W ⟶ X
and
g : W ⟶ Y
induces a morphism l : W ⟶ s.pt
satisfying l ≫ s.fst = f
and l ≫ s.snd = g
.
Equations
- CategoryTheory.Limits.BinaryFan.IsLimit.lift' h f g = ⟨h.lift (CategoryTheory.Limits.BinaryFan.mk f g), ⋯⟩
If s
is a colimit binary cofan over X
and Y
,, then every pair of morphisms f : X ⟶ W
and
g : Y ⟶ W
induces a morphism l : s.pt ⟶ W
satisfying s.inl ≫ l = f
and s.inr ≫ l = g
.
Equations
- CategoryTheory.Limits.BinaryCofan.IsColimit.desc' h f g = ⟨h.desc (CategoryTheory.Limits.BinaryCofan.mk f g), ⋯⟩
Binary products are symmetric.
Equations
- One or more equations did not get rendered due to their size.
If X' ≅ X
, then X × Y
also is the product of X'
and Y
.
Equations
- One or more equations did not get rendered due to their size.
If Y' ≅ Y
, then X x Y
also is the product of X
and Y'
.
Equations
- One or more equations did not get rendered due to their size.
Binary coproducts are symmetric.
Equations
- One or more equations did not get rendered due to their size.
If X' ≅ X
, then X ⨿ Y
also is the coproduct of X'
and Y
.
Equations
- One or more equations did not get rendered due to their size.
If Y' ≅ Y
, then X ⨿ Y
also is the coproduct of X
and Y'
.
Equations
- One or more equations did not get rendered due to their size.
An abbreviation for HasLimit (pair X Y)
.
An abbreviation for HasColimit (pair X Y)
.
If we have a product of X
and Y
, we can access it using prod X Y
or
X ⨯ Y
.
Equations
- (X ⨯ Y) = CategoryTheory.Limits.limit (CategoryTheory.Limits.pair X Y)
If we have a coproduct of X
and Y
, we can access it using coprod X Y
or
X ⨿ Y
.
Equations
- (X ⨿ Y) = CategoryTheory.Limits.colimit (CategoryTheory.Limits.pair X Y)
Notation for the product
Equations
- One or more equations did not get rendered due to their size.
Notation for the coproduct
Equations
- One or more equations did not get rendered due to their size.
The projection map to the first component of the product.
Equations
- CategoryTheory.Limits.prod.fst = CategoryTheory.Limits.limit.π (CategoryTheory.Limits.pair X Y) { as := CategoryTheory.Limits.WalkingPair.left }
Instances For
The projection map to the second component of the product.
Equations
- CategoryTheory.Limits.prod.snd = CategoryTheory.Limits.limit.π (CategoryTheory.Limits.pair X Y) { as := CategoryTheory.Limits.WalkingPair.right }
Instances For
The inclusion map from the first component of the coproduct.
Equations
- CategoryTheory.Limits.coprod.inl = CategoryTheory.Limits.colimit.ι (CategoryTheory.Limits.pair X Y) { as := CategoryTheory.Limits.WalkingPair.left }
Instances For
The inclusion map from the second component of the coproduct.
Equations
- CategoryTheory.Limits.coprod.inr = CategoryTheory.Limits.colimit.ι (CategoryTheory.Limits.pair X Y) { as := CategoryTheory.Limits.WalkingPair.right }
Instances For
The binary fan constructed from the projection maps is a limit.
Equations
- One or more equations did not get rendered due to their size.
The binary cofan constructed from the coprojection maps is a colimit.
Equations
- One or more equations did not get rendered due to their size.
If the product of X
and Y
exists, then every pair of morphisms f : W ⟶ X
and g : W ⟶ Y
induces a morphism prod.lift f g : W ⟶ X ⨯ Y
.
Equations
diagonal arrow of the binary product in the category fam I
Equations
Instances For
If the coproduct of X
and Y
exists, then every pair of morphisms f : X ⟶ W
and
g : Y ⟶ W
induces a morphism coprod.desc f g : X ⨿ Y ⟶ W
.
Equations
codiagonal arrow of the binary coproduct
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If the product of X
and Y
exists, then every pair of morphisms f : W ⟶ X
and g : W ⟶ Y
induces a morphism l : W ⟶ X ⨯ Y
satisfying l ≫ Prod.fst = f
and l ≫ Prod.snd = g
.
Equations
If the coproduct of X
and Y
exists, then every pair of morphisms f : X ⟶ W
and
g : Y ⟶ W
induces a morphism l : X ⨿ Y ⟶ W
satisfying coprod.inl ≫ l = f
and
coprod.inr ≫ l = g
.
Equations
If the products W ⨯ X
and Y ⨯ Z
exist, then every pair of morphisms f : W ⟶ Y
and
g : X ⟶ Z
induces a morphism prod.map f g : W ⨯ X ⟶ Y ⨯ Z
.
Equations
If the coproducts W ⨿ X
and Y ⨿ Z
exist, then every pair of morphisms f : W ⟶ Y
and
g : W ⟶ Z
induces a morphism coprod.map f g : W ⨿ X ⟶ Y ⨿ Z
.
Equations
If the products W ⨯ X
and Y ⨯ Z
exist, then every pair of isomorphisms f : W ≅ Y
and
g : X ≅ Z
induces an isomorphism prod.mapIso f g : W ⨯ X ≅ Y ⨯ Z
.
Equations
- CategoryTheory.Limits.prod.mapIso f g = { hom := CategoryTheory.Limits.prod.map f.hom g.hom, inv := CategoryTheory.Limits.prod.map f.inv g.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If the coproducts W ⨿ X
and Y ⨿ Z
exist, then every pair of isomorphisms f : W ≅ Y
and
g : W ≅ Z
induces an isomorphism coprod.mapIso f g : W ⨿ X ≅ Y ⨿ Z
.
Equations
- CategoryTheory.Limits.coprod.mapIso f g = { hom := CategoryTheory.Limits.coprod.map f.hom g.hom, inv := CategoryTheory.Limits.coprod.map f.inv g.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
HasBinaryProducts
represents a choice of product for every pair of objects.
HasBinaryCoproducts
represents a choice of coproduct for every pair of objects.
If C
has all limits of diagrams pair X Y
, then it has all binary products
If C
has all colimits of diagrams pair X Y
, then it has all binary coproducts
The braiding isomorphism which swaps a binary product.
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 for binary products.
Equations
- One or more equations did not get rendered due to their size.
The left unitor isomorphism for binary products with the terminal object.
Equations
- One or more equations did not get rendered due to their size.
The right unitor isomorphism for binary products with the terminal object.
Equations
- One or more equations did not get rendered due to their size.
The braiding isomorphism which swaps a binary coproduct.
Equations
- One or more equations did not get rendered due to their size.
The braiding isomorphism is symmetric.
The associator isomorphism for binary coproducts.
Equations
- One or more equations did not get rendered due to their size.
The left unitor isomorphism for binary coproducts with the initial object.
Equations
- One or more equations did not get rendered due to their size.
The right unitor isomorphism for binary coproducts with the initial object.
Equations
- One or more equations did not get rendered due to their size.
The binary product functor.
Equations
- One or more equations did not get rendered due to their size.
The product functor can be decomposed.
The binary coproduct functor.
Equations
- One or more equations did not get rendered due to their size.
The coproduct functor can be decomposed.
The product comparison morphism.
In CategoryTheory/Limits/Preserves
we show this is always an iso iff F preserves binary products.
Equations
- CategoryTheory.Limits.prodComparison F A B = CategoryTheory.Limits.prod.lift (F.map CategoryTheory.Limits.prod.fst) (F.map CategoryTheory.Limits.prod.snd)
Naturality of the prodComparison
morphism in both arguments.
The product comparison morphism from F(A ⨯ -)
to FA ⨯ F-
, whose components are given by
prodComparison
.
Equations
- CategoryTheory.Limits.prodComparisonNatTrans F A = { app := fun (B : C) => CategoryTheory.Limits.prodComparison F A B, naturality := ⋯ }
If the product comparison morphism is an iso, its inverse is natural.
The natural isomorphism F(A ⨯ -) ≅ FA ⨯ F-
, provided each prodComparison F A B
is an
isomorphism (as B
changes).
Equations
- One or more equations did not get rendered due to their size.
The coproduct comparison morphism.
In CategoryTheory/Limits/Preserves
we show
this is always an iso iff F preserves binary coproducts.
Equations
- CategoryTheory.Limits.coprodComparison F A B = CategoryTheory.Limits.coprod.desc (F.map CategoryTheory.Limits.coprod.inl) (F.map CategoryTheory.Limits.coprod.inr)
Naturality of the coprod_comparison morphism in both arguments.
The coproduct comparison morphism from FA ⨿ F-
to F(A ⨿ -)
, whose components are given by
coprodComparison
.
Equations
- CategoryTheory.Limits.coprodComparisonNatTrans F A = { app := fun (B : C) => CategoryTheory.Limits.coprodComparison F A B, naturality := ⋯ }
If the coproduct comparison morphism is an iso, its inverse is natural.
The natural isomorphism FA ⨿ F- ≅ F(A ⨿ -)
, provided each coprodComparison F A B
is an
isomorphism (as B
changes).
Equations
- One or more equations did not get rendered due to their size.
Auxiliary definition for Over.coprod
.
Equations
- One or more equations did not get rendered due to their size.
A category with binary coproducts has a functorial sup
operation on over categories.
Equations
- One or more equations did not get rendered due to their size.