## boolean

/avail/Avail/Foundation/Bootstrap/Special Objects: boolean
Source: /avail/Avail/Foundation/Bootstrap/Special Objects
Categories: Primitives, Types
Supertypes: atom
The enumeration of the special atoms true and false. All primitive interrogatives use classical (Boolean) bivalence and all stable primitive interrogatives obey the three classical (Aristotelian) laws of thought.

Bivalent logic assigns either true or false as the unique truth value of every proposition. A primitive interrogative, i.e. boolean-valued primitive, is stable iff it reliably answers either true or false for a given set of arguments.

The three classical laws of thought are:

• The law of identity: P → P. For every stable primitive interrogative `prim_,_,_`, then `prim A, B, C = prim A, B, C`.
• The law of noncontradiction: ¬(P ∧ ¬P). For every stable primitive interrogative `prim_,_,_`, then `(prim A, B, C ∧ ¬prim A, B, C) = false` .
• The law of excluded middle: P ∨ ¬P. For every primitive interrogative `prim_,_,_`, then `((prim A, B, C = true) ∨ (prim A, B, C = false)) = true` .

Note that values may be instances of many enumerations. This means that Avail directly supports other logical systems, such as Kleene's three-valued logic of indeterminacy, whose truth values are `true`, `false`, and `unknown`. Implementation of this system would proceed directly from creation of an atom to represent `unknown` and the formation of a new enumeration that contained the standard true and false atoms and also the `unknown` atom. New logical operations could then be written in terms of this new enumeration.