I've been here before on this but have come across it again, so wanted to re-visit it.
select case when 1 = NULL then 'Yes' else 'No' end --No as expected
select case when NOT (1 = NULL) then 'Yes' else 'No' end --also No!
Second result is correct in three-valued logic, NOT (UKNOWN) = UNKNOWN. I would argue this is not what most people would expect when converting some business rule to SQL. Not because stuck in the world of two-valued logic, rather that AND and OR ultimately treat UKNOWN as FALSE, and then NOT (UNKOWN) would return TRUE.
Perhaps I'm the only one with this issue but I'm going to avoid using NOT wherever possible, rewriting the logic.