{-# OPTIONS --safe #-}

module Data.Bool.Properties where

open import Data.Bool
open import Decidable
open import Path
open import Data.Unit
open import HLevels
open import Data.Empty.Properties
open import Data.Unit.Properties
open import Discrete
open import Discrete.IsSet

discreteBool : Discrete Bool
discreteBool = from-bool-eq record
  { _≡ᴮ_ = bool′ neg  x  x)
  ; sound = λ { false false p  refl ; true true p  refl } 
  ; complete = λ { false  tt ; true  tt }
  }

isSetBool : isSet Bool
isSetBool = Discrete→isSet discreteBool

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

open import Data.Empty

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

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

or-assoc :  x y z  (x || y) || z  x || (y || z)
or-assoc false y z = refl
or-assoc true  y z = refl

or-idem :  x  x || x  x
or-idem false = refl
or-idem true  = refl

or-comm :  x y  (x || y)  (y || x)
or-comm false false = refl
or-comm false true  = refl
or-comm true  false = refl
or-comm true  true  = refl