summaryrefslogtreecommitdiff
path: root/src/proof
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/proof
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/proof')
-rw-r--r--src/proof/proof_rule.cpp1
-rw-r--r--src/proof/proof_rule.h11
2 files changed, 10 insertions, 2 deletions
diff --git a/src/proof/proof_rule.cpp b/src/proof/proof_rule.cpp
index 0cefe1209..676fa6a63 100644
--- a/src/proof/proof_rule.cpp
+++ b/src/proof/proof_rule.cpp
@@ -46,6 +46,7 @@ const char* toString(PfRule id)
case PfRule::TRUST_REWRITE: return "TRUST_REWRITE";
case PfRule::TRUST_SUBS: return "TRUST_SUBS";
case PfRule::TRUST_SUBS_MAP: return "TRUST_SUBS_MAP";
+ case PfRule::TRUST_SUBS_EQ: return "TRUST_SUBS_EQ";
//================================================= Boolean rules
case PfRule::RESOLUTION: return "RESOLUTION";
case PfRule::CHAIN_RESOLUTION: return "CHAIN_RESOLUTION";
diff --git a/src/proof/proof_rule.h b/src/proof/proof_rule.h
index 107285cc3..a42b30773 100644
--- a/src/proof/proof_rule.h
+++ b/src/proof/proof_rule.h
@@ -219,11 +219,13 @@ enum class PfRule : uint32_t
THEORY_REWRITE,
// The remaining rules in this section have the signature of a "trusted rule":
//
- // Children: none
+ // Children: ?
// Arguments: (F)
// ---------------------------------------------------------------
// Conclusion: F
//
+ // Unless stated below, the expected children vector of the rule is empty.
+ //
// where F is an equality of the form t = t' where t was replaced by t'
// based on some preprocessing pass, or otherwise F was added as a new
// assertion by some preprocessing pass.
@@ -248,8 +250,13 @@ enum class PfRule : uint32_t
// could not be replayed during proof postprocessing.
TRUST_SUBS,
// where F is an equality (= t t') that holds by a form of substitution that
- // could not be determined by the TrustSubstitutionMap.
+ // could not be determined by the TrustSubstitutionMap. This inference may
+ // contain possibly multiple children corresponding to the formulas used to
+ // derive the substitution.
TRUST_SUBS_MAP,
+ // where F is a solved equality of the form (= x t) derived as the solved
+ // form of F', where F' is given as a child.
+ TRUST_SUBS_EQ,
// ========= SAT Refutation for assumption-based unsat cores
// Children: (P1, ..., Pn)
// Arguments: none
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback