{-# LANGUAGE ScopedTypeVariables #-}
module Data.SBV.Provers.Yices(yices) where
import Data.SBV.Core.Data
import Data.SBV.SMT.SMT
yices :: SMTSolver
yices = SMTSolver {
name = Yices
, executable = "yices-smt2"
, options = []
, engine = standardEngine "SBV_YICES" "SBV_YICES_OPTIONS" id addTimeOut standardModel
, capabilities = SolverCapabilities {
capSolverName = "Yices"
, mbDefaultLogic = logic
, supportsDefineFun = True
, supportsProduceModels = True
, supportsQuantifiers = False
, supportsUninterpretedSorts = True
, supportsUnboundedInts = True
, supportsReals = True
, supportsFloats = False
, supportsDoubles = False
, supportsOptimization = False
, supportsPseudoBooleans = False
, supportsUnsatCores = False
}
}
where addTimeOut _ _ = error "Yices: Timeout values are not supported by Yices"
logic hasReals
| hasReals = Just "QF_UFLRA"
| True = Just "QF_AUFLIA"