Bool.agda 850 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. module Lib.Bool where
  2. open import Lib.Logic
  3. data Bool : Set where
  4. true : Bool
  5. false : Bool
  6. {-# BUILTIN BOOL Bool #-}
  7. {-# BUILTIN TRUE true #-}
  8. {-# BUILTIN FALSE false #-}
  9. isTrue : Bool -> Set
  10. isTrue true = True
  11. isTrue false = False
  12. isFalse : Bool -> Set
  13. isFalse true = False
  14. isFalse false = True
  15. data Inspect (b : Bool) : Set where
  16. itsTrue : .(isTrue b) -> Inspect b
  17. itsFalse : .(isFalse b) -> Inspect b
  18. inspect : (b : Bool) -> Inspect b
  19. inspect true = itsTrue _
  20. inspect false = itsFalse _
  21. infix 5 if_then_else_
  22. if_then_else_ : {A : Set} -> Bool -> A -> A -> A
  23. if true then x else y = x
  24. if false then x else y = y
  25. not : Bool -> Bool
  26. not true = false
  27. not false = true
  28. infixr 25 _&&_
  29. infixr 22 _||_
  30. _&&_ : Bool -> Bool -> Bool
  31. false && y = false
  32. true && y = y
  33. _||_ : Bool -> Bool -> Bool
  34. false || y = y
  35. true || y = true