### Description

The IS NULL/IS NOT NULL only care about the nullability not the value of an expression.
Given the expression x + 1 / 2, the actual result does not matter only if it's null or not - that is, it only matters if x is null or not.
So x + 1 / 2 IS NULL becomes x IS NULL - which can be opportunistically pushed down or evaluated.
x-pack/plugin/ql/src/main/java/org/elasticsearch/xpack/ql/optimizer/OptimizerRules.java
iterator.remove();
                        }
                    }
                    
                    if (conjunctions.size() > 0) {
                        child = unary.replaceChild(filter.with(unary.child(), Predicates.combineAnd(conjunctions)));
                        plan = filter.with(child, Predicates.combineAnd(inPlace));
                    }
                } else {
                    
                    plan = unary.replaceChild(filter.with(unary.child(), condition));
                }
            }
            return plan;
        }
    }
    public static class ReplaceSurrogateFunction extends OptimizerExpressionRule<Expression> {
        public ReplaceSurrogateFunction() {
            super(TransformDirection.DOWN);
        }
        @Override
        protected Expression rule(Expression e) {
            if (e instanceof SurrogateFunction) {
                e = ((SurrogateFunction) e).substitute();
            }
            return e;
        }
    }
    
    public static final class SimplifyComparisonsArithmetics extends OptimizerExpressionRule<BinaryComparison> {