summaryrefslogtreecommitdiff
path: root/src/expr/proof_rule.h
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-09-02 14:01:39 -0500
committerGitHub <noreply@github.com>2020-09-02 16:01:39 -0300
commitc17f9b25cac7c0d2941ef136466cb750cf4c3e7b (patch)
tree95abb34573b6fd33e2215a7b2cfafc2f27281054 /src/expr/proof_rule.h
parenta692d44ed5ba0107113df54d2654417bc9f9c345 (diff)
(proof-new) Add proof support in TheoryUF (#5002)
This makes TheoryUF use a standard theory inference manager, which thus makes it proof producing when proof-new is enabled. This additionally cleans HoExtension so that it does not keep a backwards reference to TheoryUF and instead takes its inference manager. This additionally adds two rules for higher-order that are required to make its equality engine proofs correct. Co-authored-by: Haniel Barbosa <hanielbbarbosa@gmail.com>
Diffstat (limited to 'src/expr/proof_rule.h')
-rw-r--r--src/expr/proof_rule.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/expr/proof_rule.h b/src/expr/proof_rule.h
index 59c406d28..b6b9f1ea8 100644
--- a/src/expr/proof_rule.h
+++ b/src/expr/proof_rule.h
@@ -520,6 +520,20 @@ enum class PfRule : uint32_t
// ----------------------------------------
// Conclusion: (not F)
FALSE_ELIM,
+ // ======== HO trust
+ // Children: none
+ // Arguments: (t)
+ // ---------------------
+ // Conclusion: (= t TheoryUfRewriter::getHoApplyForApplyUf(t))
+ // For example, this rule concludes (f x y) = (HO_APPLY (HO_APPLY f x) y)
+ HO_APP_ENCODE,
+ // ======== Congruence
+ // Children: (P1:(= f g), P2:(= t1 s1), ..., Pn+1:(= tn sn))
+ // Arguments: ()
+ // ---------------------------------------------
+ // Conclusion: (= (f t1 ... tn) (g s1 ... sn))
+ // Notice that this rule is only used when the application kinds are APPLY_UF.
+ HO_CONG,
//================================================= Quantifiers rules
// ======== Witness intro
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback