summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAina Niemetz <aina.niemetz@gmail.com>2018-07-04 03:05:13 -0700
committerGitHub <noreply@github.com>2018-07-04 03:05:13 -0700
commit367fa44818a0ad4e602db2b29a6020e648c2c407 (patch)
tree24be60e0bd7b89cf6e65b65ff720427ecc67aac3
parent462dcdfa43de932c4108afb1fbfc88f8db0c5607 (diff)
parent9eb2c735f8c34d4980b37e337e711a629f997834 (diff)
Merge branch 'master' into rm_cdvectorrm_cdvector
-rw-r--r--src/api/cvc4cpp.cpp69
-rw-r--r--src/theory/quantifiers/fun_def_process.cpp36
2 files changed, 91 insertions, 14 deletions
diff --git a/src/api/cvc4cpp.cpp b/src/api/cvc4cpp.cpp
index 80af4199b..703c298d3 100644
--- a/src/api/cvc4cpp.cpp
+++ b/src/api/cvc4cpp.cpp
@@ -1023,5 +1023,74 @@ size_t TermHashFunction::operator()(const Term& t) const
return ExprHashFunction()(*t.d_expr);
}
+/* -------------------------------------------------------------------------- */
+/* OpTerm */
+/* -------------------------------------------------------------------------- */
+
+OpTerm::OpTerm() : d_expr(new CVC4::Expr())
+{
+}
+
+OpTerm::OpTerm(const CVC4::Expr& e) : d_expr(new CVC4::Expr(e))
+{
+}
+
+OpTerm::~OpTerm()
+{
+}
+
+OpTerm& OpTerm::operator=(const OpTerm& t)
+{
+ // CHECK: expr managers must match
+ if (this != &t)
+ {
+ *d_expr = *t.d_expr;
+ }
+ return *this;
+}
+
+bool OpTerm::operator==(const OpTerm& t) const
+{
+ // CHECK: expr managers must match
+ return *d_expr == *t.d_expr;
+}
+
+bool OpTerm::operator!=(const OpTerm& t) const
+{
+ // CHECK: expr managers must match
+ return *d_expr != *t.d_expr;
+}
+
+Kind OpTerm::getKind() const
+{
+ return intToExtKind(d_expr->getKind());
+}
+
+Sort OpTerm::getSort() const
+{
+ return Sort(d_expr->getType());
+}
+
+bool OpTerm::isNull() const
+{
+ return d_expr->isNull();
+}
+
+std::string OpTerm::toString() const
+{
+ return d_expr->toString();
+}
+
+std::ostream& operator<< (std::ostream& out, const OpTerm& t)
+{
+ out << t.toString();
+ return out;
+}
+
+size_t OpTermHashFunction::operator()(const OpTerm& t) const
+{
+ return ExprHashFunction()(*t.d_expr);
+}
+
} // namespace api
} // namespace CVC4
diff --git a/src/theory/quantifiers/fun_def_process.cpp b/src/theory/quantifiers/fun_def_process.cpp
index fcd0838ef..c40a7c4d9 100644
--- a/src/theory/quantifiers/fun_def_process.cpp
+++ b/src/theory/quantifiers/fun_def_process.cpp
@@ -98,20 +98,28 @@ void FunDefFmf::simplify( std::vector< Node >& assertions ) {
std::map< int, std::map< Node, Node > > visited_cons;
for( unsigned i=0; i<assertions.size(); i++ ){
bool is_fd = std::find( fd_assertions.begin(), fd_assertions.end(), i )!=fd_assertions.end();
- //constant boolean function definitions do not add domain constraints
- if( !is_fd || ( is_fd && assertions[i][1].getKind()==EQUAL ) ){
- std::vector< Node > constraints;
- Trace("fmf-fun-def-rewrite") << "Rewriting " << assertions[i] << ", is function definition = " << is_fd << std::endl;
- Node n = simplifyFormula( assertions[i], true, true, constraints, is_fd ? subs_head[i] : Node::null(), is_fd, visited, visited_cons );
- Assert( constraints.empty() );
- if( n!=assertions[i] ){
- n = Rewriter::rewrite( n );
- Trace("fmf-fun-def-rewrite") << "FMF fun def : rewrite " << assertions[i] << std::endl;
- Trace("fmf-fun-def-rewrite") << " to " << std::endl;
- Trace("fmf-fun-def-rewrite") << " " << n << std::endl;
- PROOF( ProofManager::currentPM()->addDependence(n, assertions[i]); );
- assertions[i] = n;
- }
+ std::vector<Node> constraints;
+ Trace("fmf-fun-def-rewrite") << "Rewriting " << assertions[i]
+ << ", is function definition = " << is_fd
+ << std::endl;
+ Node n = simplifyFormula(assertions[i],
+ true,
+ true,
+ constraints,
+ is_fd ? subs_head[i] : Node::null(),
+ is_fd,
+ visited,
+ visited_cons);
+ Assert(constraints.empty());
+ if (n != assertions[i])
+ {
+ n = Rewriter::rewrite(n);
+ Trace("fmf-fun-def-rewrite") << "FMF fun def : rewrite " << assertions[i]
+ << std::endl;
+ Trace("fmf-fun-def-rewrite") << " to " << std::endl;
+ Trace("fmf-fun-def-rewrite") << " " << n << std::endl;
+ PROOF(ProofManager::currentPM()->addDependence(n, assertions[i]););
+ assertions[i] = n;
}
}
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback