{-| Strongly-typed utilities to aid in automatic verification (e.g. of programs) using an SMT solver. This is mainly just a wrapper around "Data.SBV" that allows for inspection and manipulation of symbolic values, especially variable substitution. -} module Language.Verification ( -- * The verification monad Verifier , runVerifier , runVerifierWith , VerifierError(..) -- * The query monad , Query , query -- * Verifiable variables , VerifiableVar(..) -- * Verifier actions , evalProp , evalProp' , evalPropSimple -- * Miscellaneous combinators , subVar -- * Expressions , module Expression -- * SBV re-exports , SMTConfig(..) , defaultSMTCfg ) where import Data.SBV (SMTConfig (..), defaultSMTCfg) import Language.Expression as Expression import Language.Verification.Core