@@ -60,6 +60,7 @@ data SMTOptions = SMTOptions
60
60
-- ^ optional retry. Nothing for no retry, 0 for unlimited
61
61
, tactic :: Maybe SExpr
62
62
-- ^ optional tactic (used verbatim) to replace (check-sat)
63
+ , args :: [String ]
63
64
}
64
65
deriving (Eq , Show )
65
66
@@ -70,6 +71,7 @@ defaultSMTOptions =
70
71
, timeout = 125
71
72
, retryLimit = Just 3
72
73
, tactic = Nothing
74
+ , args = []
73
75
}
74
76
75
77
data SMTContext = SMTContext
@@ -97,7 +99,7 @@ mkContext ::
97
99
io SMTContext
98
100
mkContext opts prelude = do
99
101
logMessage (" Starting SMT solver" :: Text )
100
- (solver', handle) <- connectToSolver
102
+ (solver', handle) <- connectToSolver opts . args
101
103
solver <- liftIO $ newIORef solver'
102
104
solverClose <- liftIO $ newIORef $ Backend. close handle
103
105
mbTranscriptHandle <- forM opts. transcript $ \ path -> do
@@ -141,9 +143,9 @@ destroyContext ctxt = do
141
143
hClose h
142
144
liftIO $ join $ readIORef ctxt. solverClose
143
145
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}
147
149
handle <- liftIO $ Backend. new config
148
150
solver <- liftIO $ Backend. initSolver Backend. Queuing $ Backend. toBackend handle
149
151
pure (solver, handle)
0 commit comments