In defining a first order syntax, there’s a choice-point at which we can go two ways.

Option (A): we introduce a class of sentence letters (as it might be, \(A, A’, A”, \ldots\)) together with a class of predicate letters for different arities \(n > 0\) (as it might be \(P_1, P’_1, P”_1, \ldots\), \(P_2, P’_2, P”_2, \ldots\), \(P_3, P’_3, P”_3, \ldots\)). The rule for atomic wffs is then that any sentence letter is a wff, as also is an \(n\)-ary predicate letter \(P_n\) followed by \(n\) terms.

Option (B): we just have a class of predicate letters for each arity \(n \geq 0\) (as it might be \(P_0, P’_0, P”_0, \ldots, P_1, P’_1, P”_1, \ldots, P_2, P’_2, P”_2, \ldots\)). The rule for atomic wffs is then that any \(n\)-ary predicate letter followed by \(n\) terms is a wff.

What’s to choose? In terms of resulting syntax, next to nothing. On option (B) the expressions which serve as unstructured atomic sentences are decorated with subscripted zeros, on option (A) they aren’t. Big deal. But option (B) is otherwise that bit tidier. One syntactic category, predicate letters, rather than two categories, sentence letters and predicate letters: one simpler rule. So if we have a penchant for mathematical neatness, that will encourage us to take option (B).

However, *philosophically* (or, if you like, *conceptually*) option (B) might well be thought to be unwelcome. At least by the many of us who follow Great-uncle Frege. For us, there is a very deep difference between sentences, which express complete thoughts, and sub-sentential expressions which get their content from the way they contribute to fix the content of the sentences in which they feature. Wittgenstein’s *Tractatus* 3.3 makes the Fregean point in characteristically gnomic form: ‘Only the proposition has sense; only in the context of a proposition has a name [or predicate] meaning’.

Now, in building the artificial languages of logic, we are aiming for ‘logically perfect’ languages which mark deep semantic differences in their syntax. Thus, in a first-order language we most certainly think we should mark in our syntax the deep semantic difference between quantifiers (playing the role of e.g. “no one” in the vernacular) and terms (playing the role of “Nemo”, which in the vernacular can usually be substituted for “no one” salve congruitate, even if not always so as myth would have it). Likewise, we should mark in syntax the difference between a sentence (apt to express a stand-alone *Gedanke*) and a predicate (which taken alone expresses no complete thought, but whose sense is fixed in fixing how it contributes to the sense of the complete sentences in which it appears). Option (B) doesn’t quite gloss over the distinction — after all, there’s still the difference between having subscript zero and having some other subscript. However, this doesn’t exactly point up the key distinction, but rather minimises it, and for that reason taking option (B) is arguably to be deprecated.

It is pretty common though to officially set up first-order syntax without primitive sentence letters at all, so the choice of options doesn’t arise. Look for example at Mendelson or Enderton for classic examples. (I wonder if they ever asked their students to formalise an argument involving e.g. ‘If it is raining, then everyone will go home’?). Still, there’s another analogous issue on which a choice *is* made in all the textbooks. For in an analogous way, in defining a first order syntax, there’s another forking path.

Option (C): we introduce a class of constants (as it might be, \(a, a’, a”, \ldots\)); we also have a class containing function letters for each arity \(n > 0\) (as it might be \(f_1, f’_1, f”_1, \ldots\), \(f_2, f’_2, f”_2, \ldots, f_3, f’_3, f”_3, \ldots\)). The rule for terms is then that any constant is a term, as also is an \(n\)-ary function letter followed by \(n\) terms for \(n > 0\).

Option (D): we only have a class of function letters for each arity \(n \geq 0\) (as it might be \(f_0, f’_0, f”_0, \ldots, f_1, f’_1, f”_1, \ldots, f_2, f’_2, f”_2, \ldots\)). The rule for terms is then that any \(n\)-ary function letter followed by \(n\) terms is a term for \(n \geq 0\).

What’s to choose? In terms of resulting syntax, again next to nothing. On option (D) the expressions which serve as unstructured terms are decorated with subscripted zeros, on option (C) they aren’t. Big deal. But option (D) is otherwise that bit tidier. One syntactic category, function letters, rather than two categories, constants and function letters: one simpler rule. So mathematical neatness encourages many authors to take option (D).

But again, we might wonder about the conceptual attractiveness of this option: does it really chime with the aim of constructing a logically perfect language where deep semantic differences are reflected in syntax? Arguably not. Isn’t there, as Great-uncle Frege would insist, a *very* deep difference between directly *referring to an object* \(a\) and *calling a function* \(f\) (whose application to one or more objects then takes us to some object as value). Again, so shouldn’t a logically perfect notation sharply mark the difference in the the devices it introduces for referring to objects and calling functions respectively? Option (D), however, downplays the very distinction we should want to highlight. True, there’s still the difference between having subscript zero and having some other subscript. However, this again surely minimises a distinction that a logically perfect language should aim to highlight. That seems a good enough reason to me for deprecating option (D).