summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKshitij Bansal <kshitij@cs.nyu.edu>2012-06-16 22:44:20 +0000
committerKshitij Bansal <kshitij@cs.nyu.edu>2012-06-16 22:44:20 +0000
commit4a45b80a981a875cb560876dee2eb7bfa9db1e08 (patch)
treed5ef461b177730fce9c6fabaf1967f64cbf300db /test
parent243d4906d201aa3d809ccd40ee15216ba86ea801 (diff)
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.
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback