{-# LANGUAGE ScopedTypeVariables #-}

module Ivory.Language.Assert where

import Ivory.Language.Monad
import Ivory.Language.Type
import qualified Ivory.Language.Syntax as AST

assert :: forall a eff. IvoryExpr a => a -> Ivory eff ()
assert e = emit (AST.Assert (unwrapExpr e))

compilerAssert :: forall a eff. IvoryExpr a => a -> Ivory eff ()
compilerAssert e = emit (AST.CompilerAssert (unwrapExpr e))

assume :: forall a eff. IvoryExpr a => a -> Ivory eff ()
assume e = emit (AST.Assume (unwrapExpr e))