module Cat.Diagram.Coproduct.Copower where
Copowers🔗
Let be a category admitting indexed coproducts, for example a cocomplete category. In the same way that (in ordinary arithmetic) the iterated product of a bunch of copies of the same factor
is called a “power”, we refer to the coproduct of many copies of an object indexed by a set as the copower of by and alternatively denote it If does indeed admit coproducts indexed by any set, then the copowering construction extends to a functor
The notion of copowering gives us slick terminology for a category which admits all coproducts, but not necessarily all colimits: Such a category is precisely one copowered over
_⊗_ : Set ℓ → Ob → Ob
= coprods X (λ _ → A) .ΣF X ⊗ A
Copowers satisfy a universal property: is a representing object for the functor that takes an object to the power of the set of morphisms from to in other words, we have a natural isomorphism
copower-hom-iso: ∀ {X A}
→ Hom-from C (X ⊗ A) ≅ⁿ Hom-from (Sets ℓ) X F∘ Hom-from C A
{X} {A} = iso→isoⁿ
copower-hom-iso (λ _ → equiv→iso (hom-iso (coprods X (λ _ → A))))
(λ _ → ext λ _ _ → assoc _ _ _)
The action of the copowering functor is given by simultaneously changing the indexing along a function of sets and changing the underlying object by a morphism This is functorial by the uniqueness properties of colimiting maps.
: Functor (Sets ℓ ×ᶜ C) C
Copowering .F₀ (X , A) = X ⊗ A
Copowering .F₁ {X , A} {Y , B} (idx , obj) =
Copowering (λ _ → A) .match λ i → coprods Y (λ _ → B) .ι (idx i) ∘ obj
coprods X .F-id {X , A} = sym $
Copowering (λ _ → A) .unique _ λ i → sym id-comm
coprods X .F-∘ {X , A} f g = sym $
Copowering (λ _ → A) .unique _ λ i →
coprods X (coprods _ _ .commute) ∙ extendl (coprods _ _ .commute) pullr
: (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (F : Idx → Ob) → Ob
∐! = ΣF (coprods (el! Idx) F)
∐! Idx F
module ∐! (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (F : Idx → Ob) =
(coprods (el! Idx) F)
Indexed-coproduct
_⊗!_ : (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ → Ob → Ob
= el! I ⊗ X
I ⊗! X
module ⊗! (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (X : Ob) =
(coprods (el! Idx) (λ _ → X)) Indexed-coproduct