} else {
// If it's there, we need to merge these two
Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << "): lookup exists, adding to queue" << std::endl;
+ Debug("equality") << d_name << "::eq::newApplicationNode(" << original << ", " << t1 << ", " << t2 << "): lookup = " << d_nodes[find->second] << std::endl;
enqueue(MergeCandidate(funId, find->second, MERGED_THROUGH_CONGRUENCE, TNode::null()));
}
// Mark the no-individual trigger
d_nodeIndividualTrigger.push_back(+null_set_id);
// Mark non-constant by default
- d_isConstant.push_back(node.isConst());
+ d_isConstant.push_back(false);
// Mark Boolean nodes
d_isBoolean.push_back(false);
// Mark the node as internal by default
result = newApplicationNode(t, result, getNodeId(t[i]), false);
}
d_isInternal[result] = false;
+ d_isConstant[result] = t.isConst();
} else {
// Otherwise we just create the new id
result = newNode(t);
d_isInternal[result] = false;
+ d_isConstant[result] = t.isConst();
}
if (t.getType().isBoolean()) {
continue;
}
+ Debug("equality::internal") << d_name << "::eq::propagate(): t1: " << (d_isInternal[t1classId] ? "internal" : "proper") << std::endl;
+ Debug("equality::internal") << d_name << "::eq::propagate(): t2: " << (d_isInternal[t2classId] ? "internal" : "proper") << std::endl;
+
// Get the nodes of the representatives
EqualityNode& node1 = getEqualityNode(t1classId);
EqualityNode& node2 = getEqualityNode(t2classId);