{-# OPTIONS --postfix-projections --rewriting --prop #-}

open Agda.Primitive

infix  3  _⁻¹
infixl 2  _∙_
infixr 50 _,_
infixr 30 _×_

-- Lift

record LiftP {i} (A : Prop i) : Set i where
  constructor lift
  field lower : A
open LiftP public

-- Unit type
record  {j} : Set j where
  constructor tt
open  public

record ⊤p {j} : Prop j where
  constructor tt
open ⊤p public

-- Σ-types
record Σ {i j} (A : Set i) (B : A  Set j) : Set (i  j) where
  constructor _,_
  field fst : A
        snd : B fst
open Σ public

_×_ :  {i j} (A : Set i) (B : Set j)  Set (i  j)
A × B = Σ A λ _  B

-- Equality types
data _≡_ {i} {A : Set i} (x : A) : A  Set i where refl : x  x
{-# BUILTIN REWRITE _≡_ #-}

_⁻¹ :  {i} {A : Set i} {x y : A}  x  y  y  x
refl ⁻¹ = refl

_∙_ :  {i} {A : Set i} {x y z : A}  x  y  y  z  x  z
refl  refl = refl