Skip to content

Commit ceb3c1e

Browse files
authored
Merge branch 'master' into 4012-evaluate-pattern-pruning
2 parents 8312613 + 9f70027 commit ceb3c1e

File tree

3 files changed

+16
-5
lines changed

3 files changed

+16
-5
lines changed

booster/library/Booster/CLOptions.hs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,15 @@ parseSMTOptions =
361361
\Example: '(check-sat-using smt)' (i.e., plain 'check-sat')"
362362
)
363363
)
364+
<*> many
365+
( strOption
366+
( metavar "SMT_ARG"
367+
<> long "smt-arg"
368+
<> help
369+
( "Arguments to be passed to the SMT solver process"
370+
)
371+
)
372+
)
364373
)
365374
where
366375
smtDefaults = defaultSMTOptions

booster/library/Booster/SMT/Interface.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ hardResetSolver = do
126126
Just solverRef -> do
127127
closeContext ctxt
128128
Log.logMessage ("Restarting SMT solver" :: Text)
129-
(solver, handle) <- connectToSolver
129+
(solver, handle) <- connectToSolver ctxt.options.args
130130
liftIO $ do
131131
writeIORef solverRef solver
132132
writeIORef ctxt.solverClose $ Backend.close handle

booster/library/Booster/SMT/Runner.hs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

7577
data SMTContext = SMTContext
@@ -97,7 +99,7 @@ mkContext ::
9799
io SMTContext
98100
mkContext 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

Comments
 (0)