module Data.Irr where

Strict propositional truncationsπŸ”—

In Agda, it’s possible to turn any type into one that definitionally has at most one inhabitant. We do this using a record containing an irrelevant field.

record Irr {β„“} (A : Type β„“) : Type β„“ where
  constructor forget
  field
    .lower : A

The most important property of this type is that, given any in the constant path refl checks at type

instance
  H-Level-Irr : βˆ€ {n} β†’ H-Level (Irr A) (suc n)
  H-Level-Irr {n} = prop-instance Ξ» _ _ β†’ refl