diff options
author | Clark Barrett <barrett@cs.nyu.edu> | 2011-07-11 19:53:44 +0000 |
---|---|---|
committer | Clark Barrett <barrett@cs.nyu.edu> | 2011-07-11 19:53:44 +0000 |
commit | f65c5c4cbc59527dc0c9c57283a373ef501792c5 (patch) | |
tree | 4a5b270413a72260d404c431a27c2f01209fae21 /src/theory/arrays/theory_arrays.h | |
parent | 7515ee9cda0925721c4fa7e1ba9ef3b25dc5e0d0 (diff) |
Clark's work on array theory - can now solve all QF_AX problems
Diffstat (limited to 'src/theory/arrays/theory_arrays.h')
-rw-r--r-- | src/theory/arrays/theory_arrays.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/theory/arrays/theory_arrays.h b/src/theory/arrays/theory_arrays.h index bc1f670ba..f4cccfec5 100644 --- a/src/theory/arrays/theory_arrays.h +++ b/src/theory/arrays/theory_arrays.h @@ -29,6 +29,7 @@ #include "util/ntuple.h" #include "util/stats.h" #include "util/backtrackable.h" +#include "theory/arrays/static_fact_manager.h" #include <iostream> #include <map> @@ -114,6 +115,18 @@ private: (kind::SELECT)> d_cc; /** + * (Temporary) fact manager for preprocessing - eventually handle this with + * something more standard (like congruence closure module) + */ + StaticFactManager d_staticFactManager; + + /** + * Cache for proprocessing of atoms. + */ + typedef std::hash_map<Node, Node, NodeHashFunction> NodeMap; + NodeMap d_ppCache; + + /** * Union find for storing the equalities. */ @@ -347,6 +360,8 @@ private: bool d_donePreregister; + Node preprocessTerm(TNode term); + Node recursivePreprocessTerm(TNode term); public: TheoryArrays(context::Context* c, OutputChannel& out, Valuation valuation); @@ -464,6 +479,8 @@ public: void explain(TNode n); Node getValue(TNode n); + SolveStatus solve(TNode in, SubstitutionMap& outSubstitutions); + Node preprocess(TNode atom); void shutdown() { } std::string identify() const { return std::string("TheoryArrays"); } |