{-# 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