\begin{code} open import Prelude open import Algebra open import Cubical.Foundations.Everything using (isSet) module Data.Set.Hom {ā} {š : Type ā} (latt : Semilattice š) (sIsSet : isSet š) where open import Data.Set.Definition open import Data.Set.Eliminators renaming (ā¦_ā§ to Ļā¦_ā§) open Semilattice latt module _ {A : Type a} where \end{code} %<*hom-ty> \begin{code} ā¦_ā§ : (A ā š) ā š¦ A ā š \end{code} %</hom-ty> \begin{code} ā¦ h ā§ = Ļā¦ alg ā§ where alg : Ļ A š alg .fst ā = Īµ alg .fst (x ā· xs āØ PāØxsā© ā©) = h x ā PāØxsā© alg .snd .c-trunc _ = sIsSet alg .snd .c-com x y _ xs = sym (assoc (h x) _ _) Ķ¾ cong (_ā xs) (comm (h x) _) Ķ¾ assoc (h y) _ _ alg .snd .c-dup x _ xs = sym (assoc (h x) _ _) Ķ¾ cong (_ā xs) (idem (h x)) \end{code}