Facts and Assumptions
A “Fact” in Blawx represents a thing that is known with certainty. If you have a fact, you need to put it in a Fact block, which looks like this:
Generally speaking, most of the code that you use to create categories, to create attributes, and to create objects, will be included in a fact block.
Fact blocks are also used in tests to set out the fact scenario for that test, if any.
Generally speaking, it does not make sense to use variables other than "any" in a fact block. This is because facts are interpreted by Blawx as rules with the condition "always". Imagine, for example, that you made the statement that the variable X is a dog in a fact block, like this:
That will get interpreted by Blawx as "everything is a dog". That's probably not what you meant. The only thing that a variable can mean, inside a fact block, is "everything". There are a few cases where it might be reasonable to make that kind of statement, but for the clarity of your code it makes to include those statements as rules, so that it is obvious that it is an inference that applies to anything.
It can be helpful to create separate Fact blocks for pieces of information that you will be working with at the same time, so that when you are not using them you can Collapse and Disable the fact block and all its contents all at once. See the documentation on the Blawx User Interface for details on collapsing and disabling blocks.
If you ask Blawx whether or not something is true that you have stated as a Fact, the answer is always yes, without further explanation.
In addition to allowing you to say that something is definitely true, Blawx allows you to say that a statement is either true, or false, but you are uncertain as to which. When you do this, Blawx will try to find answers using both options, and will tell you which answers it found, and on the basis of which assumptions.
An assumption is created by putting a single statement inside an assumption block. The following code suggests that it is either true or false (we don't know which) that bob is a dog.