{-# OPTIONS --cubical --safe --postfix-projections #-}

module Data.Bool.Properties where

open import HLevels
open import Path
open import Data.Bool.Base
open import Data.Bool.Truth
open import Data.Unit.Properties
open import Data.Unit
open import Data.Empty
open import Data.Empty.Properties using (isProp⊥)
open import Relation.Nullary.Discrete
open import Relation.Nullary.Discrete.Properties
open import Relation.Nullary.Decidable using (Dec; does; why)

isPropT :  x  isProp (T x)
isPropT false = isProp⊥
isPropT true  = isProp⊤

false≢true : false  true
false≢true p = subst (bool  ) p tt

true≢false : true  false
true≢false p = subst (bool  ) p tt

discreteBool : Discrete Bool
discreteBool false y .does = not y
discreteBool true y .does = y
discreteBool false false .why = refl
discreteBool false true .why = false≢true
discreteBool true false .why = true≢false
discreteBool true true .why = refl

isSetBool : isSet Bool
isSetBool = Discrete→isSet discreteBool