@@ -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. SolverBackend. Handle
145- connectToSolver =  do 
146-     let  config =  Backend. defaultConfig
146+ connectToSolver  ::  LoggerMIO  io  =>  [ String ]  ->   io  (Backend. SolverBackend. 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