George Boole (1815-1864) invented what we now call Boolean logic, which effectively assumes that all propositions are classifiable as either “true” or “false”, with no gradations of evidence or undecided cases. This provided the basis for formally defining logical operators in terms of how they transform what are called truth values, which are just the Boolean values of “true” and “false”. The use of so-called truth tables to define logical operators by cases is characteristic of what is today called “classical” logic.

Though it certainly has its uses in technical contexts, this kind of approach has been criticized as tacitly presupposing what has been called *logical omniscience* or the assumption of a closed world. For example, in computer science Boolean data types are used to represent things that are stipulated to have one of *exactly two* values. Then if we can rule out one, we can simply *assume* the other. This creates a closed world. “Omniscience” is implied by this kind of assumption.

The great developer of mathematical logic Gottlob Frege (1848-1925), at least at one point in his career, went so far as to argue that there are really *only two distinct logical propositions: “true” and “false”*. Depending one’s point of view, what I call *real-world meanings* are either reduced to nothing by this or are irrelevant to it.

From the point of view of “constructive” logic, on the other hand, there are *infinitely many distinct propositions*, distinguishable by the combination of *what they presuppose* and *what they imply*. It begins to be possible to reconstruct real-world meanings *within* logic instead of only outside of it.

In real life there are countless distinctions that are relevant and meaningful, and countless things that we *simply don’t know*. (See also Logic for People.)