spectacle-1.0.0: src/Language/Spectacle/Syntax.hs
module Language.Spectacle.Syntax
( -- * Closures
(.=),
-- * Errors
catchE,
throwE,
-- * Logic
conjunct,
(/\),
disjunct,
(\/),
complement,
(==>),
implies,
(<=>),
iff,
-- * Nondeterminism
oneOf,
-- * Variables
plain,
prime,
-- * Quantifiers
forall,
exists,
-- * Enabled
enabled,
)
where
import Language.Spectacle.Lang (Lang, Member)
import Language.Spectacle.Syntax.Closure ((.=))
import Language.Spectacle.Syntax.Enabled (enabled)
import Language.Spectacle.Syntax.Error (catchE, throwE)
import Language.Spectacle.Syntax.Logic (Logic, complement, conjunct, disjunct, iff, implies)
import Language.Spectacle.Syntax.NonDet (oneOf)
import Language.Spectacle.Syntax.Plain (plain)
import Language.Spectacle.Syntax.Prime (prime)
import Language.Spectacle.Syntax.Quantifier (exists, forall)
-- ---------------------------------------------------------------------------------------------------------------------
infixl 5 /\
(/\) :: Member Logic effs => Lang ctx effs Bool -> Lang ctx effs Bool -> Lang ctx effs Bool
(/\) = conjunct
{-# INLINE (/\) #-}
infixl 5 \/
(\/) :: Member Logic effs => Lang ctx effs Bool -> Lang ctx effs Bool -> Lang ctx effs Bool
(\/) = disjunct
{-# INLINE (\/) #-}
(==>) :: Member Logic effs => Lang ctx effs Bool -> Lang ctx effs Bool -> Lang ctx effs Bool
(==>) = implies
{-# INLINE (==>) #-}
(<=>) :: Member Logic effs => Lang ctx effs Bool -> Lang ctx effs Bool -> Lang ctx effs Bool
(<=>) = iff
{-# INLINE (<=>) #-}