-<table>
-<tr>
-<td width=30%>Scheme (functional part)</td>
-<td width=30%>OCaml (functional part)</td>
-<td width=30%>C, Java, Pasval<br>
-Scheme (imperative part)<br>
-OCaml (imperative part)</td>
-<tr>
-<td width=30%>lambda calculus<br>
-combinatorial logic</td>
-<tr>
-<td colspan=3>------------------------ Turing complete ---------------------</td>
-<tr>
-<td width=30%>
-<td width=30%>more advanced type systems, such as polymorphic types
-<td width=30%>
-<tr>
-<td width=30%>
-<td width=30%>simply-typed lambda calculus (what linguists mostly use)
-<td width=30%>
-</table>
+The rule for symbolic atoms is that a single quote `'` followed by any single word that could be a legal variable is a symbolic atom. Thus `'false` is a symbolic atom, but so too are `'x` and `'succ`. For the time being, I'll restrict myself to only talking about the symbolic atoms `'true` and `'false`. These are a special subgroup of symbolic atoms that we call the *booleans* or *truth-values*. Nothing deep hangs on these being a subclass of a larger category in this way; it just seems elegant. Other languages sometimes make booleans their own special type, not a subclass of any other limited type. Others make them a subclass of the numbers (yuck). We will think of them this way.