module Data.SBV.Dynamic
(
SVal
, HasKind(..), Kind(..), CW(..), CWVal(..), cwToBool
, SArr
, readSArr, resetSArr, writeSArr, mergeSArr, newSArr, eqSArr
, Symbolic
, Quantifier(..)
, svMkSymVar
, svTrue, svFalse, svBool, svAsBool
, svInteger, svAsInteger
, svFloat, svDouble
, svReal, svNumerator, svDenominator
, svEqual, svNotEqual
, svEnumFromThenTo
, svLessThan, svGreaterThan, svLessEq, svGreaterEq
, svPlus, svTimes, svMinus, svUNeg, svAbs
, svDivide, svQuot, svRem, svExp
, svAddConstant, svIncrement, svDecrement
, svAnd, svOr, svXOr, svNot
, svShl, svShr, svRol, svRor
, svExtract, svJoin
, svSign, svUnsign
, svFromIntegral
, svSelect
, svToWord1, svFromWord1, svTestBit, svSetBit
, svShiftLeft, svShiftRight
, svRotateLeft, svRotateRight
, svWordFromBE, svWordFromLE
, svBlastLE, svBlastBE
, svIte, svLazyIte, svSymbolicMerge
, svIsSatisfiableInCurrentPath
, svUninterpreted
, proveWith
, satWith, allSatWith
, safeWith
, proveWithAll, proveWithAny, satWithAll, satWithAny
, svQuickCheck
, ThmResult(..), SatResult(..), AllSatResult(..), SafeResult(..), OptimizeResult(..), SMTResult(..)
, genParse, getModel, getModelDictionary
, SMTConfig(..), SMTLibVersion(..), SMTLibLogic(..), Logic(..), Solver(..), SMTSolver(..), boolector, cvc4, yices, z3, mathSAT, abc, defaultSolverConfig, sbvCurrentSolver, defaultSMTCfg, sbvCheckSolverInstallation, sbvAvailableSolvers
, outputSVal
, SBVCodeGen
, cgPerformRTCs, cgSetDriverValues, cgGenerateDriver, cgGenerateMakefile
, svCgInput, svCgInputArr
, svCgOutput, svCgOutputArr
, svCgReturn, svCgReturnArr
, cgAddPrototype, cgAddDecl, cgAddLDFlags, cgIgnoreSAssert
, cgIntegerSize, cgSRealType, CgSRealType(..)
, compileToC, compileToCLib
, compileToSMTLib, generateSMTBenchmarks
) where
import Data.Map (Map)
import Data.SBV.Core.Kind
import Data.SBV.Core.Concrete
import Data.SBV.Core.Symbolic
import Data.SBV.Core.Operations
import Data.SBV.Compilers.CodeGen ( SBVCodeGen
, svCgInput, svCgInputArr
, svCgOutput, svCgOutputArr
, svCgReturn, svCgReturnArr
, cgPerformRTCs, cgSetDriverValues, cgGenerateDriver, cgGenerateMakefile
, cgAddPrototype, cgAddDecl, cgAddLDFlags, cgIgnoreSAssert
, cgIntegerSize, cgSRealType, CgSRealType(..)
)
import Data.SBV.Compilers.C (compileToC, compileToCLib)
import Data.SBV.Provers.Prover (boolector, cvc4, yices, z3, mathSAT, abc, defaultSMTCfg)
import Data.SBV.SMT.SMT (ThmResult(..), SatResult(..), SafeResult(..), OptimizeResult(..), AllSatResult(..), genParse)
import Data.SBV (sbvCurrentSolver, sbvCheckSolverInstallation, defaultSolverConfig, sbvAvailableSolvers)
import qualified Data.SBV as SBV (SBool, proveWithAll, proveWithAny, satWithAll, satWithAny)
import qualified Data.SBV.Core.Data as SBV (SBV(..))
import qualified Data.SBV.Core.Model as SBV (isSatisfiableInCurrentPath, sbvQuickCheck)
import qualified Data.SBV.Provers.Prover as SBV (proveWith, satWith, safeWith, allSatWith, compileToSMTLib, generateSMTBenchmarks)
import qualified Data.SBV.SMT.SMT as SBV (Modelable(getModel, getModelDictionary))
svIsSatisfiableInCurrentPath :: SVal -> Symbolic (Maybe SatResult)
svIsSatisfiableInCurrentPath = SBV.isSatisfiableInCurrentPath . toSBool
svQuickCheck :: Symbolic SVal -> IO Bool
svQuickCheck = SBV.sbvQuickCheck . fmap toSBool
toSBool :: SVal -> SBV.SBool
toSBool = SBV.SBV
compileToSMTLib :: SMTLibVersion
-> Bool
-> Symbolic SVal
-> IO String
compileToSMTLib version isSat s = SBV.compileToSMTLib version isSat (fmap toSBool s)
generateSMTBenchmarks :: Bool -> FilePath -> Symbolic SVal -> IO ()
generateSMTBenchmarks isSat f s = SBV.generateSMTBenchmarks isSat f (fmap toSBool s)
proveWith :: SMTConfig -> Symbolic SVal -> IO ThmResult
proveWith cfg s = SBV.proveWith cfg (fmap toSBool s)
satWith :: SMTConfig -> Symbolic SVal -> IO SatResult
satWith cfg s = SBV.satWith cfg (fmap toSBool s)
safeWith :: SMTConfig -> Symbolic SVal -> IO [SafeResult]
safeWith cfg s = SBV.safeWith cfg (fmap toSBool s)
allSatWith :: SMTConfig -> Symbolic SVal -> IO AllSatResult
allSatWith cfg s = SBV.allSatWith cfg (fmap toSBool s)
proveWithAll :: [SMTConfig] -> Symbolic SVal -> IO [(Solver, ThmResult)]
proveWithAll cfgs s = SBV.proveWithAll cfgs (fmap toSBool s)
proveWithAny :: [SMTConfig] -> Symbolic SVal -> IO (Solver, ThmResult)
proveWithAny cfgs s = SBV.proveWithAny cfgs (fmap toSBool s)
satWithAll :: [SMTConfig] -> Symbolic SVal -> IO [(Solver, SatResult)]
satWithAll cfgs s = SBV.satWithAll cfgs (fmap toSBool s)
satWithAny :: [SMTConfig] -> Symbolic SVal -> IO (Solver, SatResult)
satWithAny cfgs s = SBV.satWithAny cfgs (fmap toSBool s)
getModel :: SMTResult -> Either String (Bool, [CW])
getModel = SBV.getModel
getModelDictionary :: SMTResult -> Map String CW
getModelDictionary = SBV.getModelDictionary