mirror of https://github.com/YosysHQ/yosys.git
smtio: Emit `mode: start` options before `set-logic` command and any other options after it.
Refer to the SMT-LIB specification, section 4.1.7. According to the spec, some options can only be specified in `start` mode. Once the solver sees `set-logic`, it moves to `assert` mode.
This commit is contained in:
parent
654864658f
commit
42fb75c570
|
@ -262,12 +262,19 @@ class SmtIo:
|
|||
if self.produce_models:
|
||||
self.write("(set-option :produce-models true)")
|
||||
|
||||
#See the SMT-LIB Standard, Section 4.1.7
|
||||
modestart_options = [":global-declarations", ":interactive-mode", ":produce-assertions", ":produce-assignments", ":produce-models", ":produce-proofs", ":produce-unsat-assumptions", ":produce-unsat-cores", ":random-seed"]
|
||||
for key, val in self.smt2_options.items():
|
||||
if key in modestart_options:
|
||||
self.write("(set-option {} {})".format(key, val))
|
||||
|
||||
self.write("(set-logic %s)" % self.logic)
|
||||
|
||||
if self.forall and self.solver == "yices":
|
||||
self.write("(set-option :yices-ef-max-iters 1000000000)")
|
||||
|
||||
for key, val in self.smt2_options.items():
|
||||
if key not in modestart_options:
|
||||
self.write("(set-option {} {})".format(key, val))
|
||||
|
||||
def timestamp(self):
|
||||
|
|
Loading…
Reference in New Issue