### 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
public PropagateNullable() {
            super(TransformDirection.DOWN);
        }
        @Override
        protected Expression rule(And and) {
            List<Expression> splits = Predicates.splitAnd(and);
            Set<Expression> nullExpressions = new LinkedHashSet<>();
            Set<Expression> notNullExpressions = new LinkedHashSet<>();
            List<Expression> others = new LinkedList<>();
            
            for (Expression ex : splits) {
                if (ex instanceof IsNull isn) {
                    nullExpressions.add(isn.field());
                } else if (ex instanceof IsNotNull isnn) {
                    notNullExpressions.add(isnn.field());