Dejan Jovanović [Mon, 14 May 2012 20:57:12 +0000 (20:57 +0000)]
fixes for shared term registration. previously the type was not considered when looking at theories of the term and for a term like
read(a, f(x))
the term f(x) would not be registered to arithmetic in AUFLIA. this fixies the issue of bug 330 and moves it to some other assertion fail.
Clark Barrett [Mon, 14 May 2012 19:33:15 +0000 (19:33 +0000)]
Fixed assertion failures in array theory
This fixes bugs 335 and 333.
Morgan Deters [Mon, 14 May 2012 19:10:39 +0000 (19:10 +0000)]
in debug builds, -d can be used for trace tags that aren't also debug tags
Dejan Jovanović [Mon, 14 May 2012 15:13:05 +0000 (15:13 +0000)]
fixing up preregistration again
Dejan Jovanović [Sun, 13 May 2012 15:51:27 +0000 (15:51 +0000)]
fixing build warnings
Morgan Deters [Fri, 11 May 2012 20:13:28 +0000 (20:13 +0000)]
fix regex in Debug_tags and Trace_tags generation for Mac OS
Morgan Deters [Fri, 11 May 2012 19:59:04 +0000 (19:59 +0000)]
fix typo in sed line
Morgan Deters [Fri, 11 May 2012 19:11:56 +0000 (19:11 +0000)]
output a warning message when a function type (or datatype, or array, etc.) is created with a Boolean term inside it
Clark Barrett [Fri, 11 May 2012 15:20:05 +0000 (15:20 +0000)]
Disabled arith-rewrite-equalities by default unless in a pure arithmetic theory
Clark Barrett [Fri, 11 May 2012 14:00:27 +0000 (14:00 +0000)]
Added some ITE rewrites,
Added ITE simplifier - on by default only for QF_LIA benchmarks
Fixed one bug in arrays
Added negate() to node.h - it returns kind == NOT ? kind[0] : kind.notNode()
Tim King [Fri, 11 May 2012 01:29:11 +0000 (01:29 +0000)]
Partially fixes something-like-a-problem with TheoryArith::getDeltaValue().
Tim King [Thu, 10 May 2012 14:50:45 +0000 (14:50 +0000)]
Removing now unneeded (as of r3425) typenames from EqualityEngine. trunk now compiles on Debian.
Morgan Deters [Wed, 9 May 2012 22:40:48 +0000 (22:40 +0000)]
fix an issue which breaks language bindings (so this commit fixes debian nightly builds)
Morgan Deters [Wed, 9 May 2012 21:52:38 +0000 (21:52 +0000)]
--disable-tracing at configure time now disables Trace() and Debug() gestures both.
Dejan Jovanović [Wed, 9 May 2012 21:25:17 +0000 (21:25 +0000)]
* simplifying equality engine interface
* notifications are now through the interface subclass instead of a template
* notifications include constants being merged
* changed contextNotifyObj::notify to contextNotifyObj::contextNotifyPop so it's more descriptive and doesn't clutter methods when subclassed
* sat solver now has explicit methods to make true and false constants
* 0-level literals are removed from explanations of propagations
Kshitij Bansal [Wed, 9 May 2012 21:09:31 +0000 (21:09 +0000)]
rm something for a future merge that sneaked in
(gets rid of warning)
Kshitij Bansal [Wed, 9 May 2012 05:45:36 +0000 (05:45 +0000)]
Merge from decision branch (ITE support)
Major changes from last merge
* ITEs supported
* Don't share theory lemmas to DE, only assertions
Should probably be noted that 'make regress' doesn't quite
pass with --decision=justification. Throws off search in couple
of arith benchmarks.
No serious performance changes expected. Keep an eye.
Dejan Jovanović [Wed, 9 May 2012 03:31:50 +0000 (03:31 +0000)]
Fixing the debug tags generation and related methods in configuration.cpp that disallowed me to debug my bugs by reporting that the debug tag doesn't exists, where in fact it was in the code.
1) The grep and sed for tags wasn't picking up on .isOn("tag")
2) The isDebugTag a) didn't take a parameter b) was using binary search using strcmp which is non-portable and didn't work for tags including special characters
Morgan should vet this, since there is some crazy sed stuff going on
Liana Hadarean [Tue, 8 May 2012 21:54:55 +0000 (21:54 +0000)]
Merging in bvprop branch, with proper bit-vector propagation.
This should also fix bug 325.
Tim King [Mon, 7 May 2012 22:17:35 +0000 (22:17 +0000)]
Fixing a bug with TheoryArith::ppAssert() and shared terms.
Tim King [Mon, 7 May 2012 22:06:07 +0000 (22:06 +0000)]
Fixes a sign bug in the DioSolver.
Clark Barrett [Fri, 4 May 2012 17:18:02 +0000 (17:18 +0000)]
Guard for expensive Debug trace
François Bobot [Fri, 4 May 2012 14:28:08 +0000 (14:28 +0000)]
options: fail if the debug or trace tag specified doesn't exist (-d -t)
François Bobot [Fri, 4 May 2012 14:28:00 +0000 (14:28 +0000)]
fix: getNumTraceTags, getNumDebugTags
Tim King [Fri, 4 May 2012 03:03:34 +0000 (03:03 +0000)]
- This fixes a problem where simplex produced the same conflict in the single check call.
- This increases the number of substitutions that ppAssert can solve on integer equations.
Dejan Jovanović [Thu, 3 May 2012 20:18:18 +0000 (20:18 +0000)]
Some cleanup starting off from trying to understand the sharing code. Changes include
* fixed term visitor from the bvprop branch
* removed all the warnings from builds -- warnings are there to be noted *NOT* to be used as scribbles
* moved the LogicInfo into the theory constructor
Clark Barrett [Wed, 2 May 2012 00:44:40 +0000 (00:44 +0000)]
Changing d_sharedTermsExist to logicInfo.isSharingEnabled()
Clark Barrett [Mon, 30 Apr 2012 14:42:28 +0000 (14:42 +0000)]
Added map from skolem variables to new ite formulas in ite removal.
d_sharedTermsExist is now set based on logicInfo instead of dynamically when
shared terms are found.
Morgan Deters [Sat, 28 Apr 2012 01:12:21 +0000 (01:12 +0000)]
New LogicInfo functionality.
src/theory/logic_info.{h,cpp} contains the CVC4::LogicInfo class, which keeps
track of which theories are active (which should remain constant throughout
the life of an SmtEngine) and other details (like integers, reals,
linear/nonlinear, etc.).
This class has a default constructor which is the most all-inclusive logic.
Alternatively, this class can be constructed from an SMT-LIB logic string
(the empty string gives the same as "QF_SAT"). Once constructed, theories
can be enabled or disabled, quantifiers flipped on and off, integers flipped
on and off, etc. At any point an SMT-LIB-like logic string can be extracted.
The SmtEngine keeps a LogicInfo for itself and shares with the TheoryEngine
(and, in turn, the theories) only a const reference to it. This ensures that
the logic info doesn't mutate over the course of the run.
As part of this commit, the TheoryEngine's old notion of "active theories"
has been completely removed. As a result, SMT benchmarks that are incorrectly
tagged with a logic will assert-fail or worse. (We should probably fail
more gracefully in this case.) One such example was bug303.smt2,
which used UF reasoning but was tagged QF_LIA. This has been fixed.
Morgan Deters [Sat, 28 Apr 2012 00:49:10 +0000 (00:49 +0000)]
require boost library (but not the threading support---that's only necessary for portfolio)
Morgan Deters [Sat, 28 Apr 2012 00:17:03 +0000 (00:17 +0000)]
undo, again
Morgan Deters [Sat, 28 Apr 2012 00:15:52 +0000 (00:15 +0000)]
adding THEORY_QUANTIFIERS and THEORY_REWRITERULES to the theory enumeration manually; this will make the LogicInfo commit coming up much easier to integrate into trunk, and will anyway be cleaned up when quantifiers2 branch is merged into trunk.
Morgan Deters [Fri, 27 Apr 2012 23:04:32 +0000 (23:04 +0000)]
undo previous commit (as it will break a number of things without additional support I haven't yet committed)
Morgan Deters [Fri, 27 Apr 2012 23:03:33 +0000 (23:03 +0000)]
adding THEORY_QUANTIFIERS and THEORY_REWRITERULES to the theory enumeration manually; this will make the LogicInfo commit coming up much easier to integrate into trunk, and will anyway be cleaned up when quantifiers2 branch is merged into trunk.
Morgan Deters [Fri, 27 Apr 2012 23:01:29 +0000 (23:01 +0000)]
fix parser logic-handling oversights: QF_UFBV should now be supported
Morgan Deters [Fri, 27 Apr 2012 22:07:44 +0000 (22:07 +0000)]
break dependence on zlib-dev for now
Clark Barrett [Fri, 27 Apr 2012 19:26:01 +0000 (19:26 +0000)]
Fixed warning in decision_engine.h, minor tweak to caregraph function in
arrays, fixed bug with equalities between constants in shared terms database
Tim King [Fri, 27 Apr 2012 14:47:10 +0000 (14:47 +0000)]
This merges in the branch cvc4/branches/arithmetic/matrix into trunk.
- Splits the functionality of having a sparse matrix of Ts and a solved matrix of rationals in tableau.
- Splits ArithVarSet into DenseMap and CDDenseSet and simplifies the code.
- No performance loss!
Kshitij Bansal [Wed, 25 Apr 2012 22:33:00 +0000 (22:33 +0000)]
portfolio driver: respect parseOnly option
Kshitij Bansal [Wed, 25 Apr 2012 21:29:49 +0000 (21:29 +0000)]
fix for de+lemmas
for the first time make regress passes even if JH is enabled
Tim King [Tue, 24 Apr 2012 18:36:40 +0000 (18:36 +0000)]
This commit merges in the branch branches/arithmetic/congruence into trunk. Here are a summary of the changes:
- Adds CDMaybe and CDRaised in cdmaybe.h
- Add test for congruence over arithmetic terms and constants
- Renames DifferenceManager to CongruenceManager
- Changes a number of internal details for CongruenceManager
Kshitij Bansal [Mon, 23 Apr 2012 17:56:19 +0000 (17:56 +0000)]
Merge from decision branch -- partially working justification heuristic
Overview of changes
* command line option --decision={internal,justification}
* justification heuristic handles all operators except ITEs
revelant stats: decision::jh::*
* if decisionEngine has solved the problem PropEngine returns
unknown and smtEngine queries DE to get the answer
relevant stat: smt::resultSource
* there are known bugs
Full list of commits being merged
r3330 use CD data structures in JH
r3329 add command-line option --decision=MODE
r3328 timer stat, other fixes
r3326 more trace
r3325 enable implies, iff, xor (no further regression losses)
r3324 feed decision engine lemmas, changes to quitting mechanism
r3322 In progress
r3321 more fixes...
r3318 bugfix1 (69 more to go)
r3317 Handle other boolean operators in JH (except ITE)
r3316 mechanism for DE to stopSearch
r3315 merge from trunk + JH translation continuation
r3275 change option to enable JH by default[A
Clark Barrett [Fri, 20 Apr 2012 23:30:08 +0000 (23:30 +0000)]
Updates to array theory - much more lazy about introduction of reads
Also disabled eager lemmas - slows down QF_AX but gets new examples in QF_AUFBV
Tim King [Thu, 19 Apr 2012 18:36:02 +0000 (18:36 +0000)]
In the constructor of DecisionEngine, there were 2 pointers that were assumed to be initialized to NULL. This is not true on all platforms. This is now done explicitly. Macs builds should now work again.
Kshitij Bansal [Wed, 18 Apr 2012 10:41:45 +0000 (10:41 +0000)]
add the missing BINARY variable in some test/regress makefiles
Kshitij Bansal [Wed, 18 Apr 2012 08:41:13 +0000 (08:41 +0000)]
cout -> warning. Happening in portfolio
rest of the search go through, but still should be investigated
Dejan Jovanović [Wed, 18 Apr 2012 01:07:43 +0000 (01:07 +0000)]
disabling the problematic pragma in node_manager.h on gcc < 4.6 until we figure out what to do with it
Dejan Jovanović [Tue, 17 Apr 2012 20:42:09 +0000 (20:42 +0000)]
Fix for thos annoying "array index" warnings in production builds
Kshitij Bansal [Tue, 17 Apr 2012 17:20:37 +0000 (17:20 +0000)]
A dummy decision engine. Expected performance impact: none.
Adds DecisionEngine and an abstract class DecisionStrategy
which other strategies will derive from eventually.
Full revision summary of merged commits:
r3241 merge from trunk
r3240 fix
r3239 WIP
r3238 JH, CVC3 code: 5% done -- 5% translated
r3237 JH groundwork
r3236 make make regrss pass
r3234 hueristic->heuristic
r3229 JustificationHeuristic: EOD-WIP
r3228 DecisionEngine: hookup assetions
r3227 move ITE outside simplifyAssertions
r3226 DecisionStrategy abstract class
r3222 DecisionEngine: begin
Tim King [Tue, 17 Apr 2012 16:07:22 +0000 (16:07 +0000)]
Merges branches/arithmetic/atom-database r2979 through 3247 into trunk. Below is a highlight of the changes:
- This introduces a new normal form to arithmetic.
-- Equalities and disequalities are in solved form.
Roughly speaking this means: (= x (+ y z)) is in normal form.
(See the comments in normal_form.h for what this formally requires.)
-- The normal form for inequality atoms always uses GEQ and GT instead of GEQ and LEQ.
Integer atoms always use GEQ.
- Constraint was added to TheoryArith.
-- A constraint is a triple of (k x v) where:
--- k is the type of the constraint (either LowerBound, UpperBound, Equality or Disequality),
--- x is an ArithVar, and
--- v is a DeltaRational value.
-- Constraints are always attached to a ConstraintDatabase.
-- A Constraint has its negation in the ConstraintDatabase [at least for now].
-- Every constraint belongs to a set of constraints for each ArithVar sorted by the delta rational values.
-- This set can be iterated over and provides efficient access to other constraints for this variable.
-- A literal may be attached to a constraint.
-- Constraints with attached literals may be marked as being asserted to the theory (sat context dependent).
-- Constraints can be propagated.
-- Every constraint has a proof (sat context dependent).
-- Proofs can be explained for either conflicts or propagations (if the node was propagated). (These proofs may be different.)
-- Equalities and disequalities can be marked as being split (user context dependent)
- This removes and replaces:
-- src/theory/arith/arith_prop_manager.*
-- src/theory/arith/atom_database.*
-- src/theory/arith/ordered_set.h
- Added isZero(), isOne() and isNegativeOne() to Rational and Integer.
- Added operator+ to CDList::const_iterator.
- Added const_iterator to CDQueue.
- Changes to regression tests.
Clark Barrett [Sat, 14 Apr 2012 23:59:17 +0000 (23:59 +0000)]
Fixed bug in sharing with arrays of different types
Morgan Deters [Fri, 13 Apr 2012 16:21:25 +0000 (16:21 +0000)]
Fix SExpr name qualification for swig, and #include integer and rational headers.
Morgan Deters [Thu, 12 Apr 2012 19:30:37 +0000 (19:30 +0000)]
svn ignore Makefile.in for aufbv regression directory
Tim King [Thu, 12 Apr 2012 13:26:30 +0000 (13:26 +0000)]
Adds an operator<< to SExpr::SexprTypes. This fixes bug 317. In debug builds, an Unhandled(SExpr::SexprTypes) could not compile on debian.
Morgan Deters [Wed, 11 Apr 2012 16:31:03 +0000 (16:31 +0000)]
merge from arrays-clark branch
François Bobot [Fri, 6 Apr 2012 22:51:27 +0000 (22:51 +0000)]
* Smt2 printer for datatypes
* Fix DefineFunctionCommand when a constant is defined
Morgan Deters [Fri, 6 Apr 2012 22:06:52 +0000 (22:06 +0000)]
* Fix ITEs and functions in CVC language printer.
* Permit "BOOL = BOOL" in CVC language parser (auto-replaced with IFF
internally, except in strict mode).
* SExpr atoms now can be string-, integer-, or rational-valued.
* SmtEngine::setInfo(":status", ...) now properly dumps a
SetBenchmarkStatusCommand rather than a SetInfoCommand.
* Some dumping fixes (resolves bug 313)
Morgan Deters [Fri, 6 Apr 2012 20:44:12 +0000 (20:44 +0000)]
fix distributed builds (and therefore the Debian nightly build) by ignoring Makefile.am files under src/prop/cryptominisat.
Dejan Jovanović [Fri, 6 Apr 2012 19:01:25 +0000 (19:01 +0000)]
processing assertions in bit-vectors even when in fullcheck (needed for sharing)
Morgan Deters [Thu, 5 Apr 2012 20:07:30 +0000 (20:07 +0000)]
Support to test the "dumper" mechanism in regressions (feeding dump output back in) by doing "make regress RUN_REGRESSION_ARGS=--dump"
Dejan Jovanović [Wed, 4 Apr 2012 16:33:39 +0000 (16:33 +0000)]
some settings in bvminisat
Liana Hadarean [Wed, 4 Apr 2012 14:23:48 +0000 (14:23 +0000)]
changed BVMinisat options to use cc_min=0 in propagate only calls and cc_min=2 in solve
Liana Hadarean [Wed, 4 Apr 2012 02:46:19 +0000 (02:46 +0000)]
changed ccmin_mode in BvMinisat
Liana Hadarean [Wed, 4 Apr 2012 02:02:06 +0000 (02:02 +0000)]
* added propagation as lemmas to TheoryBV:
* modified BVMinisat to work incrementally
* added more bv regressions
Tim King [Tue, 3 Apr 2012 15:01:29 +0000 (15:01 +0000)]
Fix for make dist.
Tim King [Mon, 2 Apr 2012 22:49:39 +0000 (22:49 +0000)]
Fix for broken unit tests from the previous commit.
Tim King [Mon, 2 Apr 2012 20:56:55 +0000 (20:56 +0000)]
- Merged in the branch cdlist-cleanup.
- This adds a CleanUp template argument to CDList.
- CDChunkList<T> replaces the CDList specialization for ContextMemoryAllocator.
- CDVector<T> has been simplified and improved.
- The expected performance impact is negligible.
Kshitij Bansal [Mon, 2 Apr 2012 20:02:14 +0000 (20:02 +0000)]
fix for cvc4_logic dump
Tim King [Mon, 2 Apr 2012 18:56:00 +0000 (18:56 +0000)]
Removing large and unused regress2 benchmarks to decrease the size of checkouts.
Dejan Jovanović [Fri, 30 Mar 2012 01:46:12 +0000 (01:46 +0000)]
some more build system fixes
Dejan Jovanović [Fri, 30 Mar 2012 01:44:43 +0000 (01:44 +0000)]
fixing some build systme warnings
Tim King [Thu, 29 Mar 2012 19:53:20 +0000 (19:53 +0000)]
Fix for bug 316. If the flag @CVC4_TLS_SUPPORTED@ is false, function pointers cannot be directly used with the CVC4_THREADLOCAL macro. This is why there were problems on macs.
Tim King [Thu, 29 Mar 2012 19:38:42 +0000 (19:38 +0000)]
Fixes a linking problem with the new SatSolverConstructor on Mac.
Dejan Jovanović [Thu, 29 Mar 2012 03:08:05 +0000 (03:08 +0000)]
bringing cryptominisat into the main branch
Dejan Jovanović [Wed, 28 Mar 2012 19:26:28 +0000 (19:26 +0000)]
enabling the --disable-arithmetic-propagation option in the arithmetic code (it wasn't used)
Morgan Deters [Wed, 28 Mar 2012 18:22:32 +0000 (18:22 +0000)]
fix swig-ignored interface name; hopefully fixes Debian package nightly builds
Tim King [Wed, 28 Mar 2012 17:16:27 +0000 (17:16 +0000)]
Update to the ArithRewriter to remove REWRITE_AGAIN_FULL and limit REWRITE_AGAIN calls.
Dejan Jovanović [Wed, 28 Mar 2012 15:44:30 +0000 (15:44 +0000)]
Some renaming and refactoring in SAT
Dejan Jovanović [Wed, 28 Mar 2012 15:28:38 +0000 (15:28 +0000)]
getting rid of a rewrite in uf sharing, speeds things up a bit
Liana Hadarean [Wed, 28 Mar 2012 02:47:50 +0000 (02:47 +0000)]
fixed faulty bv rewrite rule
Dejan Jovanović [Wed, 28 Mar 2012 01:28:08 +0000 (01:28 +0000)]
adding an extra cache check in the rewriter, speeds things a bit
http://church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=3828&category=&p=5&reference_id=3820
Dejan Jovanović [Mon, 26 Mar 2012 19:42:25 +0000 (19:42 +0000)]
Global registry of SAT solvers, where they are registered at compile time. The available SAT solvers can be seen with the --show-sat-solvers option.
Dejan Jovanović [Mon, 26 Mar 2012 14:22:38 +0000 (14:22 +0000)]
More cleaning up.
Dejan Jovanović [Mon, 26 Mar 2012 12:29:21 +0000 (12:29 +0000)]
more datail from the build failure
Dejan Jovanović [Mon, 26 Mar 2012 12:25:12 +0000 (12:25 +0000)]
with a small fix
Dejan Jovanović [Mon, 26 Mar 2012 12:23:54 +0000 (12:23 +0000)]
forgot to commit this one, fixing build errors
Dejan Jovanović [Sun, 25 Mar 2012 20:45:45 +0000 (20:45 +0000)]
moving minisat implementation into their respective directories (regular and bv)
Dejan Jovanović [Sun, 25 Mar 2012 20:12:07 +0000 (20:12 +0000)]
sat_module.h,cpp -> sat_solver.h,cpp (as intended)
Dejan Jovanović [Sun, 25 Mar 2012 20:04:43 +0000 (20:04 +0000)]
sat.h,cpp -> theory_proxy.h,cpp (this is what it defines)
Dejan Jovanović [Sat, 24 Mar 2012 21:18:37 +0000 (21:18 +0000)]
a cute script to make a video of development from the svn logs
Tim King [Fri, 23 Mar 2012 23:06:29 +0000 (23:06 +0000)]
Removed the variableRemovalEnabled option and d_removedRows from TheoryArith. This had been disabled for several months.
Dejan Jovanović [Thu, 22 Mar 2012 23:09:03 +0000 (23:09 +0000)]
* improving arithmetic getEqualityStatus
* some sharing improvements based on model
Liana Hadarean [Thu, 22 Mar 2012 21:45:31 +0000 (21:45 +0000)]
Merged updated version of the bitvector theory:
* added simplification rewrites
Dejan Jovanović [Thu, 22 Mar 2012 20:40:41 +0000 (20:40 +0000)]
some improvements to the sharing mechanism/interface
Morgan Deters [Wed, 21 Mar 2012 20:51:02 +0000 (20:51 +0000)]
Disable nonclausal simplification for QF_SAT benchmarks by default.
(Can be overridden with --simplification=batch, for example.)
Morgan Deters [Fri, 9 Mar 2012 21:10:17 +0000 (21:10 +0000)]
Some work on the dump infrastructure to support portfolio work.
Dump("foo") << FooCommand(...);
now "dumps" the textual representation of the command (in the current
output language) to a file, IF dumping is on at configure-time, AND the
"muzzle" feature is off, AND the "foo" flag is turned on for the dump
stream during this run.
If it's a portfolio build, the above will also store the command in a
CommandSequence, IF the "foo" flag is turned on for the dump stream
during this run. This is done even if the muzzle is on.
This commit also cleans up some code that used the dump feature (in arrays,
particularly).
Morgan Deters [Fri, 9 Mar 2012 21:00:51 +0000 (21:00 +0000)]
fix a "lost command" bug and associated memory leak in SMT-LIBv1 parser due to an out-of-place parenthesis
Morgan Deters [Fri, 9 Mar 2012 20:30:15 +0000 (20:30 +0000)]
Strengthen minisat assertion regarding t-propagations that was unintentionally allowing a theory to propagate p and ~p at the same time (and the conflict was undetected, leading to an incorrect answer). Credit to Clark for finding this.
Morgan Deters [Fri, 9 Mar 2012 18:26:07 +0000 (18:26 +0000)]
minor fixes: to "make dist" in build directories with language bindings enabled; and to makefile standards conformance
Morgan Deters [Thu, 8 Mar 2012 19:06:08 +0000 (19:06 +0000)]
fix "make dist"