@@ -60,6 +60,7 @@ data SMTOptions = SMTOptions
6060 -- ^ optional retry. Nothing for no retry, 0 for unlimited
6161 , tactic :: Maybe SExpr
6262 -- ^ optional tactic (used verbatim) to replace (check-sat)
63+ , args :: [String ]
6364 }
6465 deriving (Eq , Show )
6566
@@ -70,6 +71,7 @@ defaultSMTOptions =
7071 , timeout = 125
7172 , retryLimit = Just 3
7273 , tactic = Nothing
74+ , args = []
7375 }
7476
7577data SMTContext = SMTContext
@@ -97,7 +99,7 @@ mkContext ::
9799 io SMTContext
98100mkContext opts prelude = do
99101 logMessage (" Starting SMT solver" :: Text )
100- (solver', handle) <- connectToSolver
102+ (solver', handle) <- connectToSolver opts . args
101103 solver <- liftIO $ newIORef solver'
102104 solverClose <- liftIO $ newIORef $ Backend. close handle
103105 mbTranscriptHandle <- forM opts. transcript $ \ path -> do
@@ -141,9 +143,9 @@ destroyContext ctxt = do
141143 hClose h
142144 liftIO $ join $ readIORef ctxt. solverClose
143145
144- connectToSolver :: LoggerMIO io => io (Backend. Solver , Backend. Handle )
145- connectToSolver = do
146- let config = Backend. defaultConfig
146+ connectToSolver :: LoggerMIO io => [ String ] -> io (Backend. Solver , Backend. Handle )
147+ connectToSolver args = do
148+ let config = Backend. defaultConfig{ Backend. args = args <> Backend. defaultConfig . args}
147149 handle <- liftIO $ Backend. new config
148150 solver <- liftIO $ Backend. initSolver Backend. Queuing $ Backend. toBackend handle
149151 pure (solver, handle)
0 commit comments