This PR introduces new InferenceId for the BV theory and uses them instead of InferenceId::UNKNOWN.
lemmab << d_cnf->getNode(clause[i]);
}
Node lemma = lemmab;
- d_bv->d_im.lemma(lemma, InferenceId::UNKNOWN);
+ d_bv->d_im.lemma(lemma, InferenceId::BV_LAZY_LEMMA);
} else {
- d_bv->d_im.lemma(d_cnf->getNode(clause[0]), InferenceId::UNKNOWN);
+ d_bv->d_im.lemma(d_cnf->getNode(clause[0]), InferenceId::BV_LAZY_LEMMA);
}
}
}
NodeManager* nm = NodeManager::currentNM();
- d_im.conflict(nm->mkAnd(conflict), InferenceId::UNKNOWN);
+ d_im.conflict(nm->mkAnd(conflict), InferenceId::BV_BITBLAST_CONFLICT);
}
}
{
Debug("bitvector") << indent() << "BVSolverLazy::check(): conflict "
<< d_conflictNode << std::endl;
- d_im.conflict(d_conflictNode, InferenceId::UNKNOWN);
+ d_im.conflict(d_conflictNode, InferenceId::BV_LAZY_CONFLICT);
d_statistics.d_avgConflictSize.addEntry(d_conflictNode.getNumChildren());
d_conflictNode = Node::null();
}
{
if (assertions.size() == 1)
{
- d_im.conflict(assertions[0], InferenceId::UNKNOWN);
+ d_im.conflict(assertions[0], InferenceId::BV_LAZY_CONFLICT);
return;
}
Node conflict = utils::mkAnd(assertions);
- d_im.conflict(conflict, InferenceId::UNKNOWN);
+ d_im.conflict(conflict, InferenceId::BV_LAZY_CONFLICT);
return;
}
return;
void lemma(TNode node)
{
- d_im.lemma(node, InferenceId::UNKNOWN);
+ d_im.lemma(node, InferenceId::BV_LAZY_LEMMA);
d_lemmasAdded = true;
}
if (d_epg == nullptr)
{
- d_im.lemma(lemma, InferenceId::UNKNOWN);
+ d_im.lemma(lemma, InferenceId::BV_SIMPLE_BITBLAST_LEMMA);
}
else
{
TrustNode tlem = d_epg->mkTrustNode(lemma, PfRule::BV_BITBLAST, {}, {fact});
- d_im.trustedLemma(tlem, InferenceId::UNKNOWN);
+ d_im.trustedLemma(tlem, InferenceId::BV_SIMPLE_BITBLAST_LEMMA);
}
}
if (d_epg == nullptr)
{
- d_im.lemma(lemma, InferenceId::UNKNOWN);
+ d_im.lemma(lemma, InferenceId::BV_SIMPLE_LEMMA);
}
else
{
TrustNode tlem =
d_epg->mkTrustNode(lemma, PfRule::BV_EAGER_ATOM, {}, {fact});
- d_im.trustedLemma(tlem, InferenceId::UNKNOWN);
+ d_im.trustedLemma(tlem, InferenceId::BV_SIMPLE_LEMMA);
}
std::unordered_set<Node, NodeHashFunction> bv_atoms;
nm->mkNode(kind::LT, n, max));
Trace("bv-extf-lemma")
<< "BV extf lemma (range) : " << lem << std::endl;
- d_bv->d_im.lemma(lem, InferenceId::UNKNOWN);
+ d_bv->d_im.lemma(lem, InferenceId::BV_EXTF_LEMMA);
sentLemma = true;
}
}
// (bv2nat ((_ int2bv w) x)) == x + k*2^w for some k
Trace("bv-extf-lemma")
<< "BV extf lemma (collapse) : " << lem << std::endl;
- d_bv->d_im.lemma(lem, InferenceId::UNKNOWN);
+ d_bv->d_im.lemma(lem, InferenceId::BV_EXTF_COLLAPSE);
sentLemma = true;
}
}
BAG_DIFFERENCE_REMOVE,
BAG_DUPLICATE_REMOVAL,
+ BV_BITBLAST_CONFLICT,
+ BV_LAZY_CONFLICT,
+ BV_LAZY_LEMMA,
+ BV_SIMPLE_LEMMA,
+ BV_SIMPLE_BITBLAST_LEMMA,
+ BV_EXTF_LEMMA,
+ BV_EXTF_COLLAPSE,
+
// (= (C t1 ... tn) (C s1 .. sn)) => (= ti si)
DATATYPES_UNIF,
// ((_ is Ci) t) => (= t (Ci (sel_1 t) ... (sel_n t)))