module Data.SBV.Trans.Control (
ExtractIO(..), MonadQuery(..), QueryT, Query, query
, freshVar_, freshVar
, freshArray_, freshArray
, CheckSatResult(..), checkSat, ensureSat, checkSatUsing, checkSatAssuming, checkSatAssumingWithUnsatisfiableSet
, SMTValue(..), getValue, getFunction, getUninterpretedValue, getModel, getAssignment, getSMTResult, getUnknownReason, getObservables
, getUnsatCore
, getProof
, getInterpolant
, getAssertions
, SMTInfoFlag(..), SMTErrorBehavior(..), SMTInfoResponse(..)
, getInfo, getOption
, getAssertionStackDepth, push, pop, inNewAssertionStack
, caseSplit
, resetAssertions
, (|->)
, mkSMTResult
, exit
, ignoreExitCode, timeout
, queryDebug
, echo
, io
, SMTOption(..)
) where
import Data.SBV.Core.Data (SMTConfig(..))
import Data.SBV.Core.Symbolic (MonadQuery(..), QueryT, Query, SymbolicT, QueryContext(..))
import Data.SBV.Control.Query
import Data.SBV.Control.Utils (SMTValue(..), queryDebug, executeQuery, getFunction)
import Data.SBV.Utils.ExtractIO
query :: ExtractIO m => QueryT m a -> SymbolicT m a
query = executeQuery QueryExternal