Jonathan Sterling, 22nd March 2023.
In this module we define the coslice of a universe under a given type; in fact,
our construction is slightly more general, as we allow the given type to lie in
a different universe. This is useful for characterizing things like small
reflective subuniverses, which arise when studying impredicativity.
\begin{code}
{-# OPTIONS --safe --without-K #-}
module Coslice.Type where
open import MLTT.Spartan
_↓_ : 𝓥 ̇ → (𝓤 : Universe) → 𝓥 ⊔ 𝓤 ⁺ ̇
A ↓ 𝓤 = Σ I ꞉ 𝓤 ̇ , (A → I)
Coslice : 𝓤 ̇ → 𝓤 ⁺ ̇
Coslice A = A ↓ _
module _ {A : 𝓥 ̇ } where
target : A ↓ 𝓤 → 𝓤 ̇
target (I , α) = I
alg : (X : A ↓ 𝓤) → A → target X
alg (I , α) = α
\end{code}