{-# OPTIONS --without-K #-} open import lib.Basics open import lib.types.Pointed module lib.types.Bool where data Bool : Type₀ where true : Bool false : Bool ⊙Bool : Ptd₀ ⊙Bool = ⊙[ Bool , true ] if_then_else_ : ∀ {i} {A : Bool → Type i} (b : Bool) (t : A true) (e : A false) → A b if true then t else e = t if false then t else e = e private Bool-true≠false-type : Bool → Type₀ Bool-true≠false-type true = Unit Bool-true≠false-type false = Empty abstract Bool-true≠false : true ≠ false Bool-true≠false p = transport Bool-true≠false-type p unit Bool-false≠true : false ≠ true Bool-false≠true p = transport Bool-true≠false-type (! p) unit Bool-has-dec-eq : has-dec-eq Bool Bool-has-dec-eq true true = inl idp Bool-has-dec-eq true false = inr Bool-true≠false Bool-has-dec-eq false true = inr Bool-false≠true Bool-has-dec-eq false false = inl idp Bool-is-set : is-set Bool Bool-is-set = dec-eq-is-set Bool-has-dec-eq Bool-level = Bool-is-set