// VP1 VP2_1 ... VP2_n
// ------------------------------------ RESOLUTION
// VP2a
- // ------------------------------------ REORDER
+ // ------------------------------------ REORDERING
// VP2b
// ------ DUPLICATED_LITERALS ------- IMPLIES_NEG1
// VP3 VP4
notAnd.push_back(children[0]); //(cl (not (and F1 ... Fn))^n F)
Node vp2b = nm->mkNode(kind::SEXPR, notAnd);
success &=
- addAletheStep(AletheRule::REORDER, vp2b, vp2b, {vp2a}, {}, *cdp);
+ addAletheStep(AletheRule::REORDERING, vp2b, vp2b, {vp2a}, {}, *cdp);
vp3 = nm->mkNode(kind::SEXPR, d_cl, andNode.notNode(), children[0]);
success &= addAletheStep(
{},
*cdp);
}
+ // ======== Reordering
+ // This rule is translated according to the clause pattern.
+ case PfRule::REORDERING:
+ {
+ return addAletheStepFromOr(
+ AletheRule::REORDERING, res, children, {}, *cdp);
+ }
// ======== Split
// See proof_rule.h for documentation on the SPLIT rule. This comment
// uses variable names as introduced there.
// VP1 VP2
// ------------------------------- RESOLUTION
// VP3
- // ------------------------------- REORDER
+ // ------------------------------- REORDERING
// VP4
// ------------------------------- DUPLICATED_LITERALS
// (cl (not (ite C F1 F2)) F1 F2)
&& addAletheStep(AletheRule::ITE_POS2, vp2, vp2, {}, {}, *cdp)
&& addAletheStep(
AletheRule::RESOLUTION, vp3, vp3, {vp1, vp2}, {}, *cdp)
- && addAletheStep(AletheRule::REORDER, vp4, vp4, {vp3}, {}, *cdp)
+ && addAletheStep(AletheRule::REORDERING, vp4, vp4, {vp3}, {}, *cdp)
&& addAletheStepFromOr(
AletheRule::DUPLICATED_LITERALS, res, {vp4}, {}, *cdp);
}
// VP1 VP2
// ------------------------------- RESOLUTION
// VP3
- // ------------------------------- REORDER
+ // ------------------------------- REORDERING
// VP4
// ------------------------------- DUPLICATED_LITERALS
// (cl (ite C F1 F2) C (not F2))
&& addAletheStep(AletheRule::ITE_NEG2, vp2, vp2, {}, {}, *cdp)
&& addAletheStep(
AletheRule::RESOLUTION, vp3, vp3, {vp1, vp2}, {}, *cdp)
- && addAletheStep(AletheRule::REORDER, vp4, vp4, {vp3}, {}, *cdp)
+ && addAletheStep(AletheRule::REORDERING, vp4, vp4, {vp3}, {}, *cdp)
&& addAletheStepFromOr(
AletheRule::DUPLICATED_LITERALS, res, {vp4}, {}, *cdp);
}