summaryrefslogtreecommitdiff
path: root/src/theory/arrays
AgeCommit message (Collapse)Author
2012-08-01add isFinished() to type enumerators (so we don't rely on exception-throwing ↵Morgan Deters
after exhaustively enumerating finite types), also fix a standards-related FIXME in SmtEngine by clarifying the text of an error message
2012-08-01some fixes for Mac OSMorgan Deters
2012-07-31Moving some instantiation-related stuff from src/theory to ↵Morgan Deters
src/theory/quantifiers and src/theory/rewriterules. This unclutters the src/theory directory somewhat. The namespaces weren't changed, only the file locations.
2012-07-31Options merge. This commit:Morgan Deters
1. changes the way options are declared (see http://church.cims.nyu.edu/wiki/Options) 2. moves module-specific options enumerations (SimplificationMode, DecisionMode, ArithUnateLemmaMode, etc.) to their own header files, also they are no longer inside the Options:: class namespace. 3. includes many SMT-LIBv2 compliance fixes, especially to (set-option..) and (get-option..) The biggest syntactical changes (outside of adding new options) you'll notice are in accessing and setting options: * to access an option, write (e.g.) options::unconstrainedSimp() instead of Options::current()->unconstrainedSimp. * to determine if an option value was set by the user, check (e.g.) options::unconstrainedSimp.wasSetByUser(). * ensure that you have the option available (you have to #include the right module's options.h file, e.g. #include "theory/uf/options.h" for UF options) *** this point is important. If you access an option and it tells you the option doesn't exist, you aren't #including the appropriate options.h header file *** Note that if you want an option to be directly set (i.e., other than via command-line parsing or SmtEngine::setOption()), you need to mark the option :read-write in its options file (otherwise it's read-only), and you then write (e.g.) options::unconstrainedSimp.set(true). Adding new options is incredibly simple for primitive types (int, unsigned, bool, string, double). For option settings that you need to turn into a member of an enumerated type, you write a custom "handler" for the option---this is no additional work than it was before, and there are many examples to copy from (a good one is stringToSimplificationMode() in src/smt/options_handlers.h). Benefits of the new options system include: 1. changes to options declarations don't require a full-source rebuild (you only have to rebuild those sources that depend on the set of options that changed). 2. lots of sanity checks (that the same option isn't declared twice, that option values are in range for their type, that all options are documented properly, etc.) 3. consistency: Boolean-valued option --foo gets a --no-foo automatically, documentation is generated consistently, the option-parsing matches the documented option name, etc. 4. setting options programmatically via SmtEngine::setOption() is enabled, and behaves the same as command-line equivalents (including checking the value is in range, etc.) 5. the notion of options being "set by the user" is now primitive; you can use (e.g.) options::unconstrainedSimp.wasSetByUser() instead of having to use (and maintain) a separate Boolean option for the purpose I've taken lots of care not to break anything. Hopefully, I've succeeded in that.
2012-07-27Minor cleanup after today's commits:Morgan Deters
* change some uses of "std::cout" to "Message()" * change some files to use Unix newlines instead of DOS newlines * fix compiler warning
2012-07-27merging fmf-devel branch, includes refactored datatype theory, updates to ↵Andrew Reynolds
model.h/cpp to prepare for release, and major refactoring of quantifiers/finite model finding. Note that new datatype theory does not insist upon any interpretation for selectors applied to incorrect constructors and consequently some answers may differ with previous version
2012-07-27Merge quantifiers2-trunk:François Bobot
- new syntax for rewrite rules - better rewrite rules theory - remove the rewriting with rewrite rules during ppRewrite temporarily - theory can define their own candidate generator - define a general candidate generator (inefficient ask to every theory) - split inst_match between the pattern matching used for quantifiers (inst_match.*) and the one used for rewrite rules (rr_inst_match.*): - the pattern matching is less exhaustive for quantifiers, - the one for rewrite rules can use efficient-e-matching.
2012-07-14Type enumerator infrastructure and uninterpreted constant support. No ↵Morgan Deters
support yet for enumerating arrays, or for enumerating non-trivial datatypes.
2012-07-12merged fmf-devel branch, includes support for SMT2 command get-value and ↵Andrew Reynolds
(extended) SMT command get-model. added collectModelInfo and removed getValue from theory interface. merge also includes major updates to finite model finding module (from CASC), added fmf options, some updates to strong solver and quantifiers engine interface. The test recursion_breaker_black currently fails for me on production builds, Morgan is planning to look into this.
2012-06-18Reverting buggy rewriter codeClark Barrett
2012-06-18Fixed bug in rewriterClark Barrett
2012-06-18Fix for slow array rewrite and minor bug fix in arrays that popped up as a ↵Clark Barrett
result
2012-06-17Fix array bug causing incorrect answersClark Barrett
2012-06-16changing theoryOf in shared mode with arrays to move equalities to arraysDejan Jovanović
disabled in bitvectors due to non-stably infinite problems the option to enable it is --theoryof-mode=term
2012-06-14* removing rewriteEquality from the rewriterDejan Jovanović
* theories now get either an assertion from the SAT solver (normalized) or an (dis-)equality between two shared terms that is non-normalized
2012-06-13Fixed failing assertion when EqualityEngine is in conflictClark Barrett
2012-06-12bufixes and the bugsDejan Jovanović
* array now only propagates thropugh the equality engine * assertions in the equality rewriting to ensure eq -> { eq, T, F }
2012-06-12Fixed failing assertion in arrays for bug 347Clark Barrett
2012-06-11Merge from quantifiers2-trunkmerge branch.Morgan Deters
Adds TheoryQuantifiers and TheoryRewriteRules, QuantifiersEngine, and other infrastructure. Adds theory instantiators to many theories. Adds the UF strong solver.
2012-06-11Fix for array bug with decision heuristicClark Barrett
Also fixed one bv rewrite failure (more to come)
2012-06-10fixes for bug347Dejan Jovanović
it was an issue with constants being merged, which influenced explanations of disequalities. when constants are attempted to be merged, equality engine now enters conflict mode immediately
2012-06-07fixing the wrong results. arrays equality adaptor had a missing case when ↵Dejan Jovanović
propagating disequalities between shared terms.
2012-06-07fixing some bugs in propagation of disequalitiesDejan Jovanović
still doesnt fix the wrong answers thought :(
2012-06-06Changes to the combination mechanism, lots of details. Not done yet, there ↵Dejan Jovanović
are still the AUFBV wrong results, but it seems better. http://church.cims.nyu.edu/regress-results/compare_jobs.php?job_id=4382&reference_id=4359&p=5
2012-05-30Fixed problem with array queue growing too largeClark Barrett
2012-05-28Added some BV rewrites, fixed bugs in array theory, made ite simp work with BVClark Barrett
2012-05-27Committing the work on equality engine, I need to see how it does on the ↵Dejan Jovanović
regressions. New additions: * areDisequal(x, y) -> areDisequal(x, y, needProof): when asking for a disequality you must say needProof if you will ask for an explanation later. * propagation of shared dis-equalities (not yet complete, once case missing) * changes to the theories that use it, authors should check up on the changes
2012-05-25Checking in fix for bug 340 - somehow didn't get checked in earlierClark Barrett
2012-05-21Updating equality manager to handle tagged trigger terms. Notifications are ↵Dejan Jovanović
pushed out for relationships between terms tagged with the same tag. No performance impact.
2012-05-19- The array type rules were fixed to use isSubtypeOf.Tim King
- The type of (kind::DIVISION x y) is RealType. - A reference to util/pseudoboolean.i was removed. - rec5.cvc is disabled for now. The type of 2 is Integer which is not a subtype of [0..11].
2012-05-14Fixed assertion failures in array theoryClark Barrett
This fixes bugs 335 and 333.
2012-05-14fixing up preregistration againDejan Jovanović
2012-05-11Added some ITE rewrites,Clark Barrett
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()
2012-05-09* simplifying equality engine interfaceDejan Jovanović
* 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
2012-05-03Some cleanup starting off from trying to understand the sharing code. ↵Dejan Jovanović
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
2012-04-27Fixed warning in decision_engine.h, minor tweak to caregraph function inClark Barrett
arrays, fixed bug with equalities between constants in shared terms database
2012-04-20Updates to array theory - much more lazy about introduction of readsClark Barrett
Also disabled eager lemmas - slows down QF_AX but gets new examples in QF_AUFBV
2012-04-14Fixed bug in sharing with arrays of different typesClark Barrett
2012-04-11merge from arrays-clark branchMorgan Deters
2012-04-02- Merged in the branch cdlist-cleanup.Tim King
- 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.
2012-03-09Some work on the dump infrastructure to support portfolio work.Morgan Deters
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).
2012-03-02CDMap -> CDHashMapDejan Jovanović
CDSet -> CDHashSet
2012-02-25ppAsert -> ppAssertDejan Jovanović
2012-02-24Theory interface changes:Dejan Jovanović
solve -> ppAsert staticLearning -> ppStaticLearn preprocess -> ppRewrite SolveStatus -> PPAssertStatus (SOLVE_* -> PP_ASSERT_*) via Eclipse refactoring magic.
2012-02-20portfolio mergeMorgan Deters
2011-11-01Improvements to header installation on user machines. Internally, we canMorgan Deters
still write, for example: #include "expr/node.h" but public CVC4 headers, upon installation to /usr/include/cvc4 (or wherever), have such #includes rewritten automatically to: #include <cvc4/expr/node.h>
2011-10-17Sharing workDejan Jovanović
2011-10-05remove some debugging code that slowed down last night's regressionsMorgan Deters
2011-09-29Some base infrastructure for user push/pop; a few bugfixes to user push/pop ↵Morgan Deters
and model gen also. I also expect this commit to fix bug #273. No performance change is expected on regressions with this commit, see http://goedel.cims.nyu.edu/regress-results/compare_jobs.php?job_id=2871&reference_id=2863
2011-09-15additional stuff for sharing, Dejan Jovanović
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback