1
Fork 0

negations around expressions can make things simpler

This commit is contained in:
Oliver Schneider 2016-03-24 10:54:48 +01:00
parent 03833f666f
commit 37cee84c44
2 changed files with 8 additions and 3 deletions

View file

@ -207,6 +207,10 @@ impl<'a, 'tcx> NonminimalBoolVisitor<'a, 'tcx> {
let stats = terminal_stats(&expr);
let mut simplified = expr.simplify();
for simple in Bool::Not(Box::new(expr.clone())).simplify() {
match simple {
Bool::Not(_) | Bool::True | Bool::False => {},
_ => simplified.push(Bool::Not(Box::new(simple.clone()))),
}
let simple_negated = simple_negate(simple);
if simplified.iter().any(|s| *s == simple_negated) {
continue;