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.
- left : WalkingPair
- right : WalkingPair
Instances For
The equivalence swapping left and right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An equivalence from WalkingPair
to Bool
, sometimes useful when reindexing limits.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The function on the walking pair, sending the two points to X
and Y
.
Equations
Instances For
The diagram on the walking pair, sending the two points to X
and Y
.
Equations
Instances For
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.
Instances For
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.
Instances For
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.
Instances For
The natural isomorphism between pair X Y ⋙ F
and pair (F.obj X) (F.obj Y)
.
Equations
Instances For
A binary fan is just a cone on a diagram indexing a product.
Equations
Instances For
The first projection of a binary fan.
Instances For
The second projection of a binary fan.
Instances For
Constructs an isomorphism of BinaryFan
s out of an isomorphism of the tips that commutes with
the projections.
Equations
Instances For
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.
Instances For
A binary cofan is just a cocone on a diagram indexing a coproduct.
Equations
Instances For
The first inclusion of a binary cofan.
Instances For
The second inclusion of a binary cofan.
Instances For
Constructs an isomorphism of BinaryCofan
s out of an isomorphism of the tips that commutes with
the injections.
Equations
Instances For
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.
Instances For
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.
Instances For
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.
Instances For
Every BinaryFan
is isomorphic to an application of BinaryFan.mk
.
Equations
Instances For
Every BinaryFan
is isomorphic to an application of BinaryFan.mk
.
Equations
Instances For
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 := ⋯ }
Instances For
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 := ⋯ }
Instances For
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
Instances For
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
Instances For
Binary products are symmetric.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Instances For
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.
Instances For
Binary coproducts are symmetric.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Instances For
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.
Instances For
An abbreviation for HasLimit (pair X Y)
.
Equations
Instances For
An abbreviation for HasColimit (pair X Y)
.
Equations
Instances For
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)
Instances For
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)
Instances For
Notation for the product
Equations
- One or more equations did not get rendered due to their size.
Instances For
Notation for the coproduct
Equations
- One or more equations did not get rendered due to their size.
Instances For
The projection map to the first component of the product.
Equations
Instances For
The projection map to the second component of the product.
Equations
Instances For
The inclusion map from the first component of the coproduct.
Equations
Instances For
The inclusion map from the second component of the coproduct.
Equations
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.
Instances For
The binary cofan constructed from the coprojection maps is a colimit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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
Instances For
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
Instances For
codiagonal arrow of the binary coproduct
Equations
Instances For
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
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 l : X ⨿ Y ⟶ W
satisfying coprod.inl ≫ l = f
and
coprod.inr ≫ l = g
.
Equations
Instances For
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
Instances For
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
Instances For
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 := ⋯ }
Instances For
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 := ⋯ }
Instances For
HasBinaryProducts
represents a choice of product for every pair of objects.
Equations
Instances For
HasBinaryCoproducts
represents a choice of coproduct for every pair of objects.
Equations
Instances For
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.
Instances For
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.
Instances For
The left unitor isomorphism for binary products with the terminal object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The right unitor isomorphism for binary products with the terminal object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The braiding isomorphism which swaps a binary coproduct.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The braiding isomorphism is symmetric.
The associator isomorphism for binary coproducts.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The left unitor isomorphism for binary coproducts with the initial object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The right unitor isomorphism for binary coproducts with the initial object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The binary product functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The product functor can be decomposed.
Equations
Instances For
The binary coproduct functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The coproduct functor can be decomposed.
Equations
Instances For
The product comparison morphism.
In CategoryTheory/Limits/Preserves
we show this is always an iso iff F preserves binary products.
Equations
Instances For
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 := ⋯ }
Instances For
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.
Instances For
The coproduct comparison morphism.
In Mathlib/CategoryTheory/Limits/Preserves/
we show
this is always an iso iff F preserves binary coproducts.
Equations
Instances For
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 := ⋯ }
Instances For
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.
Instances For
Auxiliary definition for Over.coprod
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
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.
Instances For
A binary fan gives a binary cofan in the opposite category.
Instances For
A binary cofan gives a binary fan in the opposite category.
Instances For
A binary fan in the opposite category gives a binary cofan.
Instances For
A binary cofan in the opposite category gives a binary fan.
Instances For
If a BinaryFan
is a limit, then its opposite is a colimit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If a BinaryCofan
is a colimit, then its opposite is a limit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If a BinaryFan
in the opposite category is a limit, then its unop
is a colimit.
Equations
- CategoryTheory.Limits.BinaryFan.IsLimit.unop hc = CategoryTheory.Limits.BinaryCofan.isColimitMk (fun (s : CategoryTheory.Limits.BinaryCofan X Y) => (hc.lift s.op).unop) ⋯ ⋯ ⋯
Instances For
If a BinaryCofan
in the opposite category is a colimit, then its unop
is a limit.
Equations
- CategoryTheory.Limits.BinaryCofan.IsColimit.unop hc = CategoryTheory.Limits.BinaryFan.isLimitMk (fun (s : CategoryTheory.Limits.BinaryFan X Y) => (hc.desc s.op).unop) ⋯ ⋯ ⋯
Instances For
Swap the two sides of a BinaryFan
.
Equations
Instances For
If a binary fan s
over X Y
is a limit cone, then s.swap
is a limit cone over Y X
.
Equations
- I.binaryFanSwap = { lift := fun (t : CategoryTheory.Limits.Cone (CategoryTheory.Limits.pair Y X)) => I.lift (CategoryTheory.Limits.BinaryFan.swap t), fac := ⋯, uniq := ⋯ }
Instances For
Alias of CategoryTheory.Limits.IsLimit.binaryFanSwap
.
If a binary fan s
over X Y
is a limit cone, then s.swap
is a limit cone over Y X
.
Equations
Instances For
Construct HasBinaryProduct Y X
from HasBinaryProduct X Y
.
This can't be an instance, as it would cause a loop in typeclass search.
Given a limit cone over X
and Y
, and another limit cone over Y
and X
, we can construct
an isomorphism between the cone points. Relative to some fixed choice of limits cones for every
pair, these isomorphisms constitute a braiding.
Equations
Instances For
Given binary fans sXY
over X Y
, and sYZ
over Y Z
, and s
over sXY.X Z
,
if sYZ
is a limit cone we can construct a binary fan over X sYZ.X
.
This is an ingredient of building the associator for a cartesian category.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given binary fans sXY
over X Y
, and sYZ
over Y Z
, and s
over X sYZ.X
,
if sYZ
is a limit cone we can construct a binary fan over sXY.X Z
.
This is an ingredient of building the associator for a cartesian category.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If all the binary fans involved a limit cones, BinaryFan.assoc
produces another limit cone.
Equations
- P.assoc Q R = { lift := fun (t : CategoryTheory.Limits.Cone (CategoryTheory.Limits.pair X sYZ.pt)) => R.lift (CategoryTheory.Limits.BinaryFan.assocInv P t), fac := ⋯, uniq := ⋯ }
Instances For
Given two pairs of limit cones corresponding to the parenthesisations of X × Y × Z
,
we obtain an isomorphism between the cone points.
Equations
- CategoryTheory.Limits.BinaryFan.associator P Q R S = (P.assoc Q R).conePointUniqueUpToIso S
Instances For
Given a fixed family of limit data for every pair X Y
, we obtain an associator.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a left unitor from specified limit cones.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a right unitor from specified limit cones.
Equations
- One or more equations did not get rendered due to their size.