Use constant folding for evaluating BV eager atom (#6494)
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>
Thu, 6 May 2021 19:22:46 +0000 (14:22 -0500)
committerGitHub <noreply@github.com>
Thu, 6 May 2021 19:22:46 +0000 (12:22 -0700)
commit2f4af86757f34a31f2983f30b3321e7c0511aa32
tree529154c8abbe912da9af0ce0e09142eff53afb42
parent2283ee3b0327441c29caf26be977c1e4cd13c637
Use constant folding for evaluating BV eager atom (#6494)

This is work towards unifying top-level substitutions with model substitutions.

Currently, for model evaluation, BV eager atom preprocessing pass adds mappings (BV_EAGER_ATOM X) -> X to say how (BV_EAGER_ATOM X) should be evaluated in the model. This is not necessary since a rewrite rule (BV_EAGER_ATOM c) -> c for constant c would suffice.

This eliminates the call to addModelSubstitution in that preprocessing pass.

It also makes it so that we don't make true/false themselves into eager atoms.
src/preprocessing/passes/bv_eager_atoms.cpp
src/theory/bv/theory_bv_rewrite_rules.h
src/theory/bv/theory_bv_rewrite_rules_constant_evaluation.h
src/theory/bv/theory_bv_rewriter.cpp
src/theory/bv/theory_bv_rewriter.h