diff options
author | Morgan Deters <mdeters@gmail.com> | 2011-07-11 03:33:14 +0000 |
---|---|---|
committer | Morgan Deters <mdeters@gmail.com> | 2011-07-11 03:33:14 +0000 |
commit | 25e9c72dd689d3b621b901220794c652a3ba589a (patch) | |
tree | 58b14dd3818f3e7a8ca3311a0457716e7753a95e /src/theory/uf/theory_uf.cpp | |
parent | 587520ce888b88294fb9e4ca476e2425d8bf026e (diff) |
merge from symmetry branch
Diffstat (limited to 'src/theory/uf/theory_uf.cpp')
-rw-r--r-- | src/theory/uf/theory_uf.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/theory/uf/theory_uf.cpp b/src/theory/uf/theory_uf.cpp index 9903acc57..0776ecf0d 100644 --- a/src/theory/uf/theory_uf.cpp +++ b/src/theory/uf/theory_uf.cpp @@ -227,6 +227,22 @@ void TheoryUF::explain(TNode literal) { d_out->explanation(mkAnd(assumptions)); } +void TheoryUF::presolve() { + // TimerStat::CodeTimer codeTimer(d_presolveTimer); + + Debug("uf") << "uf: begin presolve()" << endl; + if(Options::current()->ufSymmetryBreaker) { + vector<Node> newClauses; + d_symb.apply(newClauses); + for(vector<Node>::const_iterator i = newClauses.begin(); + i != newClauses.end(); + ++i) { + d_out->lemma(*i); + } + } + Debug("uf") << "uf: end presolve()" << endl; +} + void TheoryUF::staticLearning(TNode n, NodeBuilder<>& learned) { //TimerStat::CodeTimer codeTimer(d_staticLearningTimer); @@ -334,4 +350,8 @@ void TheoryUF::staticLearning(TNode n, NodeBuilder<>& learned) { } } } + + if(Options::current()->ufSymmetryBreaker) { + d_symb.assertFormula(n); + } } |