In the OpenWorldAssumption; any proposition or theorem which cannot be derived from the facts and axioms present in the system is held to be ''unknown''. Things which are known to be true or false must be stated explicitly, or else inferrable from facts and axioms. Contrast with the ClosedWorldAssumption, which holds that all which cannot be proven true is false. The OpenWorldAssumption more clearly models reality...however it severely complicates things. The two boolean values (true and false) are inadequate, and we have to use ThreeValuedLogic. Universal quantifiers are much harder to prove. The ClosedWorldAssumption is more commonly used. ---- Another way of looking at this is that the otherwise excluded middle must be handled by software one way or another. One way is to make it a value with a meaning such as "unknown". The other obvious alternative is for it to be reflected not in the algorithm's data, but instead in its control paths. That is, perhaps if the value is not known, an exception is thrown, or an if-then-else carefully avoids using the variable that contains the value, etc. ---- CategoryLogic