Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
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"); }
Attachments
Issue Links
- links to