Assert(inst_constants.size() == dt_evals.size());
Assert(inst_constants.size() == q[0].getNumChildren());
- std::vector<Node> terms, eval_unfold_lemmas;
+ std::vector<Node> terms, values, eval_unfold_lemmas;
for (size_t i = 0, size = q[0].getNumChildren(); i < size; ++i)
{
Node dt_var = inst_constants[i];
Node value = model->getValue(dt_var);
Node t = datatypes::utils::sygusToBuiltin(value);
terms.push_back(t);
+ values.push_back(value);
std::vector<Node> exp;
syexplain.getExplanationForEquality(dt_var, value, exp);
if (mode == options::SygusInstMode::PRIORITY_INST)
{
- if (!inst->addInstantiation(q, terms, InferenceId::QUANTIFIERS_INST_SYQI))
+ if (!inst->addInstantiation(q,
+ terms,
+ InferenceId::QUANTIFIERS_INST_SYQI,
+ nm->mkNode(kind::SEXPR, values)))
{
sendEvalUnfoldLemmas(eval_unfold_lemmas);
}
{
if (!sendEvalUnfoldLemmas(eval_unfold_lemmas))
{
- inst->addInstantiation(q, terms, InferenceId::QUANTIFIERS_INST_SYQI);
+ inst->addInstantiation(q,
+ terms,
+ InferenceId::QUANTIFIERS_INST_SYQI,
+ nm->mkNode(kind::SEXPR, values));
}
}
else
{
Assert(mode == options::SygusInstMode::INTERLEAVE);
- inst->addInstantiation(q, terms, InferenceId::QUANTIFIERS_INST_SYQI);
+ inst->addInstantiation(q,
+ terms,
+ InferenceId::QUANTIFIERS_INST_SYQI,
+ nm->mkNode(kind::SEXPR, values));
sendEvalUnfoldLemmas(eval_unfold_lemmas);
}
}