-
Type:
Improvement
-
Status: Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 1.19.0
-
Component/s: None
-
Labels:
Why would this be usefull?
- right now a boolean CASE expressions are translated into AND/ORs in most cases ; "disjunction of conjuctions"
- AND/OR simplification could "push" the NOT into them; but only after the CASE conversion; so the expression becames a "conjunction of disjunctions" and all the other simplification rules are working hard to restore order....
- if the push of NOT would happen earlier it would be better because it could address complex cases better
@Test public void testNotIntoCase() { checkSimplify( not( case_( isTrue(vBool()), vBool(1), vBool(2))), "CASE(IS TRUE(?0.bool0), NOT(?0.bool1), NOT(?0.bool2))"); }
actually NOT right now stops the simplification recursion so it would be best to also enable that as well; in case NOT is not is not pushed/handled - unknownAs need to be negated.
@Test public void testNotRecursion() { checkSimplify( not(coalesce(nullBool, trueLiteral)), "false"); }
- links to