}
// build constant application (f c1 ... cn) and equality (= (f c1 ... cn) c)
Kind k = d_node[0].getKind();
+ std::vector<Node> cargs;
+ cargs.push_back(ProofRuleChecker::mkKindNode(k));
+ if (d_node[0].getMetaKind() == kind::metakind::PARAMETERIZED)
+ {
+ constChildren.insert(constChildren.begin(), d_node[0].getOperator());
+ cargs.push_back(d_node[0].getOperator());
+ }
Node constApp = NodeManager::currentNM()->mkNode(k, constChildren);
Node constEquality = constApp.eqNode(d_node[1]);
Trace("eqproof-conv") << "EqProof::addToProof: adding "
Trace("eqproof-conv") << "EqProof::addToProof: adding " << PfRule::CONG
<< " step for " << congConclusion << " from "
<< subChildren << "\n";
- p->addStep(congConclusion,
- PfRule::CONG,
- {subChildren},
- {ProofRuleChecker::mkKindNode(k)},
- true);
+ p->addStep(congConclusion, PfRule::CONG, {subChildren}, cargs, true);
Trace("eqproof-conv") << "EqProof::addToProof: adding " << PfRule::TRANS
<< " step for original conclusion " << d_node << "\n";
std::vector<Node> transitivityChildren{congConclusion, constEquality};