Jon Sterling and Mike Shulman, September 2023. \begin{code} {-# OPTIONS --safe --without-K #-} module WildCategories.Base where open import MLTT.Spartan open import UF.Subsingletons record WildCategory 𝓤 𝓥 : (𝓤 ⊔ 𝓥)⁺ ̇ where field ob : 𝓤 ̇ hom : ob → ob → 𝓥 ̇ idn : (x : ob) → hom x x _<<_ : {x y z : ob} (g : hom y z) (f : hom x y) → hom x z assoc : {u v w x : ob} (f : hom u v) (g : hom v w) (h : hom w x) → h << (g << f) = (h << g) << f lunit : {x y : ob} (f : hom x y) → f << idn x = f runit : {x y : ob} (f : hom x y) → idn y << f = f module _ {𝓤 𝓥} (C : WildCategory 𝓤 𝓥) where open WildCategory C is-initial-object : ob → 𝓤 ⊔ 𝓥 ̇ is-initial-object I = (x : ob) → is-singleton (hom I x) has-initial-object : 𝓤 ⊔ 𝓥 ̇ has-initial-object = Σ is-initial-object \end{code}