OCLOperators Not
From MDrivenWiki
"Not" is the usual Not operator found in most languages.
However, there are a few things to point out when writing expressions using True, False, nullable booleans, and Not.
Avoid the Risk With Nullable Booleans
Consider xxxx.DisableEditing = false
When you think you want to use "a boolean" with = true/false, don't - it's almost never correct.
The reason is that a nullable boolean is tri-state. False, True, and Null. If an expression is xxxx.DisableEditing - that is false for BOTH False and Null.
So, almost always use "xxxx.DisableEditing" or "not xxxx.DisableEditing" (there are exceptions, but not many).
For example:
self.ValidTo.notNull and self.AddedTo.isNull and (self.Agreement.Facilitator.DisableEditing = false)
If DisableEditing is Null, then "(self.Agreement.Facilitator.DisableEditing = false)" is actually True. (the above false/null problem):
self.ValidTo.notNull and self.AddedToJournalSearch.isNull and not self.Agreement.Facilitator.DisableEditing