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.h21
1 files changed, 18 insertions, 3 deletions
diff --git a/src/theory/strings/skolem_cache.h b/src/theory/strings/skolem_cache.h
index 126ee313d..f0376dbc6 100644
--- a/src/theory/strings/skolem_cache.h
+++ b/src/theory/strings/skolem_cache.h
@@ -107,9 +107,14 @@ class SkolemCache
// in_re(a, re.++(_*, b, _*)) =>
// exists k_pre, k_match, k_post.
// a = k_pre ++ k_match ++ k_post ^
- // ~in_re(k_pre ++ substr(k_match, 0, str.len(k_match) - 1),
- // re.++(_*, b, _*)) ^
- // in_re(k2, y)
+ // len(k_pre) = indexof_re(x, y, 0) ^
+ // (forall l. 0 < l < len(k_match) =>
+ // ~in_re(substr(k_match, 0, l), r)) ^
+ // in_re(k_match, b)
+ //
+ // k_pre is the prefix before the first, shortest match of b in a. k_match
+ // is the substring of a matched by b. It is either empty or there is no
+ // shorter string that matches b.
SK_FIRST_MATCH_PRE,
SK_FIRST_MATCH,
SK_FIRST_MATCH_POST,
@@ -180,6 +185,16 @@ class SkolemCache
*/
static Node mkIndexVar(Node t);
+ /** Make length variable
+ *
+ * This returns an integer variable of kind BOUND_VARIABLE that is used for
+ * axiomatizing the behavior of a term or predicate t. It refers to lengths
+ * of strings in the reduction of t. For example, the length variable for the
+ * term str.indexof(s, r, n) is used to quantify over the lengths of strings
+ * that could be matched by r.
+ */
+ static Node mkLengthVar(Node t);
+
private:
/**
* Simplifies the arguments for a string skolem used for indexing into the
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback