Clark Barrett [Mon, 11 Jul 2011 20:00:29 +0000 (20:00 +0000)]
Adding static_fact_manager
Clark Barrett [Mon, 11 Jul 2011 19:53:44 +0000 (19:53 +0000)]
Clark's work on array theory - can now solve all QF_AX problems
Morgan Deters [Mon, 11 Jul 2011 19:34:01 +0000 (19:34 +0000)]
fix some confusing debug output (bogus counter)
Morgan Deters [Mon, 11 Jul 2011 18:50:44 +0000 (18:50 +0000)]
mark the new minimized benchmark as unsat
Morgan Deters [Mon, 11 Jul 2011 18:48:16 +0000 (18:48 +0000)]
if running in QF_AX, equalities over terms of uninterpreted sort go to arrays, as well as pre-registration of free constants of uninterpreted sort, etc..
Morgan Deters [Mon, 11 Jul 2011 16:53:50 +0000 (16:53 +0000)]
minimized example
Morgan Deters [Mon, 11 Jul 2011 16:38:38 +0000 (16:38 +0000)]
array benchmarks
Dejan Jovanović [Mon, 11 Jul 2011 12:45:16 +0000 (12:45 +0000)]
adding disequality propagation
relevant comparison http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=2602&reference_id=2590&p=5
Morgan Deters [Mon, 11 Jul 2011 03:33:14 +0000 (03:33 +0000)]
merge from symmetry branch
Clark Barrett [Sun, 10 Jul 2011 19:41:04 +0000 (19:41 +0000)]
Reverting mistaken check-in
Dejan Jovanović [Sun, 10 Jul 2011 17:23:29 +0000 (17:23 +0000)]
changing the sat solver remove clauses constants
with these we get closer to yices on uf and it seems better on lra
vs yices uf http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=2590&category=&p=5&reference_id=1471
vs trunk on lra http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=2591&category=&p=5&reference_id=2576
Clark Barrett [Sun, 10 Jul 2011 16:57:38 +0000 (16:57 +0000)]
Fixed bug in default solve - wasn't returning when it was supposed to
Dejan Jovanović [Sun, 10 Jul 2011 12:48:42 +0000 (12:48 +0000)]
another typo
Dejan Jovanović [Sun, 10 Jul 2011 12:32:13 +0000 (12:32 +0000)]
yet another uf bug fix, hopefully the last
Dejan Jovanović [Sun, 10 Jul 2011 12:05:47 +0000 (12:05 +0000)]
another bugfix for uf
Dejan Jovanović [Sat, 9 Jul 2011 05:40:21 +0000 (05:40 +0000)]
some immediate bug fixes
Morgan Deters [Sat, 9 Jul 2011 03:11:58 +0000 (03:11 +0000)]
fix submission makefile
Morgan Deters [Sat, 9 Jul 2011 02:35:19 +0000 (02:35 +0000)]
minor fixups
Dejan Jovanović [Sat, 9 Jul 2011 01:38:48 +0000 (01:38 +0000)]
surprize surprize
Dejan Jovanović [Thu, 7 Jul 2011 14:03:14 +0000 (14:03 +0000)]
removing duplicate clauses in ite cnf conversion
Morgan Deters [Thu, 7 Jul 2011 05:31:13 +0000 (05:31 +0000)]
cudd-building prefs with --with-cudd / --without-cudd
Dejan Jovanović [Wed, 6 Jul 2011 23:42:04 +0000 (23:42 +0000)]
Fixing two bugs:
1) arithmetic should check for subterms when solving equations, for instance x = if b then x + 1 else x -1 is not a valid substitution
2) a memory problem in minisat - explanations are constructed during conflict analysis, so the clause database might resize and relocate, which invalidates any references to clauses
Dejan Jovanović [Tue, 5 Jul 2011 17:56:45 +0000 (17:56 +0000)]
missing test case
Dejan Jovanović [Tue, 5 Jul 2011 16:21:50 +0000 (16:21 +0000)]
updated preprocessing and rewriting input equalities into inequalities for LRA
Morgan Deters [Thu, 30 Jun 2011 21:03:52 +0000 (21:03 +0000)]
Allow (- x) for unary minus in SMT-LIBv1, in addition to the standard (~ x),
when --strict-parsing is off (which it is by default). The danoint benchmarks
have such monsters.
Tim King [Thu, 30 Jun 2011 19:06:57 +0000 (19:06 +0000)]
Changed the defaults for arithPivotThreshold and arithPropagateMaxLength to 16. Enabled arithmetic propagation and variable removal by default. Changed the command line arguments for both propagation and variable removal allow for disabling these.
Tim King [Thu, 30 Jun 2011 18:40:29 +0000 (18:40 +0000)]
Merging the playground branch upto r1957 into trunk.
Morgan Deters [Thu, 30 Jun 2011 06:06:30 +0000 (06:06 +0000)]
only use theory registration if (1) a theory requests it, or (2) if there's more than one "real" theory (not BUILTIN or BOOL) active
Morgan Deters [Thu, 30 Jun 2011 03:56:58 +0000 (03:56 +0000)]
some things I had laying around in a directory but never got committed; minor fix-ups to documentation and some node stuff
Tim King [Wed, 29 Jun 2011 19:32:04 +0000 (19:32 +0000)]
Fixed spelling mistake and documentation for --enable-variable-removal.
Morgan Deters [Sat, 18 Jun 2011 02:44:41 +0000 (02:44 +0000)]
Some fixes inspired by Fedora 15:
* compilation fixes for GCC 4.6.x
+ ptrdiff_t is now in std::
* fix some make rules that are ok in Make 3.81 but broke in Make 3.82
* look for cxxtestgen.py as well as cxxtestgen.pl, and look for cxxtest headers in /usr/include
Morgan Deters [Mon, 6 Jun 2011 22:12:21 +0000 (22:12 +0000)]
compilation fix for x86 (from previous commit)
Morgan Deters [Mon, 6 Jun 2011 21:37:23 +0000 (21:37 +0000)]
Fix for Mac OS breakage (x86 didn't crash, but probably would, eventually, on some problems---valgrind gave many complaints): the problem was that calloc() (in the Backtracker) wasn't allocating enough space for the type located at the resulting address. Resolves bug #263.
Also, some debugging improvements.
Andrew Reynolds [Fri, 3 Jun 2011 19:56:12 +0000 (19:56 +0000)]
fixed various bugs related to ambiguous parametric datatype constructors, parametric datatype versions of paper benchmarks are now working
Morgan Deters [Fri, 3 Jun 2011 05:30:54 +0000 (05:30 +0000)]
datatypes work
Morgan Deters [Thu, 2 Jun 2011 22:17:56 +0000 (22:17 +0000)]
minor fix to build system for system tests
Andrew Reynolds [Thu, 2 Jun 2011 15:23:16 +0000 (15:23 +0000)]
added (temporary) support for ensuring that all ambiguously typed constructor nodes created internally are given a type ascription
Morgan Deters [Wed, 1 Jun 2011 01:13:21 +0000 (01:13 +0000)]
minor fix, and better output for type errors
Morgan Deters [Wed, 1 Jun 2011 00:49:37 +0000 (00:49 +0000)]
type ascriptions (casts) for parameterized datatypes, e.g. "nil :: list[INT]
Tim King [Tue, 31 May 2011 01:06:16 +0000 (01:06 +0000)]
This commit contains the code for allowing arbitrary equalities in the theory of arithmetic.
* This code has been partially tested. (My testing situation is currently not so great.) The code for testing not preregistering equalities can be compile time enabled by setting the boolean turnOffEqualityPreRegister. Don't be shocked by slowdowns or failures. This does pass make regress as well as a fresh checkout does. (The Mac version has issues.)
* I need to disable the permanent row removal heuristic by default. We need to discuss why this needs to happen. We should probably detect pure QF_LRA/QF_RDL problems and enable this when this can safely be done.
* I have disabled the arithmetic rewrite equality flag. This code needs to be added to the parser.
* For all of the above changes, I have annotated the code with the key word BREADCRUMB.
* I have renamed ArithUnatePropagator to ArithAtomDatabase.
Morgan Deters [Sat, 28 May 2011 06:44:07 +0000 (06:44 +0000)]
fix unit test linking issue
Morgan Deters [Sat, 28 May 2011 05:51:01 +0000 (05:51 +0000)]
include subversion information used for each build in the --show-config output and as a banner in --interactive mode; intended to resolve confusion in cases where you don't know where a CVC4 binary came from
Morgan Deters [Thu, 26 May 2011 05:04:34 +0000 (05:04 +0000)]
apply arithmetic static learner's miplibtrick in a consistent order (for easier replication of experiment)
Morgan Deters [Mon, 23 May 2011 23:15:25 +0000 (23:15 +0000)]
fixes for "make dist" and "make doc", minor cleanups
Morgan Deters [Mon, 23 May 2011 21:58:12 +0000 (21:58 +0000)]
Merge from arrays2 branch.
Morgan Deters [Sat, 14 May 2011 19:51:41 +0000 (19:51 +0000)]
fix production-build compiler warning
Morgan Deters [Sat, 14 May 2011 03:38:18 +0000 (03:38 +0000)]
re-add a removed Datatype constructor that was causing a unit test failure, so nightlies go through tonight
Morgan Deters [Sat, 14 May 2011 00:17:20 +0000 (00:17 +0000)]
reverting node manager change from 1881; also part of parameterized datatypes review
Morgan Deters [Sat, 14 May 2011 00:15:43 +0000 (00:15 +0000)]
add AscriptionType stuff to support nullary parameterized datatypes; also, review of Andy's earlier commit, with some minor code clean-up and documentation
Andrew Reynolds [Fri, 13 May 2011 22:02:52 +0000 (22:02 +0000)]
added support for parametric datatypes, updated cvc parser to handle parametric datatypes, type ascriptions are not implemented yet
Morgan Deters [Fri, 13 May 2011 20:42:57 +0000 (20:42 +0000)]
* fix for Mac OS (includes some ThreadLocal stuff copied in from portfolio
branch)
* add Theory::isSharedTermFact() -- it currently always returns false,
pending theory combination work
* Add "unknown" cardinalities to Cardinality class
* Fix run_regression script to handle CRLF line terminators on Macs
(where sed is non-GNU)
* Convert CRLF line terminators in datatypes regressions to LF
Tim King [Fri, 6 May 2011 21:23:38 +0000 (21:23 +0000)]
Deleting dead code.
Andrew Reynolds [Fri, 6 May 2011 20:38:29 +0000 (20:38 +0000)]
added 10 benchmarks to regress/regress0/datatypes from paper
Andrew Reynolds [Fri, 6 May 2011 20:17:57 +0000 (20:17 +0000)]
significant revisions/improvements to code for theory datatypes solver
Morgan Deters [Thu, 5 May 2011 22:23:50 +0000 (22:23 +0000)]
Merge from nonclausal-simplification-v2 branch:
* Preprocessing-time, non-clausal, Boolean simplification round to
support "quasi-non-linear rewrites" as discussed at last few meetings.
* --simplification=none is the default for now, but we'll probably
change that to --simplification=incremental. --simplification=batch
is also a possibility. See --simplification=help for details.
* RecursionBreaker<T> now uses a hash set for the seen trail.
* Fixes to TLS stuff to support that.
* Fixes to theory and SmtEngine documentation.
* Fixes to stream indentation.
* Other miscellaneous stuff.
Morgan Deters [Thu, 5 May 2011 21:34:52 +0000 (21:34 +0000)]
luby sequence generator; can use to plot MiniSat's restart sequence
Morgan Deters [Wed, 4 May 2011 00:21:34 +0000 (00:21 +0000)]
Stronger support for zero-performance-penalty output, and fixes and
simplifications for the "muzzled" (i.e. competition) design, which had
been broken. Addition of some new unit test bits to ensure that
nothing is ever called in muzzled builds, e.g. things like
Warning() << expensiveFunction();
Also, fix some compiler warnings.
Morgan Deters [Tue, 3 May 2011 04:33:09 +0000 (04:33 +0000)]
output fixes for performance
Andrew Reynolds [Mon, 2 May 2011 21:40:06 +0000 (21:40 +0000)]
minor updates to exp manager, fixed 32bit vs 64bit issues in transitive closure module, theory datatypes now uses transitive closure for cycle detection, bug 261 fixed
Morgan Deters [Mon, 2 May 2011 21:22:13 +0000 (21:22 +0000)]
fix for configure
Morgan Deters [Mon, 2 May 2011 20:19:55 +0000 (20:19 +0000)]
adding some previously-failing "bug" test cases for bitvectors
Dejan Jovanović [Mon, 2 May 2011 19:46:06 +0000 (19:46 +0000)]
updating bv regressions
Dejan Jovanović [Mon, 2 May 2011 19:45:08 +0000 (19:45 +0000)]
parser fixes for bug 243
Dejan Jovanović [Mon, 2 May 2011 19:09:11 +0000 (19:09 +0000)]
updates for bitvectors
Morgan Deters [Mon, 2 May 2011 16:06:19 +0000 (16:06 +0000)]
more minor fixes related to last few commits
Morgan Deters [Mon, 2 May 2011 15:00:42 +0000 (15:00 +0000)]
another small fix
Morgan Deters [Mon, 2 May 2011 14:55:24 +0000 (14:55 +0000)]
fix broken build; sorry, all!
Morgan Deters [Mon, 2 May 2011 05:31:00 +0000 (05:31 +0000)]
fix a performance issue from last commit
Morgan Deters [Mon, 2 May 2011 05:04:36 +0000 (05:04 +0000)]
Minor fixes to various parts of CVC4, including the removal of the uintptr_t constructors for Type and Expr (which existed due to ANTLR limitations). These issues are now handled (as a hack, due to said limitations) in the parser rather than the CVC4 core.
Morgan Deters [Sun, 1 May 2011 22:32:32 +0000 (22:32 +0000)]
minor fixes, plus experimental readline support in InteractiveShell
Andrew Reynolds [Fri, 29 Apr 2011 22:03:59 +0000 (22:03 +0000)]
refactoring to datatypes theory, added working prototype for proof/explanation manager
Andrew Reynolds [Thu, 28 Apr 2011 23:32:16 +0000 (23:32 +0000)]
more fixes/improvements to datatypes theory and transitive closure
Andrew Reynolds [Wed, 27 Apr 2011 00:49:02 +0000 (00:49 +0000)]
cleaned up some of the hacks in the datatypes theory solver, working on using Transitive Closure to detect cycles, added rewrite rule for disinguished ground terms
Morgan Deters [Mon, 25 Apr 2011 23:44:00 +0000 (23:44 +0000)]
Monday tasks:
* new "well-foundedness" type property (like cardinality) specified in
Theory kinds files; specifies well-foundedness and a ground term
* well-foundedness / finite checks in Datatypes now superseded by type
system isFinite(), isWellFounded(), mkGroundTerm().
* new "RecursionBreaker" template class, a convenient class that keeps
a "seen" trail without you having to pass it around (which is
difficult in cases of mutual recursion) of the idea of passing
around a "seen" trail
Morgan Deters [Mon, 25 Apr 2011 07:59:57 +0000 (07:59 +0000)]
small unit test fix; was broken only in non-assertion, non-CLN builds
Morgan Deters [Mon, 25 Apr 2011 06:56:14 +0000 (06:56 +0000)]
Weekend work. The main points:
* Type::getCardinality() returns the cardinality for for all types.
Theories give a cardinality in the their kinds file. For
cardinalities that depend on a type argument, a "cardinality
computer" function is named in the kinds file, which takes a
TypeNode and returns its cardinality.
* There's a bitmap for the set of "active theories" in the
TheoryEngine. Theories become "active" when a term that is owned by
them, or whose type is owned by them, is pre-registered (run CVC4
with --verbose to see theory activation). Non-active theories don't
get any calls for check() or propagate() or anything, and if we're
running in single-theory mode, the shared term manager doesn't have
to get involved. This is really important for get() performance
(which can only skimp on walking the entire sub-DAG only if the
theory doesn't require it AND the shared term manager doesn't
require it).
* TheoryEngine now does not call presolve(), registerTerm(),
notifyRestart(), etc., on a Theory if that theory doesn't declare
that property in its kinds file. To avoid coding errors,
mktheorytraits greps the theory header and gives warnings if:
+ the theory appears to declare one of the functions (check,
propagate, etc.) that isn't listed among its kinds file properties
(but probably should be)
+ the theory appears NOT to declare one of the functions listed in
its kinds file properties
* some bounded token stream work
Morgan Deters [Sat, 23 Apr 2011 05:36:09 +0000 (05:36 +0000)]
fix for parser/tests for ANTLR 3.2 (it was working fine on 3.3)
Morgan Deters [Sat, 23 Apr 2011 05:15:56 +0000 (05:15 +0000)]
* reviewed BooleanSimplification, added documentation & unit test
* work around a lexer ambiguity in CVC grammar
* add support for tracing antlr parser/lexer
* add parsing support for more language features
* initial parameterized types parsing work to support Andy's work
Morgan Deters [Sat, 23 Apr 2011 04:00:02 +0000 (04:00 +0000)]
make run_regression script robust to DOS newlines :(
Andrew Reynolds [Fri, 22 Apr 2011 22:24:29 +0000 (22:24 +0000)]
added fixes for datatype theory solver to account for rewriting before finite/well-founded check.
Morgan Deters [Fri, 22 Apr 2011 22:02:46 +0000 (22:02 +0000)]
fix to last commit
Morgan Deters [Fri, 22 Apr 2011 22:01:36 +0000 (22:01 +0000)]
Fixing SmtEngine::getValue() by adding a NodeManagerScope (thanks Tim for finding this)
Morgan Deters [Wed, 20 Apr 2011 11:19:50 +0000 (11:19 +0000)]
numerous bugfixes
Morgan Deters [Wed, 20 Apr 2011 08:07:07 +0000 (08:07 +0000)]
incorrect usage of C++ std::string caused a test to fail
Morgan Deters [Wed, 20 Apr 2011 07:57:28 +0000 (07:57 +0000)]
Minor mixed-bag commit. Expected performance impact negligible.
* Fixed hole in arrays typechecking.
* Fixed "make dist".
* Better ouroborous test, and some printer fixes.
* Continued cleanup in CVC parser, removed some warnings.
* Better output.
Morgan Deters [Wed, 20 Apr 2011 05:37:38 +0000 (05:37 +0000)]
Tuesday end-of-day commit.
Expected performance impact outside of datatypes/CVC parser is
negligible.
* CVC language LAMBDA, functional LET, type LET, precedence fixes,
bitvectors, and arrays, with partial parsing support also for
quantifiers, tuples, subranges, subtypes, and records
* support for complex recursive DATATYPE selectors, e.g.
tree = node(children:ARRAY INT OF tree) | leaf(data:INT)
these are complicated because they have to be left unresolved
at parse time and dealt with in a second pass.
* bugfix for Exprs/Types that occurred when setting them to null
(not Nodes/TypeNodes, just Exprs/Types).
* Cleanup/code review items
Tim King [Mon, 18 Apr 2011 20:19:29 +0000 (20:19 +0000)]
Removing dead code that came in on commit r1740.
Morgan Deters [Mon, 18 Apr 2011 19:08:11 +0000 (19:08 +0000)]
more work on CVC language
Morgan Deters [Mon, 18 Apr 2011 18:05:39 +0000 (18:05 +0000)]
mostly CVC presentation language parsing and printing
Tim King [Mon, 18 Apr 2011 16:48:52 +0000 (16:48 +0000)]
This commit merges the branch arithmetic/propagation-again into trunk.
- This adds code for bounds refinement, and conflict weakening.
- This adds util/boolean_simplification.h.
- This adds a propagation manager to theory of arithmetic.
- Propagation is disabled by default.
- Propagation can be enabled by the command line flag "--enable-arithmetic-propagation"
- Propagation interacts *heavily* with rewriting equalities, and will work best if the command line flag "--rewrite-arithmetic-equalities" is enabled.
Morgan Deters [Mon, 18 Apr 2011 08:59:09 +0000 (08:59 +0000)]
Partial merge from datatypes-merge branch:
1. Defines a new type "DatatypeType", a type-constant that holds a Datatype, describing an inductive data type.
2. CVC language parser supports datatypes.
3. CVC language printer now functional.
4. Minor other cleanups.
No performance impact is expected outside of datatypes. I'm verifying that that is the case with a cluster job this morning.
Christopher L. Conway [Mon, 18 Apr 2011 03:10:55 +0000 (03:10 +0000)]
Fixing output for EOF token in parser errors
Morgan Deters [Sat, 16 Apr 2011 00:12:01 +0000 (00:12 +0000)]
also a fix for a system test related to ParserBuilder
Morgan Deters [Sat, 16 Apr 2011 00:10:57 +0000 (00:10 +0000)]
unit test fixes for new NodeManager constructor (related to previous two trunk commits)
Morgan Deters [Fri, 15 Apr 2011 22:17:22 +0000 (22:17 +0000)]
parser/driver fixes for last commit
Morgan Deters [Fri, 15 Apr 2011 22:11:11 +0000 (22:11 +0000)]
partial merge from portfolio branch, adding conversions (library-internal-only of course) between Exprs and Nodes, Types and TypeNodes, ExprManagers and NodeManagers.
Dejan Jovanović [Thu, 14 Apr 2011 20:57:28 +0000 (20:57 +0000)]
reverting back the minisat code and adding a simpler one that shouldn't change the search
Morgan Deters [Thu, 14 Apr 2011 20:41:19 +0000 (20:41 +0000)]
Three things:
1. Infrastructure for unit T-conflicts added to SAT proxy
(and also the theory output channel documentation);
previously theories could not communicate unit T-conflicts
with the SAT layer because that layer had an implicit
assumption (not asserted) that the conflict nodes were an AND.
2. UF now pre-rewrites trivial equalities to "true". These could
conceivably occur in artificial benchmarks in this form:
(let (?x BIG-HUGE-TERM) ... (= ?x ?x) ... )
3. The SMT-LIBv2 printer now properly prints Bool constants.
Dejan Jovanović [Thu, 14 Apr 2011 19:11:42 +0000 (19:11 +0000)]
fixing an uninitialized literal variable
Dejan Jovanović [Wed, 13 Apr 2011 21:15:48 +0000 (21:15 +0000)]
adding support for unit conflicts in minisat...