summaryrefslogtreecommitdiff
path: root/src/theory/strings/skolem_cache.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/theory/strings/skolem_cache.h')
-rw-r--r--src/theory/strings/skolem_cache.h35
1 files changed, 22 insertions, 13 deletions
diff --git a/src/theory/strings/skolem_cache.h b/src/theory/strings/skolem_cache.h
index 8cc5146b3..08df744de 100644
--- a/src/theory/strings/skolem_cache.h
+++ b/src/theory/strings/skolem_cache.h
@@ -117,6 +117,8 @@ class SkolemCache
SK_STAR_MID,
SK_STAR_SUFFIX,
+ SK_REGEXP_CONCAT,
+
// --------------- integer skolems
// exists k. ( b occurs k times in a )
SK_NUM_OCCUR,
@@ -130,23 +132,28 @@ class SkolemCache
};
/**
* Returns a skolem of type string that is cached for (a,b,id) and has
- * name c.
+ * name `name`.
+ */
+ Node mkSkolemCached(Node a, Node b, Node c, SkolemId id, const char* name);
+ /**
+ * Returns a skolem of type string that is cached for (a,b,id) and has
+ * name `name`.
*/
- Node mkSkolemCached(Node a, Node b, SkolemId id, const char* c);
+ Node mkSkolemCached(Node a, Node b, SkolemId id, const char* name);
/**
* Returns a skolem of type string that is cached for (a,[null],id) and has
- * name c.
+ * name `name`.
*/
- Node mkSkolemCached(Node a, SkolemId id, const char* c);
+ Node mkSkolemCached(Node a, SkolemId id, const char* name);
/** Same as above, but the skolem to construct has a custom type tn */
Node mkTypedSkolemCached(
- TypeNode tn, Node a, Node b, SkolemId id, const char* c);
+ TypeNode tn, Node a, Node b, Node c, SkolemId id, const char* name);
/** Same as mkTypedSkolemCached above for (a,[null],id) */
- Node mkTypedSkolemCached(TypeNode tn, Node a, SkolemId id, const char* c);
- /** Returns a (uncached) skolem of type string with name c */
- Node mkSkolem(const char* c);
+ Node mkTypedSkolemCached(TypeNode tn, Node a, SkolemId id, const char* name);
+ /** Returns a (uncached) skolem of type string with name `name` */
+ Node mkSkolem(const char* name);
/** Same as above, but for custom type tn */
- Node mkTypedSkolem(TypeNode tn, const char* c);
+ Node mkTypedSkolem(TypeNode tn, const char* name);
/** Returns true if n is a skolem allocated by this class */
bool isSkolem(Node n) const;
@@ -165,16 +172,18 @@ class SkolemCache
* @return A tuple with the new skolem id, the new first, and the new second
* argument
*/
- std::tuple<SkolemId, Node, Node> normalizeStringSkolem(SkolemId id,
- Node a,
- Node b);
+ std::tuple<SkolemId, Node, Node, Node> normalizeStringSkolem(SkolemId id,
+ Node a,
+ Node b,
+ Node c);
/** string type */
TypeNode d_strType;
/** Constant node zero */
Node d_zero;
/** map from node pairs and identifiers to skolems */
- std::map<Node, std::map<Node, std::map<SkolemId, Node> > > d_skolemCache;
+ std::map<Node, std::map<Node, std::map<Node, std::map<SkolemId, Node>>>>
+ d_skolemCache;
/** the set of all skolems we have generated */
std::unordered_set<Node, NodeHashFunction> d_allSkolems;
};
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback