Jon Sterling and Mike Shulman, September 2023.

\begin{code}
{-# OPTIONS --safe --without-K #-}

module WildCategories.Idempotents where

open import MLTT.Spartan

open import WildCategories.Base

module _ {𝓤 𝓥} (C : WildCategory 𝓤 𝓥) where
 open WildCategory C

 record QuasiIdempotence (x : ob) (m : hom x x) : 𝓥 ̇ where
  field
   Q0 : m << m = m
   Q1 : assoc m m m ∙ ap (_<< m) Q0 = ap (m <<_) Q0

 record Splitting (x : ob) (m : hom x x) : 𝓤 ⊔ 𝓥 ̇ where
  field
   mid : ob
   sec : hom mid x
   ret : hom x mid
   sec-is-section : ret << sec = idn mid
   splitting : sec << ret = m

 quasi-idempotents-split : 𝓤 ⊔ 𝓥 ̇
 quasi-idempotents-split =
  (x : ob) (m : hom x x)
  → QuasiIdempotence x m
  → Splitting x m

\end{code}