diff options
author | Andrew Reynolds <andrew.j.reynolds@gmail.com> | 2021-06-07 12:44:20 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-07 17:44:20 +0000 |
commit | 7e9e71c7bd2bcbdcb2cef0d8f99bf34082bf4081 (patch) | |
tree | 201fe80043ddb91a72f56f34c2906ef990ad6faf /src/theory/trust_substitutions.cpp | |
parent | 4cb2b23322794fc684db4f4a9f9e14e0157c83b0 (diff) |
(proof-new) Fix missing connection in trust substitution proofs (#6685)
This PR fixes a missing connection in trust substitution proofs, which was the cause of open proofs when solved equalities from ppAssert were not justified by proofs.
Also distinguishes TRUST_SUBS_EQ from TRUST_SUBS_MAP for clarity.
Diffstat (limited to 'src/theory/trust_substitutions.cpp')
-rw-r--r-- | src/theory/trust_substitutions.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/theory/trust_substitutions.cpp b/src/theory/trust_substitutions.cpp index 7a2fb19bd..7934231b9 100644 --- a/src/theory/trust_substitutions.cpp +++ b/src/theory/trust_substitutions.cpp @@ -115,11 +115,10 @@ ProofGenerator* TrustSubstitutionMap::addSubstitutionSolved(TNode x, // Try to transform tn.getProven() to (= x t) here, if necessary if (!d_tspb->applyPredTransform(proven, eq, {})) { - // failed to rewrite, it is critical for unsat cores that proven is a - // premise here, since the conclusion depends on it - addSubstitution(x, t, PfRule::TRUST_SUBS_MAP, {proven}, {eq}); - Trace("trust-subs") << "...failed to rewrite" << std::endl; - return nullptr; + // failed to rewrite, we add a trust step which assumes eq is provable + // from proven, and proceed as normal. + Trace("trust-subs") << "...failed to rewrite " << proven << std::endl; + d_tspb->addStep(PfRule::TRUST_SUBS_EQ, {proven}, {eq}, eq); } Trace("trust-subs") << "...successful rewrite" << std::endl; solvePg->addSteps(*d_tspb.get()); |