A not() function does not do movement to expect. Even if a not() function appoints a field in an argument, I do not turn over the Bour negation of the field. A value of a not() function is always "false".
Seemingly this looks like a bug, but it is different. The reason is so. An argument of a not() function watches existence of a nodeset.
If you want to check behavior of a not() function, please please test next.
(1)Make a new form.
(2)Create table including a field, name of "field1".
(3)Create experiment box, set a function "not(field1)".
(4)Preview the form.
(5)Check a experiment box is "false".Because field1 nodeset is exist.
(6)Delete a field1.
(7)Check a experiment box is "true".Because field1 nodeset is not exist.
---------------------------------------
Yoshio Matsumoto (hotikisu)
MVP for InfoPath, Japan
---------------------------------------