I have a custom User field, a nullable integer. As expected, I see the following behavior:
$User.Custom__c <> 0 // FALSE $User.Custom__c = 0 // FALSE
Apex works the same way, and this seems to me to be a normal way of handling nulls in inequalities. However, I'm also observing this behavior:
NOT( $User.Custom__c <> 0 ) // FALSE NOT( $User.Custom__c = 0 ) // FALSE
A similar operation in Apex would return TRUE. I'm having trouble wrapping my mind around how this works. Is this intentional, or does the rule engine that evaluates these expressions incorrectly handle null comparisons?
Note: it's fairly trivial to shore up my logic with some ISNULL() calls. I'm specifically asking about whatever system evaluates these expressions, not about how to get my expected TRUE value.