MainSolver requires concrete SMTConfig because it eagerly constructs SimpSMTSolver that requires parameters.
This is certainly inconsistent with the fact that Opensmt is possible to construct without SMTConfig, allowing to modify some parts of the config later, but not all.
MainSolver should be possible to construct lazily once it is required. Similarly, the construction of SimpSMTSolver inside of MainSolver may be lazy as well.
This may be connected to #666 (hmm is 666 just a coincidence here? :fearful:)
MainSolver
requires concreteSMTConfig
because it eagerly constructsSimpSMTSolver
that requires parameters. This is certainly inconsistent with the fact thatOpensmt
is possible to construct withoutSMTConfig
, allowing to modify some parts of the config later, but not all.MainSolver
should be possible to construct lazily once it is required. Similarly, the construction ofSimpSMTSolver
inside ofMainSolver
may be lazy as well.This may be connected to #666 (hmm is 666 just a coincidence here? :fearful:)