summaryrefslogtreecommitdiff
path: root/src/theory/quantifiers/skolemize.h
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2020-11-12 10:33:32 -0600
committerGitHub <noreply@github.com>2020-11-12 10:33:32 -0600
commit4f367612a386d21315cee7d377176bc83a1402c5 (patch)
tree6b572e49d2cddecf11ce8fedf74084df5c449420 /src/theory/quantifiers/skolemize.h
parentb9eee8d69e9de4641514c35d49c495bd5adead5f (diff)
(proof-new) Proofs for skolemization (#5339)
This adds support for proofs in the quantifiers module that performs skolemization. Also fixes a bug in the proof checker for skolemization.
Diffstat (limited to 'src/theory/quantifiers/skolemize.h')
-rw-r--r--src/theory/quantifiers/skolemize.h20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/theory/quantifiers/skolemize.h b/src/theory/quantifiers/skolemize.h
index 6db3f6215..4469fe851 100644
--- a/src/theory/quantifiers/skolemize.h
+++ b/src/theory/quantifiers/skolemize.h
@@ -24,6 +24,7 @@
#include "expr/node.h"
#include "expr/type_node.h"
#include "theory/quantifiers/quant_util.h"
+#include "theory/trust_node.h"
namespace CVC4 {
@@ -63,15 +64,16 @@ class Skolemize
typedef context::CDHashMap<Node, Node, NodeHashFunction> NodeNodeMap;
public:
- Skolemize(QuantifiersEngine* qe, context::UserContext* u);
+ Skolemize(QuantifiersEngine* qe,
+ context::UserContext* u,
+ ProofNodeManager* pnm);
~Skolemize() {}
/** skolemize quantified formula q
- * If the return value ret of this function
- * is non-null, then ret is a new skolemization lemma
- * we generated for q. These lemmas are constructed
- * once per user-context.
+ * If the return value ret of this function is non-null, then ret is a trust
+ * node corresponding to a new skolemization lemma we generated for q. These
+ * lemmas are constructed once per user-context.
*/
- Node process(Node q);
+ TrustNode process(Node q);
/** get skolem constants for quantified formula q */
bool getSkolemConstants(Node q, std::vector<Node>& skolems);
/** get the i^th skolem constant for quantified formula q */
@@ -119,6 +121,8 @@ class Skolemize
bool printSkolemization(std::ostream& out);
private:
+ /** Are proofs enabled? */
+ bool isProofEnabled() const;
/** get self selectors
* For datatype constructor dtc with type dt,
* this collects the set of datatype selector applications,
@@ -139,6 +143,10 @@ class Skolemize
d_skolem_constants;
/** map from quantified formulas to their skolemized body */
std::unordered_map<Node, Node, NodeHashFunction> d_skolem_body;
+ /** Pointer to the proof node manager */
+ ProofNodeManager* d_pnm;
+ /** Eager proof generator for skolemization lemmas */
+ std::unique_ptr<EagerProofGenerator> d_epg;
};
} /* CVC4::theory::quantifiers namespace */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback