------------------------------------------------------------------------
-- The Agda standard library
--
-- Universes
------------------------------------------------------------------------

module Universe where

open import Data.Product
open import Function
open import Level

-- Universes.

record Universe u e : Set (suc (u  e)) where
  field
    -- Codes.
    U : Set u

    -- Decoding function.
    El : U  Set e

-- Indexed universes.

record Indexed-universe i u e : Set (suc (i  u  e)) where
  field
    -- Index set.
    I : Set i

    -- Codes.
    U : I  Set u

    -- Decoding function.
    El :  {i}  U i  Set e

  -- An indexed universe can be turned into an unindexed one.

  unindexed-universe : Universe (i  u) e
  unindexed-universe = record
    { U  =  λ i  U i
    ; El = El  proj₂
    }