summaryrefslogtreecommitdiff
path: root/src/theory/skolem_lemma.h
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2021-03-11 03:21:06 -0600
committerGitHub <noreply@github.com>2021-03-11 09:21:06 +0000
commit71e843a8e9e88fc739aaa5a4a5d608004648fafa (patch)
tree6f18912dfcb230139bbb6bdb68b38400d23d7eff /src/theory/skolem_lemma.h
parent223155cfb300458f534f4be6b88e5fdc17b0ff14 (diff)
(proof-new) Clean up uses of witness with skolem lemmas (#6109)
This ensures we do not return WITNESS terms in response to ppRewrite. This makes standard utility methods in SkolemLemma to help make this easy. It also removes TheorySetsPrivate::expandDefinitions, which was returning WITNESS in response to expandDefinitions, which is no longer permitted.
Diffstat (limited to 'src/theory/skolem_lemma.h')
-rw-r--r--src/theory/skolem_lemma.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/theory/skolem_lemma.h b/src/theory/skolem_lemma.h
index a44d5a30d..c669b527d 100644
--- a/src/theory/skolem_lemma.h
+++ b/src/theory/skolem_lemma.h
@@ -36,14 +36,26 @@ namespace theory {
class SkolemLemma
{
public:
- SkolemLemma(TrustNode lem, Node k) : d_lemma(lem), d_skolem(k)
- {
- Assert(lem.getKind() == TrustNodeKind::LEMMA);
- }
+ /**
+ * Make skolem from trust node lem of kind LEMMA and skolem k.
+ */
+ SkolemLemma(TrustNode lem, Node k);
+ /**
+ * Make skolem lemma from witness form of skolem k. If non-null, pg is
+ * proof generator that can generator a proof for getSkolemLemmaFor(k).
+ */
+ SkolemLemma(Node k, ProofGenerator* pg);
+
/** The lemma, a trust node of kind LEMMA */
TrustNode d_lemma;
/** The skolem associated with that lemma */
Node d_skolem;
+
+ /**
+ * Get the lemma for skolem k based on its witness form. If k has witness
+ * form (witness ((x T)) (P x)), this is the formula (P k).
+ */
+ static Node getSkolemLemmaFor(Node k);
};
} // namespace theory
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback