# These are run for all build profiles.
# If a test shouldn't be run in e.g. competition mode,
# put it below in "TESTS +="
-TESTS = \
- boolean-prec.cvc \
+
+# Regression tests for SMT inputs
+SMT_TESTS = \
distinct.smt \
flet.smt \
flet2.smt \
+ fuzz_1.smt \
+ fuzz_3.smt \
+ ineq_basic.smt \
+ ineq_slack.smt \
ite_real_int_type.smt \
ite_real_valid.smt \
let.smt \
simple2.smt \
simple-lra.smt \
simple-rdl.smt \
- simple-uf.smt \
- ite.smt2 \
+ simple-uf.smt
+
+# Regression tests for SMT2 inputs
+SMT2_TESTS = \
ite2.smt2 \
ite3.smt2 \
ite4.smt2 \
simple-lra.smt2 \
simple-rdl.smt2 \
- simple-uf.smt2 \
- bug2.smt \
- bug32.cvc \
- bug49.smt \
- bug161.smt \
- bug164.smt \
- bug167.smt \
- bug168.smt \
+ simple-uf.smt2
+
+# Regression tests for PL inputs
+CVC_TESTS = \
+ boolean-prec.cvc \
+ ite.cvc \
hole6.cvc \
logops.01.cvc \
logops.02.cvc \
logops.04.cvc \
logops.05.cvc \
simple.cvc \
- ineq_basic.smt \
- ineq_slack.smt \
smallcnf.cvc \
test11.cvc \
test9.cvc \
wiki.18.cvc \
wiki.19.cvc \
wiki.20.cvc \
- wiki.21.cvc \
- fuzz_1.smt \
- fuzz_3.smt
+ wiki.21.cvc
+
+# Regression tests derived from bug reports
+BUG_TESTS = \
+ bug2.smt \
+ bug32.cvc \
+ bug49.smt \
+ bug161.smt \
+ bug164.smt \
+ bug167.smt \
+ bug168.smt
+
+TESTS = $(SMT_TESTS) $(SMT2_TESTS) $(CVC_TESTS) $(BUG_TESTS)
EXTRA_DIST = $(TESTS)
--- /dev/null
+% EXPECT: UNSAT
+x, y : REAL;
+CHECKSAT (NOT (x = IF TRUE THEN x ELSE y ENDIF));
# If a test shouldn't be run in e.g. competition mode,
# put it below in "TESTS +="
TESTS = \
+ and-xor.cvc \
+ and-not.cvc \
+ bool-cmp.cvc \
+ cmp-plus.cvc \
+ eq-fun.cvc \
+ iff-assoc.cvc \
iff-implies.cvc \
+ implies-assoc.cvc \
implies-iff.cvc \
implies-or.cvc \
+ not-and.cvc \
+ not-eq.cvc \
or-implies.cvc \
or-xor.cvc \
+ plus-mult.cvc \
xor-or.cvc \
xor-and.cvc \
- and-xor.cvc \
- and-not.cvc \
- not-and.cvc \
- not-eq.cvc \
- eq-fun.cvc \
- iff-assoc.cvc \
- implies-assoc.cvc \
xor-assoc.cvc
EXTRA_DIST = $(TESTS)
--- /dev/null
+% EXPECT: VALID
+% Simple test for right precedence of comparisons and booleans
+
+x , y, z: INT;
+
+QUERY (x > y AND y = z OR x < z) <=> (((x > y) AND (y = z)) OR (x < z));
+% EXIT: 20
--- /dev/null
+% EXPECT: VALID
+% Simple test for right precedence of comparisons and plus/minus
+
+x, y, z: INT;
+
+QUERY (x + y - z > 0 AND 0 < x - y + z) <=>
+ ((((x + y) - z) > 0) AND (0 < ((x - y) + z)));
+% EXIT: 20
--- /dev/null
+% EXPECT: VALID
+% Simple test for right precedence of plus/minus and mult/divide
+
+a, b, c, d: INT;
+
+QUERY (a + b * c - d = a * b + c * d) <=>
+ (((a + (b * c)) - d) = ((a * b) + (c * d)));
+% EXIT: 20
--- /dev/null
+(benchmark symmetric
+:status unsat
+:logic QF_UF
+:extrapreds ((p U U))
+:extrafuns ((x U) (y U))
+:assumption (implies (p x y) (p y x))
+:assumption (p x y)
+:formula (not (p y x))
+)