/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.