Clark Barrett [Sun, 17 Jun 2012 01:49:58 +0000 (01:49 +0000)]
Fix array bug causing incorrect answers
Dejan Jovanović [Sat, 16 Jun 2012 23:58:07 +0000 (23:58 +0000)]
small change to equality assertions so that one doesn't get x = y and y = x
Kshitij Bansal [Sat, 16 Jun 2012 23:04:15 +0000 (23:04 +0000)]
Adding the failing QF_AUFLIA regression mentioned in last commit.
pp-regfile.delta02.smt is the one to look at with
--decision=justificaiton, the delta minimized version of pp-regfile,
which also gives wrong answer. due to various commits/fixes, delta01
gives correct answer currently.
Kshitij Bansal [Sat, 16 Jun 2012 22:44:20 +0000 (22:44 +0000)]
This is an attempt to fix the bug in the justification heuristic. The
other minor change is removing dependency of header file in
theory_engine.h
It fixes all known wrong answers in QF_BV and QF_AUFBV. It doesn't fix a
wrong answer for QF_AUFLIA -- it is currently unclear what is the cause
of this bug, could be sharing.
Performance impact (turns out) is none on QF_BV and QF_AUFBV (except, of
course, those for which the answer was wrong earlier; and also perhaps
one or two off-cases)
The issue was with how the infinite loop in justification stuff was prevented.
To keep it short, I skip what was wrong earlier, and this is what is done
now:
* whenever an atomic formula is seen, a list of pairs of <IteSkolemVariable,
AssertionCorrespondingToIteSkolem> is created for each skolem occuring in
the atom.
* we iterate over this list, doing the following: check if skolem is marked
as visited. if not, mark visited, recurse, when back unmark.
I lied, I will tell you what was being done earlier was -- 1. the check for
not being visited was being done in each recursive call, not just for atoms.
2. The AssertionCorrespondingToIteSkolem was being used to check if something
is visited and not IteSkolemVariable. I don't know if this makes any
difference, but anyhow, I think this is cleaner & clearer, so I keep this.
Morgan Deters [Sat, 16 Jun 2012 22:29:44 +0000 (22:29 +0000)]
updated build script for smt-comp submission
Dejan Jovanović [Sat, 16 Jun 2012 21:35:05 +0000 (21:35 +0000)]
changing theoryOf in shared mode with arrays to move equalities to arrays
disabled in bitvectors due to non-stably infinite problems
the option to enable it is --theoryof-mode=term
Tim King [Sat, 16 Jun 2012 17:37:33 +0000 (17:37 +0000)]
Fixing if condition for trivial equalities in arithmetic. Also some whitespace issues in smt_engine.cpp.
Kshitij Bansal [Fri, 15 Jun 2012 22:15:43 +0000 (22:15 +0000)]
Bug fix in justification heuristic. Had to do with how
a "visited" node in the recursive findSplitter method was
handled (which would lead to infinite loop). Earlier,
they were ignored assuming the ancestor would split on it
later. The right thing to do is to split on it right away.
(Fixes errors from the fuzzer, not the ones from last night's
regression)
Clark Barrett [Fri, 15 Jun 2012 20:51:05 +0000 (20:51 +0000)]
Reverting rewrite rule to working version
Clark Barrett [Fri, 15 Jun 2012 19:05:56 +0000 (19:05 +0000)]
Fixes some assertion failures
Clark Barrett [Fri, 15 Jun 2012 03:24:51 +0000 (03:24 +0000)]
Fix for incompleteness bug with decision engine: repeated simplification
could introduce additional assertions that were not beign processed by the
decision engine. Now these assertions are merged in with pre-ITE-removal
assertions, ensuring the decision engine sees them.
Tim King [Fri, 15 Jun 2012 02:16:41 +0000 (02:16 +0000)]
Fixing mac compilation issues.
Kshitij Bansal [Fri, 15 Jun 2012 00:15:49 +0000 (00:15 +0000)]
one bug fixed
Kshitij Bansal [Thu, 14 Jun 2012 23:49:22 +0000 (23:49 +0000)]
WIP
Dejan Jovanović [Thu, 14 Jun 2012 22:20:15 +0000 (22:20 +0000)]
fixing the problems with the bvminisat. there was a case when things would get bitblasted, it would restart to add the clauses, and loose propagation information.
Kshitij Bansal [Thu, 14 Jun 2012 21:35:18 +0000 (21:35 +0000)]
add failing regression, move error up
Tim King [Thu, 14 Jun 2012 21:24:44 +0000 (21:24 +0000)]
Fixing a case for explanation of non-normal form equalities.
Kshitij Bansal [Thu, 14 Jun 2012 21:08:28 +0000 (21:08 +0000)]
bug fixes in justification heuristic
* remove assert iteSkolemMap gives ite-s (not true with repeatSimp)
* handle a corner case in findSplitter triggered by repeatSimp
Tim King [Thu, 14 Jun 2012 20:59:14 +0000 (20:59 +0000)]
Fixing a bug related to explaining propagations with non-normalized witnesses.
Dejan Jovanović [Thu, 14 Jun 2012 19:54:25 +0000 (19:54 +0000)]
enabling fixed bug345 case
Dejan Jovanović [Thu, 14 Jun 2012 19:46:22 +0000 (19:46 +0000)]
fixes for the hasTerm issues in the shared database under the decision heuristic
Clark Barrett [Thu, 14 Jun 2012 19:37:31 +0000 (19:37 +0000)]
New substitutions implementation - fixes performance issue seen in nonclausal
simplification for some benchmarks
Tim King [Thu, 14 Jun 2012 19:29:25 +0000 (19:29 +0000)]
Fixed arithmetic consistency issue. The simplex conflict variable had to be reenqueued so that the queue was a superset of the failing assertions. This adds a super expensive debug routine unenqueuedVariablesAreConsistent() that catches this bug. This is enabled when -d arith::consistency is turned on. make check passes with this flag enabled.
Dejan Jovanović [Thu, 14 Jun 2012 19:09:37 +0000 (19:09 +0000)]
fix for clark's bug
imporant: theories SHOULD NOT use getSatValue at all, otherwise they might create a conflict with a literal they didn't get()
Morgan Deters [Thu, 14 Jun 2012 18:59:18 +0000 (18:59 +0000)]
don't run rewriterules regressions by default; fixes needed
Kshitij Bansal [Thu, 14 Jun 2012 18:51:34 +0000 (18:51 +0000)]
fix quantifier non-bug
Clark Barrett [Thu, 14 Jun 2012 17:55:08 +0000 (17:55 +0000)]
Removed an assertion, unneeded header file
Morgan Deters [Thu, 14 Jun 2012 17:42:47 +0000 (17:42 +0000)]
some changes to make CVC4 work nicely with trace executor for application track; (set-option :print-success true) supported, (exit) causes immediate exit regardless of EOF, etc.
Morgan Deters [Thu, 14 Jun 2012 17:25:22 +0000 (17:25 +0000)]
making --simplification=none the default for quantified logics; this a request from andy. evidence of performance improvement: church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=4516&reference_id=4475&p=5
Kshitij Bansal [Thu, 14 Jun 2012 17:14:30 +0000 (17:14 +0000)]
bug ifx, mv
Kshitij Bansal [Thu, 14 Jun 2012 17:06:14 +0000 (17:06 +0000)]
restore destruction of stuff in driver
Kshitij Bansal [Thu, 14 Jun 2012 16:46:44 +0000 (16:46 +0000)]
This commit:
* enables decision heuristic (justification) for QF_BV and QF_AUFBV
* disables a failing regression in aufbv (because of equality engine
assert failure trigerred by above change)
* moves around the init procedure smt_engine
* destruction time issues because of moving this -- still to be fixed,
currently get around by not destucting stuff in driver
Kshitij Bansal [Thu, 14 Jun 2012 14:57:24 +0000 (14:57 +0000)]
failing quantifier
Morgan Deters [Thu, 14 Jun 2012 14:32:51 +0000 (14:32 +0000)]
The "no-tears-in-competition-mode" commit. Change all (non-driver, non-SAT-solver) uses of std::cout to the Message stream, and all uses of std::cerr to the Warning stream.
Kshitij Bansal [Thu, 14 Jun 2012 13:47:33 +0000 (13:47 +0000)]
fix cout, fix statname, rm deadcode
Kshitij Bansal [Thu, 14 Jun 2012 09:50:14 +0000 (09:50 +0000)]
add passing regression
Dejan Jovanović [Thu, 14 Jun 2012 07:26:09 +0000 (07:26 +0000)]
changing to a more natural propagation order in uf, seems to pay off
Dejan Jovanović [Thu, 14 Jun 2012 06:44:49 +0000 (06:44 +0000)]
some changes to the uf engine
* dramatically less terms to manage by doing reflexivity semantically
* fixes the problem clark had with not detecting inconsistencies with shared terms
i'm not sure what's the performance impact, but this is so much better and we'll deal with performance later
Tim King [Thu, 14 Jun 2012 04:39:43 +0000 (04:39 +0000)]
Brings the tuning branch into trunk. This includes the changes from restricted-simplex.
Morgan Deters [Thu, 14 Jun 2012 01:40:51 +0000 (01:40 +0000)]
bug 346 resolved
Dejan Jovanović [Thu, 14 Jun 2012 01:08:11 +0000 (01:08 +0000)]
* removing rewriteEquality from the rewriter
* theories now get either an assertion from the SAT solver (normalized) or an (dis-)equality between two shared terms that is non-normalized
Dejan Jovanović [Wed, 13 Jun 2012 22:49:16 +0000 (22:49 +0000)]
removing bug233 until morgan commits the actual file
Morgan Deters [Wed, 13 Jun 2012 22:17:47 +0000 (22:17 +0000)]
adding some regressions to the usual regressions runs; several recently-fixed incremental bugs are closed
Tim King [Wed, 13 Jun 2012 21:30:05 +0000 (21:30 +0000)]
Added witnesses to Constraints.
Tim King [Wed, 13 Jun 2012 20:37:43 +0000 (20:37 +0000)]
- Added a loop to internally assert constraints that are marked as true.
- Changes how CongruenceManager reports conflicts.
- ConstraintDatabase can now detect and raise conflicts when doing unate propagation.
Tim King [Wed, 13 Jun 2012 20:32:52 +0000 (20:32 +0000)]
Fixed whitespace warning on Makefile.
Tim King [Wed, 13 Jun 2012 20:32:04 +0000 (20:32 +0000)]
Adds debugging output to theory_engine.cpp.
Morgan Deters [Wed, 13 Jun 2012 20:27:58 +0000 (20:27 +0000)]
revisions to the "make submission" target
Morgan Deters [Wed, 13 Jun 2012 19:50:35 +0000 (19:50 +0000)]
Don't use the "inlined" feature of ANTLR 3.2, which causes a buffer overflow condition when reading from stdin. This should completely resolve bug #319.
However, on large inputs especially (like the stp/testcase benchmarks), this inlining feature can speed parsing by 5-10%, at the cost of not supporting interactive sessions on stdin (like in the SMT-COMP application track).
So I updated the submission script and competition build so that
* a competition build with antlr-inlining is built for the main and parallel tracks
* a competition build without antlr-inlining is built for the application track
Again, the effect is only when reading the stdin stream (but that's how SMT-COMP works). For normal (non-competition) builds, we need to support interactive sessions (from e.g. KIND) on stdin, so this inlining is off for all builds except main- and parallel-track competition builds.
Also added a "get-antlr-3.4" script that automatically downloads and locally installs a copy of libantlr3c and the antlr parser generator inside the CVC4 source tree.
Closing bug #319.
Kshitij Bansal [Wed, 13 Jun 2012 18:24:30 +0000 (18:24 +0000)]
add passing regression
Dejan Jovanović [Wed, 13 Jun 2012 18:08:09 +0000 (18:08 +0000)]
fix for bug 354
Clark Barrett [Wed, 13 Jun 2012 17:06:08 +0000 (17:06 +0000)]
Fixed failing assertion when EqualityEngine is in conflict
Dejan Jovanović [Wed, 13 Jun 2012 15:50:56 +0000 (15:50 +0000)]
enabling regressions from last night, all fixed
Kshitij Bansal [Wed, 13 Jun 2012 15:36:03 +0000 (15:36 +0000)]
enable some decision regressions
Kshitij Bansal [Wed, 13 Jun 2012 15:31:38 +0000 (15:31 +0000)]
Make d_result in DE context dependent
(fixes bugs in bv, others with JH on)
Clark Barrett [Wed, 13 Jun 2012 14:25:53 +0000 (14:25 +0000)]
Fixed definition of bvsmod
Kshitij Bansal [Wed, 13 Jun 2012 14:00:35 +0000 (14:00 +0000)]
decision regressions, all but one fail
Clark Barrett [Wed, 13 Jun 2012 13:54:14 +0000 (13:54 +0000)]
Fixes more problems in bv rewrites
Dejan Jovanović [Wed, 13 Jun 2012 11:32:12 +0000 (11:32 +0000)]
!(*child_it).isConst() assertion fail
this is delta minimal with the same assertion
Dejan Jovanović [Wed, 13 Jun 2012 03:58:32 +0000 (03:58 +0000)]
r2.node == response.node failure
Dejan Jovanović [Wed, 13 Jun 2012 03:35:48 +0000 (03:35 +0000)]
r2.node == response.node failure
Dejan Jovanović [Wed, 13 Jun 2012 03:30:51 +0000 (03:30 +0000)]
!current[0].isConst() failure
Clark Barrett [Wed, 13 Jun 2012 02:49:35 +0000 (02:49 +0000)]
Fixes lots of problems in bv rewrite rules and adds lots of assertions
to catch any that I may have missed
Dejan Jovanović [Wed, 13 Jun 2012 02:28:46 +0000 (02:28 +0000)]
benchmark to show that we don't rewrite bvsmod correctly
the definition in smtlib was buggy and was changed on 2011-06-15
check http://goedel.cs.uiowa.edu/smtlib/logics/QF_BV.smt2
Morgan Deters [Tue, 12 Jun 2012 21:29:51 +0000 (21:29 +0000)]
Fix some compile warnings (but they never showed up on church)
Morgan Deters [Tue, 12 Jun 2012 21:11:15 +0000 (21:11 +0000)]
Fix to SMT-LIBv1 parser: QF_UF declares sort "U", but other *UF* logics do not (e.g. QF_UFLIA).
Also fix a syntax error in a regression test (CVC4 is too lenient to catch it though---CVC3 tripped over it).
Also add additional parts for "make submission" in the top-level makefile
Dejan Jovanović [Tue, 12 Jun 2012 20:59:13 +0000 (20:59 +0000)]
missing problems
Dejan Jovanović [Tue, 12 Jun 2012 20:55:02 +0000 (20:55 +0000)]
wrong answer for bv
Clark Barrett [Tue, 12 Jun 2012 20:35:07 +0000 (20:35 +0000)]
Moved some things around in the preprocessor. Now theory preprocessing gets
called before ite simplification unless arithrewriteequality is on
Clark Barrett [Tue, 12 Jun 2012 20:29:28 +0000 (20:29 +0000)]
Fixed fuzzing bug
Tim King [Tue, 12 Jun 2012 19:57:23 +0000 (19:57 +0000)]
Fix to yesterday's change in arithmetic.
Kshitij Bansal [Tue, 12 Jun 2012 19:50:25 +0000 (19:50 +0000)]
bv reduced with decision: sat instead of unsat
Kshitij Bansal [Tue, 12 Jun 2012 19:21:30 +0000 (19:21 +0000)]
Assert fail equaility_engine.cpp: hasTerm(node) with --decision=justification
Dejan Jovanović [Tue, 12 Jun 2012 19:09:39 +0000 (19:09 +0000)]
bufixes and the bugs
* array now only propagates thropugh the equality engine
* assertions in the equality rewriting to ensure eq -> { eq, T, F }
Dejan Jovanović [Tue, 12 Jun 2012 18:53:40 +0000 (18:53 +0000)]
conflicts from theories are removable
Clark Barrett [Tue, 12 Jun 2012 18:32:42 +0000 (18:32 +0000)]
Changed bitvector theory rewriter so that equalities always get rewritten to
equalities or true or false
Kshitij Bansal [Tue, 12 Jun 2012 17:33:29 +0000 (17:33 +0000)]
cleanup of exit mechanism when decisionEngine is on\n\n fixes some bugs we were seeing in quantifiers+decision stuff
Clark Barrett [Tue, 12 Jun 2012 17:31:35 +0000 (17:31 +0000)]
Fixed bug causing QF_LIA/solver_cvc4/incorrect1.smt and QF_LIA/solver_cvc4/incorrect3.smt
Clark Barrett [Tue, 12 Jun 2012 17:07:49 +0000 (17:07 +0000)]
Fixed failing assertion in arrays for bug 347
Dejan Jovanović [Tue, 12 Jun 2012 17:02:02 +0000 (17:02 +0000)]
more breakage in aufbv
Assertion `value(l) == (lbool((uint8_t)0))' failed.
and
d_disequalityReasonsMap.find(pair) != d_disequalityReasonsMap.end()
Morgan Deters [Tue, 12 Jun 2012 16:18:04 +0000 (16:18 +0000)]
minor cleanup, and replace a "private:" in equality engine that had been removed by the quantifiers merge (I had reengineered some things from quantifiers so that the equality engine didn't have to expose internals as public, but then had neglected to re-privatize them)
Clark Barrett [Tue, 12 Jun 2012 16:15:47 +0000 (16:15 +0000)]
Fixed compile error
Clark Barrett [Tue, 12 Jun 2012 16:05:37 +0000 (16:05 +0000)]
Enabling constant propagation
Morgan Deters [Tue, 12 Jun 2012 14:31:16 +0000 (14:31 +0000)]
fix a few compatibility bindings issues
Dejan Jovanović [Tue, 12 Jun 2012 11:35:30 +0000 (11:35 +0000)]
wrong answer benchmarks
these should be simple constant propagation problems
Dejan Jovanović [Tue, 12 Jun 2012 11:12:36 +0000 (11:12 +0000)]
wrong result benchmark
Dejan Jovanović [Tue, 12 Jun 2012 03:24:45 +0000 (03:24 +0000)]
tests for the
!isEliminated(var(ps[i]))
assert fails
Dejan Jovanović [Tue, 12 Jun 2012 03:21:47 +0000 (03:21 +0000)]
test cases for the
d_disequalityReasonsMap.find(pair) != d_disequalityReasonsMap.end()
assertion fail
Clark Barrett [Tue, 12 Jun 2012 03:01:41 +0000 (03:01 +0000)]
Adding constant propagation code - needs more testing - off by default
Tim King [Tue, 12 Jun 2012 00:37:27 +0000 (00:37 +0000)]
Adding incorrect qf_lia result.
Morgan Deters [Tue, 12 Jun 2012 00:32:02 +0000 (00:32 +0000)]
fix ordering issue of --dump-to and --default-dag-thresh. now can be specified in either order and the DAG threshold takes.
Tim King [Mon, 11 Jun 2012 23:40:47 +0000 (23:40 +0000)]
Fix to term normalization of integer equalities. Adds a regression test that triggered it.
Tim King [Mon, 11 Jun 2012 22:32:46 +0000 (22:32 +0000)]
Fixing type comparision assertion in getEqualityStatus().
Dejan Jovanović [Mon, 11 Jun 2012 21:53:00 +0000 (21:53 +0000)]
another benchmark that used to fail
Dejan Jovanović [Mon, 11 Jun 2012 18:54:38 +0000 (18:54 +0000)]
fixing bitvector bugs
* clauses shouldn't be erased when they could be a reason for outside propagation
* propagation of p and !p is ignored as this must lead to a conflict in the subtheory internally
Morgan Deters [Mon, 11 Jun 2012 18:27:58 +0000 (18:27 +0000)]
mark a quantifiers global var as "static" so we can find it easier later
Clark Barrett [Mon, 11 Jun 2012 17:31:13 +0000 (17:31 +0000)]
OK, now the rewrite issues are fixed
Morgan Deters [Mon, 11 Jun 2012 17:13:03 +0000 (17:13 +0000)]
distribute an .expect file. fixes a "make check" failure not for svn working dirs but for distributed tarballs.
Morgan Deters [Mon, 11 Jun 2012 16:28:23 +0000 (16:28 +0000)]
Merge from quantifiers2-trunkmerge branch.
Adds TheoryQuantifiers and TheoryRewriteRules, QuantifiersEngine, and other infrastructure.
Adds theory instantiators to many theories.
Adds the UF strong solver.
Clark Barrett [Mon, 11 Jun 2012 16:14:01 +0000 (16:14 +0000)]
Fix for array bug with decision heuristic
Also fixed one bv rewrite failure (more to come)