Support indexed operators re.loop and re.^ (#4167)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 30 Mar 2020 21:29:23 +0000 (16:29 -0500)
committerGitHub <noreply@github.com>
Mon, 30 Mar 2020 21:29:23 +0000 (16:29 -0500)
commit6838885b1250e0abbb1b8d56e6b400a5d7f3ca95
tree3c1a7417d471aeea531a36024a460d605cb5d5f1
parent3ff70d61c111b70d5bf770669b0aa3f1d47a502e
Support indexed operators re.loop and re.^ (#4167)

Towards support for the strings standard.

This modifies our interface so that we accept the SMT-LIB standard versions of re.loop and re.^. This means re.loop no longer accepts 3 arguments but 1 (with 2 indices).

This means we no longer accept re.loop with only a lower bound and no upper bound on the number of repetitions.

Also fixes #4161.
23 files changed:
src/CMakeLists.txt
src/api/cvc4cpp.cpp
src/api/cvc4cppkind.h
src/bindings/java/CMakeLists.txt
src/cvc4.i
src/parser/cvc/Cvc.g
src/parser/smt2/smt2.cpp
src/theory/strings/kinds
src/theory/strings/regexp_operation.cpp
src/theory/strings/sequences_rewriter.cpp
src/theory/strings/theory_strings_utils.cpp
src/theory/strings/theory_strings_utils.h
src/util/CMakeLists.txt
src/util/regexp.cpp [new file with mode: 0644]
src/util/regexp.h [new file with mode: 0644]
src/util/regexp.i [new file with mode: 0644]
test/regress/CMakeLists.txt
test/regress/regress0/strings/bug002.smt2
test/regress/regress0/strings/loop-wrong-sem.smt2 [new file with mode: 0644]
test/regress/regress1/strings/bug686dd.smt2
test/regress/regress1/strings/pierre150331.smt2
test/regress/regress1/strings/reloop.smt2
test/regress/regress2/strings/range-perf.smt2