{-# OPTIONS_GHC -Wall -Werror #-}
module Documentation.SBV.Examples.Queries.Abducts where
import Data.SBV
import Data.SBV.Control
example :: IO ()
example :: IO ()
example = SMTConfig -> Symbolic () -> IO ()
forall a. SMTConfig -> Symbolic a -> IO a
runSMTWith SMTConfig
cvc5 (Symbolic () -> IO ()) -> Symbolic () -> IO ()
forall a b. (a -> b) -> a -> b
$ do
SMTOption -> Symbolic ()
forall (m :: * -> *). SolverContext m => SMTOption -> m ()
setOption (SMTOption -> Symbolic ()) -> SMTOption -> Symbolic ()
forall a b. (a -> b) -> a -> b
$ Bool -> SMTOption
ProduceAbducts Bool
True
x <- String -> Symbolic SInteger
sInteger String
"x"
y <- sInteger "y"
constrain $ x .>= 0
query $ do abd <- getAbduct Nothing "abd" $ x + y .>= 2
io $ putStrLn $ "Got: " ++ abd
let next = Query String
getAbductNext Query String -> (String -> Query ()) -> Query ()
forall a b. QueryT IO a -> (a -> QueryT IO b) -> QueryT IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= IO () -> Query ()
forall a. IO a -> Query a
io (IO () -> Query ()) -> (String -> IO ()) -> String -> Query ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> IO ()
putStrLn (String -> IO ()) -> (String -> String) -> String -> IO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String
"Got: " String -> String -> String
forall a. [a] -> [a] -> [a]
++)
next
next
next