Categories with chosen finite products #
We introduce a class, ChosenFiniteProducts
, which bundles explicit choices
for a terminal object and binary products in a category C
.
This is primarily useful for categories which have finite products with good
definitional properties, such as the category of types.
Given a category with such an instance, we also provide the associated
symmetric monoidal structure so that one can write X ⊗ Y
for the explicit
binary product and 𝟙_ C
for the explicit terminal object.
Implementation notes #
For cartesian monoidal categories, the oplax-monoidal/monoidal/braided structure of a functor F
preserving finite products is uniquely determined. See the ofChosenFiniteProducts
declarations.
We however develop the theory for any F.OplaxMonoidal
/F.Monoidal
/F.Braided
instance instead of
requiring it to be the ofChosenFiniteProducts
one. This is to avoid diamonds: Consider
eg 𝟭 C
and F ⋙ G
.
In applications requiring a finite preserving functor to be oplax-monoidal/monoidal/braided,
avoid attribute [local instance] ofChosenFiniteProducts
but instead turn on the corresponding
ofChosenFiniteProducts
declaration for that functor only.
Projects #
- Construct an instance of chosen finite products in the category of affine scheme, using the tensor product.
- Construct chosen finite products in other categories appearing "in nature".
An instance of ChosenFiniteProducts C
bundles an explicit choice of a binary
product of two objects of C
, and a terminal object in C
.
Users should use the monoidal notation: X ⊗ Y
for the product and 𝟙_ C
for
the terminal object.
- product (X Y : C) : Limits.LimitCone (Limits.pair X Y)
A choice of a limit binary fan for any two objects of the category.
- terminal : Limits.LimitCone (Functor.empty C)
A choice of a terminal object.
Instances
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
The unique map to the terminal object.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- CategoryTheory.ChosenFiniteProducts.instUniqueHomTensorUnit X = { default := CategoryTheory.ChosenFiniteProducts.toUnit X, uniq := ⋯ }
This lemma follows from the preexisting Unique
instance, but
it is often convenient to use it directly as apply toUnit_unique
forcing
lean to do the necessary elaboration.
Construct a morphism to the product given its two components.
Equations
Instances For
The first projection from the product.
Equations
Instances For
The second projection from the product.
Equations
Instances For
Alias of CategoryTheory.ChosenFiniteProducts.associator_inv_fst_fst
.
Alias of CategoryTheory.ChosenFiniteProducts.associator_inv_fst_fst_assoc
.
Construct an instance of ChosenFiniteProducts C
given an instance of HasFiniteProducts C
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When C
and D
have chosen finite products and F : C ⥤ D
is any functor,
terminalComparison F
is the unique map F (𝟙_ C) ⟶ 𝟙_ D
.
Equations
Instances For
Alias of CategoryTheory.ChosenFiniteProducts.map_toUnit_comp_terminalComparison
.
Alias of CategoryTheory.ChosenFiniteProducts.map_toUnit_comp_terminalComparison_assoc
.
If terminalComparison F
is an Iso, then F
preserves terminal objects.
If F
preserves terminal objects, then terminalComparison F
is an isomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
When C
and D
have chosen finite products and F : C ⥤ D
is any functor,
prodComparison F A B
is the canonical comparison morphism from F (A ⊗ B)
to F(A) ⊗ F(B)
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Naturality of the prodComparison
morphism in both arguments.
Naturality of the prodComparison
morphism in the right argument.
Naturality of the prodComparison
morphism in the left argument.
If the product comparison morphism is an iso, its inverse is natural in both argument.
If the product comparison morphism is an iso, its inverse is natural in the right argument.
If the product comparison morphism is an iso, its inverse is natural in the left argument.
The product comparison morphism from F(A ⊗ -)
to FA ⊗ F-
, whose components are given by
prodComparison
.
Equations
- CategoryTheory.ChosenFiniteProducts.prodComparisonNatTrans F A = { app := fun (B : C) => CategoryTheory.ChosenFiniteProducts.prodComparison F A B, naturality := ⋯ }
Instances For
The product comparison morphism from F(- ⊗ -)
to F- ⊗ F-
, whose components are given by
prodComparison
.
Equations
- CategoryTheory.ChosenFiniteProducts.prodComparisonBifunctorNatTrans F = { app := fun (A : C) => CategoryTheory.ChosenFiniteProducts.prodComparisonNatTrans F A, naturality := ⋯ }
Instances For
If F
preserves the limit of the pair (A, B)
, then the binary fan given by
(F.map fst A B, F.map (snd A B))
is a limit cone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F
preserves the limit of the pair (A, B)
, then prodComparison F A B
is an isomorphism.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The natural isomorphism F(A ⊗ -) ≅ FA ⊗ F-
, provided each prodComparison F A B
is an
isomorphism (as B
changes).
Equations
Instances For
The natural isomorphism of bifunctors F(- ⊗ -) ≅ F- ⊗ F-
, provided each
prodComparison F A B
is an isomorphism.
Equations
Instances For
If prodComparison F A B
is an isomorphism, then F
preserves the limit of pair A B
.
If prodComparison F A B
is an isomorphism for all A B
then F
preserves limits of shape
Discrete (WalkingPair)
.
The restriction of a cartesian-monoidal category along an object property that's closed under finite products is cartesian-monoidal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any functor between cartesian-monoidal categories is oplax monoidal.
This is not made an instance because it would create a diamond for the oplax monoidal structure on the identity and composition of functors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any functor between cartesian-monoidal categories is oplax monoidal in a unique way.
A finite-product-preserving functor between cartesian monoidal categories is monoidal.
This is not made an instance because it would create a diamond for the monoidal structure on the identity and composition of functors.
Equations
Instances For
A functor between cartesian monoidal categories is monoidal iff it preserves finite products.
A finite-product-preserving functor between cartesian monoidal categories is braided.
This is not made an instance because it would create a diamond for the braided structure on the identity and composition of functors.
Equations
- CategoryTheory.Functor.Braided.ofChosenFiniteProducts F = { toMonoidal := CategoryTheory.Functor.Monoidal.ofChosenFiniteProducts F, braided := ⋯ }
Instances For
Alias of CategoryTheory.Functor.OplaxMonoidal.ofChosenFiniteProducts
.
Any functor between cartesian-monoidal categories is oplax monoidal.
This is not made an instance because it would create a diamond for the oplax monoidal structure on the identity and composition of functors.
Equations
Instances For
Alias of CategoryTheory.Functor.Monoidal.ofChosenFiniteProducts
.
A finite-product-preserving functor between cartesian monoidal categories is monoidal.
This is not made an instance because it would create a diamond for the monoidal structure on the identity and composition of functors.
Equations
Instances For
Alias of CategoryTheory.Functor.Braided.ofChosenFiniteProducts
.
A finite-product-preserving functor between cartesian monoidal categories is braided.
This is not made an instance because it would create a diamond for the braided structure on the identity and composition of functors.