case InferenceId::SEP_LABEL_INTRO: return "SEP_LABEL_INTRO";
case InferenceId::SEP_LABEL_DEF: return "SEP_LABEL_DEF";
case InferenceId::SEP_EMP: return "SEP_EMP";
- case InferenceId::SEP_POS_PTO_SINGLETON: return "SEP_POS_PTO_SINGLETON";
case InferenceId::SEP_POS_REDUCTION: return "SEP_POS_REDUCTION";
case InferenceId::SEP_NEG_REDUCTION: return "SEP_NEG_REDUCTION";
case InferenceId::SEP_REFINEMENT: return "SEP_REFINEMENT";
}
if (!slbl.isNull() && satom.getKind() == SEP_PTO)
{
- if (polarity)
- {
- NodeManager* nm = NodeManager::currentNM();
- // (SEP_LABEL (sep.pto x y) L) => L = (set.singleton x)
- Node s = nm->mkNode(SET_SINGLETON, satom[0]);
- Node eq = slbl.eqNode(s);
- TrustNode trn =
- d_im.mkLemmaExp(eq, PfRule::THEORY_INFERENCE, {fact}, {fact}, {eq});
- d_im.addPendingLemma(trn.getNode(),
- InferenceId::SEP_POS_PTO_SINGLETON,
- LemmaProperty::NONE,
- trn.getGenerator());
- }
return false;
}
// assert to equality if non-spatial or a labelled pto