Examples.agda 530 B

12345678910111213141516171819202122232425262728293031323334
  1. module Examples where
  2. data Nat : Set where
  3. zero : Nat
  4. suc : Nat -> Nat
  5. data Bool : Set where
  6. true : Bool
  7. false : Bool
  8. if_then_else_ : {A : Set} -> Bool -> A -> A -> A
  9. if true then x else y = x
  10. if false then x else y = y
  11. not : Bool -> Bool
  12. not x = if x then false else true
  13. isZero : Nat -> Bool
  14. isZero zero = true
  15. isZero (suc _) = false
  16. F : Bool -> Set
  17. F true = Nat
  18. F false = Bool
  19. f : (x : Bool) -> F x -> F (not x)
  20. f true n = isZero n
  21. f false b = if b then zero else suc zero
  22. test : Bool
  23. test = f ? zero