summaryrefslogtreecommitdiff
path: root/src/theory
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory')
-rw-r--r--src/theory/datatypes/datatypes_rewriter.h4
-rwxr-xr-xsrc/theory/quantifiers/quant_equality_engine.cpp2
-rw-r--r--src/theory/theory_model.cpp5
3 files changed, 10 insertions, 1 deletions
diff --git a/src/theory/datatypes/datatypes_rewriter.h b/src/theory/datatypes/datatypes_rewriter.h
index ec9318e99..6fafbca42 100644
--- a/src/theory/datatypes/datatypes_rewriter.h
+++ b/src/theory/datatypes/datatypes_rewriter.h
@@ -279,10 +279,13 @@ public:
static inline void shutdown() {}
static bool checkClash( Node n1, Node n2, std::vector< Node >& rew ) {
+ Trace("datatypes-rewrite-debug") << "Check clash : " << n1 << " " << n2 << std::endl;
if( (n1.getKind() == kind::APPLY_CONSTRUCTOR && n2.getKind() == kind::APPLY_CONSTRUCTOR) ||
(n1.getKind() == kind::TUPLE && n2.getKind() == kind::TUPLE) ||
(n1.getKind() == kind::RECORD && n2.getKind() == kind::RECORD) ) {
+ //n1.getKind()==kind::APPLY_CONSTRUCTOR
if( n1.getOperator() != n2.getOperator() ) {
+ Trace("datatypes-rewrite-debug") << "Clash operators : " << n1 << " " << n2 << " " << n1.getOperator() << " " << n2.getOperator() << std::endl;
return true;
} else {
Assert( n1.getNumChildren() == n2.getNumChildren() );
@@ -294,6 +297,7 @@ public:
}
}else if( n1!=n2 ){
if( n1.isConst() && n2.isConst() ){
+ Trace("datatypes-rewrite-debug") << "Clash constants : " << n1 << " " << n2 << std::endl;
return true;
}else{
Node eq = NodeManager::currentNM()->mkNode( n1.getType().isBoolean() ? kind::IFF : kind::EQUAL, n1, n2 );
diff --git a/src/theory/quantifiers/quant_equality_engine.cpp b/src/theory/quantifiers/quant_equality_engine.cpp
index 8e683f660..54a931196 100755
--- a/src/theory/quantifiers/quant_equality_engine.cpp
+++ b/src/theory/quantifiers/quant_equality_engine.cpp
@@ -110,6 +110,8 @@ void QuantEqualityEngine::assertNode( Node n ) {
d_quant_red.push_back( n );
Trace("qee-debug") << "...add to redundant" << std::endl;
}else{
+ Trace("qee-debug") << "...assert" << std::endl;
+ Trace("qee-assert") << "QEE : assert : " << lit << ", pol = " << pol << ", kind = " << lit.getKind() << std::endl;
if( lit.getKind()==APPLY_UF ){
d_uequalityEngine.assertPredicate(lit, pol, n);
}else{
diff --git a/src/theory/theory_model.cpp b/src/theory/theory_model.cpp
index 05d0c896a..cf0fbcbfe 100644
--- a/src/theory/theory_model.cpp
+++ b/src/theory/theory_model.cpp
@@ -185,7 +185,10 @@ Node TheoryModel::getModelValue(TNode n, bool hasBoundVars) const
Debug("model-getvalue-debug") << " " << n << "[" << i << "] is " << ret << std::endl;
children.push_back(ret);
}
- ret = Rewriter::rewrite(NodeManager::currentNM()->mkNode(n.getKind(), children));
+ ret = NodeManager::currentNM()->mkNode(n.getKind(), children);
+ Debug("model-getvalue-debug") << "ret (pre-rewrite): " << ret << std::endl;
+ ret = Rewriter::rewrite(ret);
+ Debug("model-getvalue-debug") << "ret (post-rewrite): " << ret << std::endl;
if(ret.getKind() == kind::CARDINALITY_CONSTRAINT) {
ret = NodeManager::currentNM()->mkConst(getCardinality(ret[0].getType().toType()).getFiniteCardinality() <= ret[1].getConst<Rational>().getNumerator());
}
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback