summaryrefslogtreecommitdiff
path: root/src/theory/trust_substitutions.cpp
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-06-07 12:44:20 -0500
committerGitHub <noreply@github.com>2021-06-07 17:44:20 +0000
commit7e9e71c7bd2bcbdcb2cef0d8f99bf34082bf4081 (patch)
tree201fe80043ddb91a72f56f34c2906ef990ad6faf /src/theory/trust_substitutions.cpp
parent4cb2b23322794fc684db4f4a9f9e14e0157c83b0 (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.cpp9
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());
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback