{-# OPTIONS --without-K --prop --rewriting --confluence-check #-} module TT.IRUniv where open import TT.Lib private variable i : ℕ data Uᵇ₀ : Set where Elᵇ₀ : Uᵇ₀ → Set Elᵇ₀ () module _ (U : Set) (El : U → Set) where data Uᵇ₊ : Set where `U : Uᵇ₊ `Lift : U → Uᵇ₊ Elᵇ₊ : Uᵇ₊ → Set Elᵇ₊ `U = U Elᵇ₊ (`Lift A) = El A module _ (Uᵇ : Set) (Elᵇ : Uᵇ → Set) where data Uᶜ : Set Elᶜ : Uᶜ → Set data Uᶜ where base : Uᵇ → Uᶜ `⊤ : Uᶜ `Σ : (A : Uᶜ) → (Elᶜ A → Uᶜ) → Uᶜ `Π : (A : Uᶜ) → (Elᶜ A → Uᶜ) → Uᶜ Elᶜ (base A) = Elᵇ A Elᶜ `⊤ = ⊤ Elᶜ (`Π A B) = (a : Elᶜ A) → Elᶜ (B a) Elᶜ (`Σ A B) = Σ (Elᶜ A) λ a → Elᶜ (B a) Uᵇ : ℕ → Set Elᵇ : Uᵇ i → Set U : ℕ → Set El : U i → Set Uᵇ zero = Uᵇ₀ Uᵇ (suc i) = Uᵇ₊ (U i) El Elᵇ {zero} = Elᵇ₀ Elᵇ {suc i} = Elᵇ₊ (U i) El U i = Uᶜ (Uᵇ i) Elᵇ El {i} = Elᶜ (Uᵇ i) Elᵇ data Uᵇω : Set where `U : ℕ → Uᵇω `Lift : U i → Uᵇω Elᵇω : Uᵇω → Set Elᵇω (`U i) = U i Elᵇω (`Lift A) = El A Uω : Set Uω = Uᶜ Uᵇω Elᵇω Elω : Uω → Set Elω = Elᶜ Uᵇω Elᵇω