Optimize str.substr reduction (#3595)
authorAndres Noetzli <andres.noetzli@gmail.com>
Fri, 10 Jan 2020 00:45:38 +0000 (16:45 -0800)
committerGitHub <noreply@github.com>
Fri, 10 Jan 2020 00:45:38 +0000 (16:45 -0800)
commit2ac7e8c916bfb33eb73cd90b20a92bef7036ac6b
treee7e376808f819f9a772d91532fb8bbc466ad89ec
parent88f1c68a94bd998854cb0bf3a1ce3f516cb774f8
Optimize str.substr reduction (#3595)

This commit optimizes the `str.substr` reduction by replacing the
if-then-else term for the length of the suffix `len(sk2) = ite(len(s) >=
n+m, len(s) - (n + m), 0)` with `(len(sk2) = len(s) - (n + m) v
len(sk2) = 0) ^ len(skt) <= m`. Experiments have shown that the latter
encoding is more efficient.
src/theory/strings/theory_strings_preprocess.cpp