#include <atomic>
#include <map>
#include <memory>
#include <mutex>
#include <string>
#include <thread>
#include <irep2/irep2_expr.h>
#include <util/symtab/namespace.h>
#include <util/config/options.h>
Go to the source code of this file.
◆ simplification_equivalencet
Verdict on one simplifier rewrite (esbmc/esbmc#4625).
| Enumerator |
|---|
| equivalent | The solver proved before == after for every valuation.
|
| differs | The solver found a valuation where they differ: a simplifier bug.
|
| malformed | after has operands whose sorts disagree: also a simplifier bug, and one that would abort any backend rather than yield a wrong answer.
|
| skipped | Not decided – a shape the check declines, or a solver failure.
|
◆ check_simplification_equivalence()
One-shot convenience over the above; builds and discards a solver.
◆ install_simplification_equivalence_check()
| void install_simplification_equivalence_check |
( |
const namespacet & | ns, |
|
|
const optionst & | options ) |
Install the above as simplify()'s checker for the rest of the run: every rewrite is proved, and a differs verdict logs both expressions and exits.
Does nothing unless the build enabled the check.