diff options
author | Gereon Kremer <nafur42@gmail.com> | 2021-06-02 13:55:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-02 11:55:40 +0000 |
commit | 61b2694ac72d41aeff9c67e3631278e5a3bea5cb (patch) | |
tree | 1188888a726c908963fa55ffd332fe234b6eb8fd /src | |
parent | a158366e1e7fdc76e00926393b9d091870e30bad (diff) |
Fix issues with double negation in circuit propagator (#6669)
This PR fixes a subtle issue with double negations when producing proofs in the circuit propagator.
Adds the test case as a new regression, as well as some similar instances.
Fixes cvc5/cvc5-projects#277.
Diffstat (limited to 'src')
-rw-r--r-- | src/theory/booleans/proof_circuit_propagator.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/theory/booleans/proof_circuit_propagator.cpp b/src/theory/booleans/proof_circuit_propagator.cpp index 6c4e0f96b..ed4f81cb3 100644 --- a/src/theory/booleans/proof_circuit_propagator.cpp +++ b/src/theory/booleans/proof_circuit_propagator.cpp @@ -169,11 +169,11 @@ std::shared_ptr<ProofNode> ProofCircuitPropagator::neqXFromY(bool y, { return nullptr; } - return mkResolution( + return mkNot(mkResolution( mkProof(y ? PfRule::NOT_EQUIV_ELIM2 : PfRule::NOT_EQUIV_ELIM1, {assume(parent.notNode())}), parent[1], - !y); + !y)); } std::shared_ptr<ProofNode> ProofCircuitPropagator::neqYFromX(bool x, @@ -183,11 +183,11 @@ std::shared_ptr<ProofNode> ProofCircuitPropagator::neqYFromX(bool x, { return nullptr; } - return mkResolution( + return mkNot(mkResolution( mkProof(x ? PfRule::NOT_EQUIV_ELIM2 : PfRule::NOT_EQUIV_ELIM1, {assume(parent.notNode())}), parent[0], - !x); + !x)); } std::shared_ptr<ProofNode> ProofCircuitPropagator::xorXFromY(bool negated, |