Initial support for string reverse (#3581)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Mon, 23 Dec 2019 23:18:19 +0000 (17:18 -0600)
committerAndres Noetzli <andres.noetzli@gmail.com>
Mon, 23 Dec 2019 23:18:19 +0000 (15:18 -0800)
commitb3471b719f1cd031d35e9a431027088b0dec156b
treebc5e55a278f9e927471ce99146e9fdc992bc716b
parentf5ca3e5d09b457ac21b10793eb5d1efe3fbe40f6
Initial support for string reverse (#3581)

Type rules, parsing and printing, basic rewriting including constant evaluation, reduction for string reverse (`str.rev`).

Also improves support in a few places for tolower/toupper.
19 files changed:
src/parser/cvc/Cvc.g
src/parser/smt2/smt2.cpp
src/printer/smt2/smt2_printer.cpp
src/theory/strings/kinds
src/theory/strings/theory_strings.cpp
src/theory/strings/theory_strings_preprocess.cpp
src/theory/strings/theory_strings_rewriter.cpp
src/theory/strings/theory_strings_rewriter.h
src/util/regexp.h
test/regress/CMakeLists.txt
test/regress/regress0/strings/parser-syms.cvc [new file with mode: 0644]
test/regress/regress0/strings/str-rev-simple.smt2 [new file with mode: 0644]
test/regress/regress1/strings/rev-conv1.smt2 [new file with mode: 0644]
test/regress/regress1/strings/rev-ex1.smt2 [new file with mode: 0644]
test/regress/regress1/strings/rev-ex2.smt2 [new file with mode: 0644]
test/regress/regress1/strings/rev-ex3.smt2 [new file with mode: 0644]
test/regress/regress1/strings/rev-ex4.smt2 [new file with mode: 0644]
test/regress/regress1/strings/rev-ex5.smt2 [new file with mode: 0644]
test/regress/regress1/strings/str-rev-simple-s.smt2 [new file with mode: 0644]