{-# OPTIONS --without-K --safe #-}
module Prelude.Bool where

open import Agda.Builtin.Unit
open import Prelude.Empty
open import Prelude.Eq

open import Agda.Builtin.Bool public

infixr 6 _∧_
infixr 5 _∨_ _xor_

instance
  EqBool : Eq Bool
  _==_ ⦃ EqBool ⦄ true  true  = true
  _==_ ⦃ EqBool ⦄ false false = true
  _==_ ⦃ EqBool ⦄ _     _     = false
  
not : Bool → Bool
not true  = false
not false = true

_∧_ : Bool → Bool → Bool
true  ∧ b = b
false ∧ b = false

_∨_ : Bool → Bool → Bool
true  ∨ b = true
false ∨ b = b

_xor_ : Bool → Bool → Bool
true  xor b = not b
false xor b = b

infix  0 if_then_else_

if_then_else_ : ∀ {a} {A : Set a}
  → Bool → A → A → A
if true  then t else f = t
if false then t else f = f

Truth : Bool → Set
Truth false = ⊥
Truth true  = ⊤