-- Martin Escardo 2011.

module Subset where

open import Logic

-- We implement subsets as Σ-types as usual, but we use a special
-- syntax for them:

record subset (X : Set) (A : X  Prp) : Set where
  constructor _||_
  field
   element : X
   membership-proof : A element

syntax subset X  x  A) =  ⁅ x ∶ X ∣ A ⁆

-- Notice that "∶" is typed as "\:1" and ∣ is typed as "\mid" and the
-- braces as "\(" followed by an option offered in the emacs
-- mini-buffer.

-- The inclusion of a subset into the ambient set amounts to the first
-- projection:

incl : {X : Set} {A : X  Prp}   x  X  A x   X
incl(x || c) = x