open import GpdCont.Prelude
module GpdCont.Categories.Sets (ℓ : Level) where
open import GpdCont.HomotopySet
open import Cubical.Foundations.Equiv using (equivIsEquiv)
open import Cubical.Data.Sigma using (curryEquiv)
import Cubical.Categories.Instances.Sets as SetCat
open import Cubical.Categories.Adjoint.UniversalElements
open import Cubical.Categories.Presheaf.Representable
SET = SetCat.SET ℓ
open import GpdCont.Categories.Products SET ℓ
open import GpdCont.Categories.Coproducts SET ℓ
module _ (K : hSet ℓ) (A : ⟨ K ⟩ → hSet ℓ) where
SetProduct : Product K A
SetProduct .UniversalElement.vertex = ΠSet {S = ⟨ K ⟩} A
SetProduct .UniversalElement.element k φ = φ k
SetProduct .UniversalElement.universal B = equivIsEquiv flipEquiv
SetProducts : Products
SetProducts = SetProduct
module _ (K : hSet ℓ) (A : ⟨ K ⟩ → hSet ℓ) where
SetCoproduct : Coproduct K A
SetCoproduct .UniversalElement.vertex = ΣSet K A
SetCoproduct .UniversalElement.element k a = k , a
SetCoproduct .UniversalElement.universal B = equivIsEquiv curryEquiv
SetCoproducts : Coproducts
SetCoproducts = SetCoproduct