{-# OPTIONS --type-in-type
    #-}

open import NeilPrelude

module Bool where

infix  0  if_then_else_

infixr 5  _∨_ _xor_
infixr 6  _∧_

----------------------------------------

not : Bool → Bool
not false = true
not true  = false

if_then_else_ : {A : Set} → Bool → A → A → A
if_then_else_ false t e = e
if_then_else_ true t e = t

ifte : {A : Set} → A → A → Bool → A
ifte t e false = e
ifte t e true  = t

_∧_ : 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

----------------------------------------