\begin{code} module ULC.Domains where open import Relation.Binary.PropositionalEquality.Core using (_≡_; refl) public Domain = Set postulate ⊥ : {D : Domain} → D postulate fix : {D : Domain} → (D → D) → D postulate fix-fix : ∀ {D} → (f : D → D) → fix f ≡ f (fix f) postulate fix-app : ∀ {P D} → (f : (P → D) → (P → D)) (p : P) → fix f p ≡ f (fix f) p open import Function using (Inverse; _↔_) public postulate D∞ : Domain postulate instance iso : D∞ ↔ (D∞ → D∞) open Inverse {{ ... }} using (to; from) public variable d : D∞ \end{code}