In his article on Virtual Environments (a part of his VFSM specification method) Ferdinand Wagner describes some new ways of thinking about Boolean Algebra as a software design tool. On page 4 of this PDF article, when describing operators in his system he says this:

Control statements need Boolean values. Hence, the names must be used to produce Boolean results. To achieve this we want to combine them together using Boolean operators. There is nothing wrong with usage of AND and OR operators with their Boolean meaning. For instance, we may write:


to express the control situation: digital input is on or analog input is larger than 8.1 and timer is over.

We cannot use the NOT operator, because the result of the Boolean negation makes sense only for true Boolean values. The result of, for instance,


would be ambiguous.

If "AI_LARGER_THAN_8.1" is acceptable, why would he consider "NOT (AI_LARGER_THAN_8.1)" to be ambiguous?

  • NOT (AI_LARGER_THAN_8.1) has two potential results: one lesser and one equal??! I don't know... – IMHO Feb 18 '11 at 20:20

There's an error in this paper. Wagner claims this is boolean algebra, but also includes 'UNKNOWN' as a value along with TRUE and FALSE. Therefore, this is not actually boolean algebra but a trinary system of his own creation.

Notably, he does not define NOT with respect to this trinary system. This is a classic gotcha in trinary systems. Unlike a binary system, NOT TRUE does not necessarily equal FALSE, nor does NOT FALSE necessarily equal TRUE.


I think the answer is in page 203 of book "Modeling Software with Finite State Machines: A Practical Approach". It says:

"if we define only one control value for the DI object using either the LOW or HIGH value, the missing entry in VI is ambiguous - it may mean the not used or the unknown control value and we cannot use the absence of a control value for formulating conditions (a rule of our positive-logic algebra)."

So NOT operator could be well defined but it is undesirable in VFSM model.


In a sense the VI set, mentioned in this paper, is a knowledge base consisting of positive literals. A transition to a new state is performed if VI entails a given condition. The absence of a name from VI does not infer that the corresponding condition is false (the open-world assumption). Thus, a negative literal can never be a logical consequence of a set of positive literals or, more generally, of a definite clause knowledge base. To conclude, condition NOT(AI_LARGER_THAN_8.1) never leads to transition so it is not used at all.

Your Answer

