Unrecursified and merged bv::utils::is(Core|Equality)Term. (#1605)
authorAina Niemetz <aina.niemetz@gmail.com>
Tue, 20 Feb 2018 18:05:05 +0000 (10:05 -0800)
committerGitHub <noreply@github.com>
Tue, 20 Feb 2018 18:05:05 +0000 (10:05 -0800)
commit4ef569cfd91bccabb6e704dcc4ecd55a9fa0a8ea
treee9853ed7f3731e9866d65f441e1b7293edb29168
parent98962b4d3037c381fadc41e19f7ae9a1ddd82b7b
Unrecursified and merged bv::utils::is(Core|Equality)Term. (#1605)

This unrecursifies and merges bv::utils::isCoreTerm and bv::utils::isEqualityTerm to avoid
code duplication.

In the best case, the recursive implementation visits less nodes. This can be achieved with
the non-recursive implementation, however, at the cost of increased code complexity.
In practice, on QF_BV the new implementation slightly improves performance.

Tested against the recursive implementation with a temporary assertion on regression
tests (bv::utils::isCoreTerm was tested with --bv-eq-slicer=auto).
Further tested on QF_BV with a TO of 300s (slight performance improvement).
src/theory/bv/theory_bv_utils.cpp
src/theory/bv/theory_bv_utils.h