Currently when performing null semantics rewrite we assume all parameters are nullable. This is because at that point we don't have the parameter values.
We should run optimizations after the values are known and simplify fragments like @prm IS NULL, @prm IS NOT NULL once we know if the parameters are actually null or not.