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}