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 X ⋔ A = prods X (λ _ → A) .ΠF
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 power-hom-iso {X} {A} = iso→isoⁿ (λ _ → equiv→iso (hom-iso (prods X (λ _ → A)))) (λ _ → ext λ _ _ → sym $ assoc _ _ _)
Powering : 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-∘ {z = Z , C} f g = sym $ prods Z (λ _ → C) .unique _ λ i → pulll (prods _ _ .commute) ∙ extendr (prods _ _ .commute)
∏! : (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (F : Idx → Ob) → Ob ∏! Idx F = ΠF (prods (el! Idx) F) module ∏! (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (F : Idx → Ob) = Indexed-product (prods (el! Idx) F) _⋔!_ : (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ → Ob → Ob S ⋔! X = el! S ⋔ X module ⋔! (Idx : Type ℓ) ⦃ hl : H-Level Idx 2 ⦄ (X : Ob) = Indexed-product (prods (el! Idx) (λ _ → X))