module Cat.Diagram.Product.Power where
Power🔗
Powering is the formal dual to copowering.
module Powers
{o ℓ} {C : Precategory o ℓ}
(prods : (S : Set ℓ) → has-products-indexed-by C ∣ S ∣)
where
open Indexed-product
open Cat.Reasoning C
open Functor
_⋔_ : Set ℓ → Ob → Ob
= prods X (λ _ → A) .ΠF X ⋔ A
Powers satisfy the universal property that, for and we have a natural isomorphism
power-hom-iso: ∀ {X A}
→ Hom-into C (X ⋔ A) ≅ⁿ (unopF $ opFʳ (Hom-into (Sets ℓ ^op) X)) F∘ Hom-into C A
{X} {A} = iso→isoⁿ
power-hom-iso (λ _ → equiv→iso (hom-iso (prods X (λ _ → A))))
(λ _ → ext λ _ _ → sym $ assoc _ _ _)
: Functor (Sets ℓ ^op ×ᶜ C) C
Powering .F₀ (X , A) = X ⋔ A
Powering .F₁ {X , A} {Y , B} (idx , obj) = prods Y (λ _ → B) .tuple λ i → obj ∘ prods X (λ _ → A) .π (idx i)
Powering .F-id {X , A} = sym $ prods X (λ _ → A) .unique _ λ i → id-comm
Powering .F-∘ {X , A} {Y , B} {Z , C} f g = sym $
Powering (λ _ → C) .unique _ λ i → pulll (prods _ _ .commute) ∙ extendr (prods _ _ .commute) prods Z
: (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (F : Idx → Ob) → Ob
∏! = ΠF (prods (el! Idx) F)
∏! Idx F
module ∏! (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (F : Idx → Ob) =
(prods (el! Idx) F)
Indexed-product
_⋔!_ : (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ → Ob → Ob
= el! S ⋔ X
S ⋔! X
module ⋔! (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (X : Ob) =
(prods (el! Idx) (λ _ → X)) Indexed-product
complete→powering: ∀ {o ℓ} {C : Precategory o ℓ}
→ is-complete ℓ ℓ C → Functor (Sets ℓ ^op ×ᶜ C) C
= Powers.Powering λ S F → Limit→IP _ F (lim _) complete→powering lim