[SCL] Headers and bodies

John F. Sowa sowa at bestweb.net
Fri Nov 28 07:41:46 CST 2003


Bill,

As Pat and I were pointing out, there are two methods
for defining the semantics of all Boolean operators:

  1. Define all the Boolean operators that anyone would
     ever need in the semantics.

  2. Define the semantics of some primitive subset of the
     Boolean operators and let all the others be defined
     as syntactic combinations of the primitives.

Method #1 is impossible because there are 16 dyadic Boolean
functions, 256 triadic functions, 65K tetradic functions, etc.

For method #2, it is possible to define all possible Boolean
functions in terms of some subset of primitives and then
define the others as syntactic combinations:

  1. The current SCL document defines 5 Boolean functions:
     one monadic (NOT) and four dyadic (AND, OR, IF-THEN,
     and EQUIVALENCE).

  2. Other methods use just one primitive (NAND or NOR)
     or at most two primitives, commonly used combinations
     of which include (AND and NOT), (OR and NOT), and
     (IF-THEN and NOT).

My point was that 5 primitives are too many to be elegant
and too few to be complete (e.g., it omits your request for
THEN-IF).  I expressed a preference for two (AND and NOT).

Bottom line:  None of these options make any difference in
the operators that can be included in any concrete language.

John



More information about the SCL mailing list