* Support SAT logic.
* Add lustre example.
* Add to smt1 as well.
* Fix.
* Fix.
* Fix for new option.
logicMap["QF_UFNIRA"] = QF_UFNIRA;
logicMap["QF_AUFLIA"] = QF_AUFLIA;
logicMap["QF_AUFLIRA"] = QF_AUFLIRA;
+ logicMap["SAT"] = SAT;
logicMap["UFNIA"] = UFNIA;
logicMap["UFNIRA"] = UFNIRA;
logicMap["UFLRA"] = UFLRA;
case QF_SAT:
/* no extra symbols needed */
break;
+ case SAT:
+ addTheory(THEORY_QUANTIFIERS);
+ break;
case QF_UFIDL:
case QF_UFLIA:
QF_UFLIRA, // nonstandard
QF_UFNIRA, // nonstandard
QF_UFNRA,
+ SAT,
UFLRA,
UFNIRA, // nonstandard
UFNIA,
} else if(!strcmp(p, "QF_SAT")) {
// propositional logic only; we're done.
p += 6;
+ } else if(!strcmp(p, "SAT")) {
+ // quantified Boolean formulas only; we're done.
+ enableQuantifiers();
+ p += 3;
} else if(!strcmp(p, "QF_ALL_SUPPORTED")) {
// the "all theories included" logic, no quantifiers
enableEverything();
cruanes-no-minimal-unk.smt2 \
no-minimal-sat.smt2 \
issue916-fmf-or.smt2 \
- pow2-bool.smt2
+ pow2-bool.smt2 \
+ sat-logic.smt2
EXTRA_DIST = $(TESTS)
--- /dev/null
+; COMMAND-LINE: --finite-model-find
+; EXPECT: sat
+(set-logic SAT)
+(set-info :status sat)
+(assert (forall ((x Bool) (y Bool)) (exists ((z Bool)) (= z (and x y)))))
+(check-sat)
cegar1.sy \
triv-type-mismatch-si.sy \
nia-max-square-ns.sy \
- strings-concat-3-args.sy
+ strings-concat-3-args.sy \
+ ccp16.lus.sy
# sygus tests currently taking too long for make regress
--- /dev/null
+; EXPECT: unsat
+; COMMAND-LINE: --sygus-out=status
+(set-logic SAT)
+
+(define-fun
+ __node_init_top_0 (
+ (top.usr.OK_a_0 Bool)
+ (top.res.init_flag_a_0 Bool)
+ ) Bool
+
+ (and (= top.usr.OK_a_0 true) top.res.init_flag_a_0)
+)
+
+(define-fun
+ __node_trans_top_0 (
+ (top.usr.OK_a_1 Bool)
+ (top.res.init_flag_a_1 Bool)
+ (top.usr.OK_a_0 Bool)
+ (top.res.init_flag_a_0 Bool)
+ ) Bool
+
+ (and (= top.usr.OK_a_1 true) (not top.res.init_flag_a_1))
+)
+
+
+
+(synth-inv str_invariant(
+ (top.usr.OK Bool)
+ (top.res.init_flag Bool)
+))
+
+
+(declare-primed-var top.usr.OK Bool)
+(declare-primed-var top.res.init_flag Bool)
+
+(define-fun
+ init (
+ (top.usr.OK Bool)
+ (top.res.init_flag Bool)
+ ) Bool
+
+ (and (= top.usr.OK true) top.res.init_flag)
+)
+
+(define-fun
+ trans (
+
+ ;; Current state.
+ (top.usr.OK Bool)
+ (top.res.init_flag Bool)
+
+ ;; Next state.
+ (top.usr.OK! Bool)
+ (top.res.init_flag! Bool)
+
+ ) Bool
+
+ (and (= top.usr.OK! true) (not top.res.init_flag!))
+)
+
+(define-fun
+ prop (
+ (top.usr.OK Bool)
+ (top.res.init_flag Bool)
+ ) Bool
+
+ top.usr.OK
+)
+
+(inv-constraint str_invariant init trans prop)
+
+(check-synth)