### 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
@Override
        public LogicalPlan apply(LogicalPlan plan) {
            plan.forEachUp(SetAsOptimized::rule);
            return plan;
        }
        private static void rule(LogicalPlan plan) {
            if (plan.optimized() == false) {
                plan.setOptimized();
            }
        }
    }
    public abstract static class OptimizerRule<SubPlan extends LogicalPlan> extends Rule<SubPlan, LogicalPlan> {
        private final TransformDirection direction;
        public OptimizerRule() {
            this(TransformDirection.DOWN);
        }
        protected OptimizerRule(TransformDirection direction) {
            this.direction = direction;
        }
        @Override
        public final LogicalPlan apply(LogicalPlan plan) {
            return direction == TransformDirection.DOWN
                ? plan.transformDown(typeToken(), this::rule)
                : plan.transformUp(typeToken(), this::rule);
        }
        protected abstract LogicalPlan rule(SubPlan plan);
    }
    public abstract static class OptimizerExpressionRule<E extends Expression> extends Rule<LogicalPlan, LogicalPlan> {