{-# OPTIONS --safe #-} module Data.Bool where open import Level open import Agda.Builtin.Bool using (Bool; true; false) public open import Data.Unit open import Data.Empty bool : ∀ {ℓ} {P : Bool → Type ℓ} (f : P false) (t : P true) → (x : Bool) → P x bool f t false = f bool f t true = t {-# INLINE bool #-} bool′ : A → A → Bool → A bool′ = bool {-# INLINE bool′ #-} infixr 0 if-syntax if-syntax : Bool → A → A → A if-syntax p t f = bool′ f t p syntax if-syntax p t f = if p then t else f neg : Bool → Bool neg = bool′ true false infixl 6 _||_ _||_ : Bool → Bool → Bool x || y = bool′ y true x infixl 7 _&&_ _&&_ : Bool → Bool → Bool x && y = bool′ false y x T : Bool → Type T = bool′ ⊥ ⊤