#lang s-exp "../redex-curnel.rkt"
(provide bool btrue bfalse if bnot)

(data bool : Type
  (btrue : bool)
  (bfalse : bool))

(define-syntax (if syn)
  (syntax-case syn ()
    [(_ t s f)
     #'(case t
         [btrue s]
         [bfalse f])]))

(define (bnot (x : bool)) (if x bfalse btrue))
(module+ test
  (require rackunit)
  (check-equal? (bnot btrue) bfalse)
  (check-equal? (bnot bfalse) btrue))