Predicates and Open Sentences

Consider the sentence "xx is divisible by 3." Is it true or false? The question is unanswerable as stated. This is because the sentence does not yet make a claim. Instead, it makes a claim about xx. Until we say what xx is, there is nothing to check. This is the central puzzle this article resolves. How do we build a rigorous bridge from sentences with blanks in them to the genuine propositions that logic actually operates on? This matters because almost every mathematical statement worth proving is not a single fixed proposition. Instead, it is a template — a pattern. It becomes a proposition only after its variables are pinned down. "nn is prime," "ff is continuous at aa," "A⊆BA \subseteq B" are all of this form. Mathematics is not built from an infinite list of separate facts about the number 7, the number 8, and so on. Instead, it is built from open sentences and rules for turning them into closed, evaluable claims. Understanding this mechanism precisely is essential. We must grasp what a free variable is. We must know what a domain of discourse is. We must also understand what operations convert an open sentence into a proposition. This is a prerequisite for everything that follows in formal logic. The big picture is that there are exactly two ways to close an open sentence. First, substitute a specific object for the variable. Second, quantify over the variable — assert it holds for all objects, or for some object, in a chosen domain. Substitution is elementary. This article treats it fully and rigorously. Quantification is the more powerful and subtle of the two operations. It is the subject of the article this one leads into. Here we only need enough of a foreshadowing to see why open sentences demand it. This article delivers a precise definition of a predicate and an open sentence. It gives a careful account of free versus bound variables. It also covers the notion of a domain of discourse, and the truth-set of a predicate. There is a rigorous theorem describing exactly how substitution converts an open sentence into a proposition with a determinate truth value. Worked examples span number theory and set theory. A counterexample shows exactly what goes wrong if the domain of discourse is left unspecified.

Key takeaways
  • A predicate is a sentence containing one or more free variables; it has no truth value by itself.
  • An open sentence becomes a genuine proposition only after every free variable is fixed, by substitution or by quantification.
  • Every predicate is evaluated relative to a domain of discourse DD, the set of allowed values for its variables.
  • The truth set of a one-variable predicate P(x)P(x) over DD is {x∈D:P(x) is true}\{x \in D : P(x) \text{ is true}\}; this set encodes everything about PP.
  • Substituting a specific element a∈Da \in D for xx in P(x)P(x) always yields a proposition — this is the Substitution Theorem proved below.
  • Key idea: a predicate is a function from a domain to truth values, and fixing the input is the only way to get an output.

Where this lives today

Predicates and open sentences are the semantic backbone of first-order logic, the formal system underlying essentially all of modern mathematics, and they appear the moment any mathematical definition uses a variable: "GG is a group," "ff is measurable," "pp is prime" are all predicates over their respective domains, and every theorem of the form "for all xx in DD, P(x)P(x)" is a quantified closure of an open sentence exactly as described here. In computer science, predicates are the direct ancestor of boolean-valued functions and of the `WHERE` clauses in database query languages (relational algebra's selection operator literally filters a table by a predicate's truth set). In programming language theory, type predicates and preconditions/postconditions in Hoare logic are open sentences with free variables standing for program state, closed by substitution when a specific input is supplied. In set theory, the Axiom Schema of Specification (Separation) is stated precisely in terms of predicates: given a set AA and a predicate P(x)P(x), one forms {x∈A:P(x)}\{x \in A : P(x)\} — literally the truth-set construction of this article, promoted to an axiom. In model theory, a predicate's truth set generalizes to the notion of a definable subset of a structure, and much of the subject studies which subsets of a domain arise as truth sets of first-order predicates. In statistics and cryptography, predicates appear as hypothesis-testing conditions ("the null hypothesis holds for parameter θ\theta") and as verification predicates in zero-knowledge proofs, both requiring the same free-variable/closure discipline to be stated without ambiguity.

Ask the tutor: How does quantifying a predicate (∀x P(x)\forall x\, P(x) or ∃x P(x)\exists x\, P(x)) formally turn it into a proposition, and what proof rules govern manipulating such quantified statements?

DefinitionPredicate, free variable, open sentence

Let D1,…,DnD_1, \dots, D_n be nonempty sets (the domains of discourse). A predicate (or propositional function) of nn variables over D1×⋯×DnD_1 \times \cdots \times D_n is a symbolic expression P(x1,…,xn)P(x_1, \dots, x_n), built from mathematical vocabulary and the symbols x1,…,xnx_1,\dots,x_n, such that for every choice of specific objects a1∈D1,…,an∈Dna_1 \in D_1, \dots, a_n \in D_n, substituting aia_i for each xix_i produces a sentence P(a1,…,an)P(a_1,\dots,a_n) that is a bona fide proposition — that is, a declarative sentence with a well-defined, unique truth value (true or false, and not both). The symbols x1,…,xnx_1,\dots,x_n are called free variables of PP: they are placeholders, not names of specific objects, and P(x1,…,xn)P(x_1,\dots,x_n) by itself is neither true nor false. Formally, we identify the predicate with the function

P:D1×⋯×Dn→{T,F},P : D_1 \times \cdots \times D_n \to \{T, F\},

where P(a1,…,an)P(a_1,\dots,a_n) is the truth value of the resulting proposition. A sentence containing free variables (equivalently, a predicate not yet closed by substitution or quantification) is called an open sentence. A sentence with no free variables — every variable has been substituted or bound by a quantifier — is called a closed sentence, and every closed sentence is a proposition. For a one-variable predicate P(x)P(x) over domain DD, the truth set (or solution set) of PP is

TP={x∈D:P(x) is true}.T_P = \{x \in D : P(x) \text{ is true}\}.

Two predicates over the same domain are called (logically) equivalent if they have the same truth set.

Intuition

Think of a predicate as a machine with an input slot labeled xx. You cannot ask "does the machine light up?" until you drop something into the slot; the question only makes sense post-insertion. The variable xx in P(x)P(x) is the shape of the slot, not an object sitting in it. This is why xx is called free: it is free to be replaced, and the expression makes no assertion about any fixed thing until that replacement happens. The domain of discourse is the set of legal objects that fit the slot. "xx is divisible by 3" behaves very differently as a predicate over Z\mathbb{Z} than as a predicate over R\mathbb{R}: over Z\mathbb{Z} every input yields a genuine true/false verdict (12 yes, 7 no), but over R\mathbb{R} the phrase "divisible by 3" does not even parse for something like x=πx = \pi, so it fails to be a predicate over R\mathbb{R} at all under the usual meaning of divisibility. Fixing the domain is not bookkeeping; it is part of the definition of the predicate, because it determines whether substitution always succeeds in producing a proposition. Once the domain is fixed, a one-variable predicate carves the domain into two pieces: the truth set (where it's true) and its complement (where it's false). This is exactly the picture of a function D→{T,F}D \to \{T,F\}, and it is the most useful mental model: a predicate is a two-valued function, substitution is function evaluation, and the truth set is the preimage of TT.

:::svg[The predicate P(x)P(x): "xx is divisible by 3" as a function Z∩[0,12]→{T,F}\mathbb{Z} \cap [0,12] \to \{T,F\}] D {T,F} F T 012 345 678 91011 12 truth set T_P = {0,3,6,9,12}

TheoremSubstitution Theorem

Let P(x1,…,xn)P(x_1,\dots,x_n) be a predicate over D1×⋯×DnD_1 \times \cdots \times D_n, in the sense of the definition above (so for every a1∈D1,…,an∈Dna_1 \in D_1,\dots,a_n\in D_n, P(a1,…,an)P(a_1,\dots,a_n) is a syntactically well-formed declarative sentence). Then: 1. (Closure) For every a1∈D1,…,an∈Dna_1 \in D_1, \dots, a_n \in D_n, the sentence P(a1,…,an)P(a_1,\dots,a_n) is a proposition: it has exactly one of the truth values T,FT, F. 2. (Well-definedness) The truth value of P(a1,…,an)P(a_1,\dots,a_n) depends only on the objects a1,…,ana_1,\dots,a_n and on PP — not on the choice of names or symbols used to denote a1,…,ana_1,\dots,a_n. That is, if ai=bia_i = b_i as objects of DiD_i for each ii (even if ai,bia_i, b_i are written with different symbols), then P(a1,…,an)P(a_1,\dots,a_n) and P(b1,…,bn)P(b_1,\dots,b_n) have the same truth value. 3. (No remaining freedom) After substitution, x1,…,xnx_1,\dots,x_n no longer occur as free variables in P(a1,…,an)P(a_1,\dots,a_n); the resulting sentence is closed.

Proof

We prove each part in turn. The proof technique throughout is direct unwinding of the definitions of predicate, proposition, and substitution; there is no appeal to any quantifier machinery, since that has not yet been introduced, and no circularity is possible because the only facts used are the defining clauses stated above.

Part 1 (Closure). This is immediate from the definition of a predicate: the definition of "predicate" stipulates that for every choice of a1∈D1,…,an∈Dna_1 \in D_1,\dots,a_n \in D_n, the substituted sentence P(a1,…,an)P(a_1,\dots,a_n) is a proposition. By the definition of proposition, every proposition has exactly one of the two truth values TT or FF — this is the Law of Bivalence built into that definition. Hence P(a1,…,an)P(a_1,\dots,a_n) has exactly one truth value. This proves Part 1; note it is not an extra hypothesis we are adding, but a repackaging of what "PP is a predicate over D1×⋯×DnD_1\times\cdots\times D_n" already asserts, made explicit because it is the fact we will use repeatedly.

Part 2 (Well-definedness). Fix i∈{1,…,n}i \in \{1,\dots,n\} and suppose ai,bia_i, b_i are two (possibly differently-written) symbols denoting the same element of DiD_i, i.e. ai=bia_i = b_i as elements of the set DiD_i, and similarly suppose aj=bja_j = b_j for all other indices jj. We must show P(a1,…,an)P(a_1,\dots,a_n) and P(b1,…,bn)P(b_1,\dots,b_n) have the same truth value. Recall that under our functional identification, PP is precisely the function

P:D1×⋯×Dn→{T,F}.P: D_1 \times \cdots \times D_n \to \{T,F\}.

The sentence obtained by substituting a1,…,ana_1,\dots,a_n for x1,…,xnx_1,\dots,x_n is, by definition of substitution, the assertion "P(a1,…,an)=TP(a_1,\dots,a_n) = T" (read as a proposition, true exactly when the function value is TT); likewise for b1,…,bnb_1,\dots,b_n. Since (a1,…,an)(a_1,\dots,a_n) and (b1,…,bn)(b_1,\dots,b_n) are the same ordered tuple of objects in D1×⋯×DnD_1\times\cdots\times D_n (equality of each coordinate was assumed), and PP is a function — hence single-valued, giving exactly one output for each input tuple by the definition of "function" — we get

P(a1,…,an)=P(b1,…,bn)P(a_1,\dots,a_n) = P(b_1,\dots,b_n)

as elements of {T,F}\{T,F\}. Therefore the two substituted sentences express the same truth value. This is exactly the statement that truth value is a property of the object substituted, not of the notation used to denote it — which is what makes substitution a well-defined operation on propositions rather than a syntactic accident.

Part 3 (No remaining freedom). By definition, a variable xix_i occurs free in an expression if it appears in the expression as an unbound placeholder standing for an arbitrary, not-yet-specified element of DiD_i. Substitution is defined precisely as the operation that replaces every occurrence of the placeholder xix_i in PP by the fixed symbol aia_i. After this replacement, the symbol xix_i no longer appears in the resulting expression at all (it has been textually replaced), so a fortiori it cannot occur free in it. Since this holds for every i=1,…,ni=1,\dots,n, the sentence P(a1,…,an)P(a_1,\dots,a_n) has no free variables among x1,…,xnx_1,\dots,x_n, and (as PP contained no other variables by hypothesis) has no free variables at all. Hence it is a closed sentence, and by Part 1 it is moreover a proposition. ■\blacksquare

∎
CorollaryTruth sets partition the domain

Let P(x)P(x) be a one-variable predicate over a domain DD, with truth set TP={x∈D:P(x) true}T_P = \{x \in D : P(x) \text{ true}\}. Then {TP, D∖TP}\{T_P,\ D \setminus T_P\} is a partition of DD: the two sets are disjoint, and their union is DD.

Proof

By Part 1 of the Substitution Theorem, for every a∈Da \in D the proposition P(a)P(a) has exactly one truth value. If P(a)=TP(a) = T then a∈TPa \in T_P and a∉D∖TPa \notin D\setminus T_P; if P(a)=FP(a) = F then a∉TPa \notin T_P (since TPT_P contains only elements making PP true) and a∈D∖TPa \in D \setminus T_P. Either way aa lies in exactly one of TPT_P, D∖TPD\setminus T_P. Since this holds for every a∈Da \in D, the two sets are disjoint and their union is all of DD. ■\blacksquare

∎

Worked examples

Example 1 — a number-theoretic predicate with an infinite, non-uniform domain. Let D=ZD = \mathbb{Z} and let P(n)P(n) be the open sentence

P(n):n2−n−6  is a perfective square times (−1)k for no such k…P(n):\quad n^2 - n - 6 \ \text{ is a perfective square times } (-1)^k \text{ for no such } k \dots

— let us instead use a clean, checkable example. Define, over D=ZD = \mathbb{Z},

P(n):n2−5n+6=0.P(n): \quad n^2 - 5n + 6 = 0.

Step 1: verify PP is a genuine predicate over Z\mathbb{Z}. For any specific integer aa, the sentence "a2−5a+6=0a^2 - 5a + 6 = 0" is an equation between two specific integers (a2−5a+6a^2-5a+6 and 00), and equality of integers is a relation with a determinate truth value for every pair of integers (given integers, we can always compute both sides and compare — this is part of what it means for Z\mathbb{Z} with its arithmetic and equality to be well-defined). Hence Part 1 of the Substitution Theorem applies: P(a)P(a) is a proposition for every a∈Za \in \mathbb{Z}. Step 2: compute the truth set. Factor: n2−5n+6=(n−2)(n−3)n^2 - 5n + 6 = (n-2)(n-3). This product is 00 exactly when n=2n = 2 or n=3n = 3. So

TP={2,3}.T_P = \{2, 3\}.

Step 3: exhibit substitution explicitly, including non-uniformity. Substituting n=2n = 2: P(2)P(2) is "4−10+6=04 - 10 + 6 = 0", i.e., "0=00 = 0", true. Substituting n=−1n = -1: P(−1)P(-1) is "1+5+6=01 + 5 + 6 = 0", i.e., "12=012 = 0", false. Substituting n=100n = 100: P(100)P(100) is "10000−500+6=010000 - 500 + 6 = 0", i.e., "9506=09506 = 0", false. Note the asymmetry: the truth set is the tiny finite set {2,3}\{2,3\} sitting inside the infinite domain Z\mathbb{Z} — most substitutions produce false propositions, and exactly two produce true ones. This illustrates that "predicate" carries no presumption of symmetry or of a "nice" truth set; the truth set can be any subset of DD that arises from evaluating the defining condition. Step 4: an equivalent predicate. The predicate Q(n):(n−2)(n−3)=0Q(n): (n-2)(n-3)=0 over Z\mathbb{Z} has the same truth set {2,3}\{2,3\}, hence PP and QQ are equivalent predicates in the sense of the definition, even though they are syntactically different open sentences.

Example 2 — a two-variable predicate over a non-numeric domain (sets), with asymmetric behavior in its two arguments. Let U={1,2,3,4}U = \{1,2,3,4\} and let D1=D2=P(U)D_1 = D_2 = \mathcal{P}(U) (the power set of UU, so each variable ranges over subsets of UU, not elements). Define the two-variable predicate

P(X,Y):X⊆Y  and  ∣X∣<∣Y∣.P(X,Y): \quad X \subseteq Y \ \text{ and } \ |X| < |Y|.

Step 1: verify PP is a predicate over P(U)×P(U)\mathcal{P}(U)\times\mathcal{P}(U). For any specific subsets A,B⊆UA, B \subseteq U, "A⊆BA \subseteq B" is a proposition (subset containment between two fixed, fully-specified sets is decidable by checking each element of AA against BB — a finite check since UU is finite), and "∣A∣<∣B∣|A| < |B|" is a proposition (comparison of two specific natural numbers). A conjunction of two propositions is a proposition (this uses only the propositional connective rules already established for Propositions and Truth Values). So P(A,B)P(A,B) is a proposition for every choice of A,B∈P(U)A, B \in \mathcal{P}(U), confirming Part 1 of the Substitution Theorem. Step 2: substitute an asymmetric pair. Let A={1,3}A = \{1,3\}, B={1,2,3}B = \{1,2,3\}. Then A⊆BA \subseteq B (every element 1, 3 of AA is in BB — check directly) and ∣A∣=2<3=∣B∣|A| = 2 < 3 = |B|. Both conjuncts true, so P(A,B)P(A,B) is true. Step 3: show the two argument slots are not interchangeable — substitute the reverse order. Now evaluate P(B,A)P(B,A), i.e., swap the roles: is B⊆AB \subseteq A? We need every element of B={1,2,3}B=\{1,2,3\} to lie in A={1,3}A = \{1,3\}; but 2∈B2 \in B and 2∉A2 \notin A, so B⊈AB \not\subseteq A. Hence the first conjunct of P(B,A)P(B,A) is false, making P(B,A)P(B,A) false overall (regardless of the size comparison). This demonstrates concretely that a two-variable predicate need not be symmetric: P(A,B)≠P(B,A)P(A,B) \ne P(B,A) in general, here with P(A,B)=TP(A,B) = T but P(B,A)=FP(B,A) = F for this very pair. Step 4: a boundary case. Let C={1,2,3,4}=UC = \{1,2,3,4\} = U itself and D={1,2,3,4}=UD=\{1,2,3,4\}=U. Then P(C,D)P(C,D): is C⊆DC \subseteq D? Yes (C=DC=D). Is ∣C∣<∣D∣|C| < |D|? No, 4<44 < 4 is false. So P(C,D)P(C,D) is false — this shows the strict inequality in the definition is doing real work: without it (i.e. using ⊆\subseteq and ≤\le instead of <<), the pair (U,U)(U,U) would instead satisfy the predicate, changing the truth set. This is exactly the kind of check the Substitution Theorem guarantees will always terminate in an answer — every substitution here produced a definite T or F, never an ambiguous case — but it does not by itself tell us which answer; that requires actually working through the definitions, as we just did.

Counterexamplewhy the domain of discourse cannot be omitted

The Substitution Theorem's conclusion — that every substitution into PP yields a genuine proposition — depended on the hypothesis that P(a1,…,an)P(a_1,\dots,a_n) is a well-formed declarative sentence with a determinate truth value for every a1∈D1,…,an∈Dna_1 \in D_1,\dots,a_n \in D_n. Drop this hypothesis by refusing to fix a domain at all, and the guarantee collapses. Consider the bare expression

P(x):x+5=12.P(x): \quad x + 5 = 12.

Suppose we declare no domain of discourse — we simply write "xx" and hope substitution will sort itself out. Now substitute x=x = "the set {1,2}\{1,2\}" (a perfectly meaningful object, just not a number). The resulting string "{1,2}+5=12\{1,2\} + 5 = 12" is not a well-formed sentence at all under the standard meaning of ++ and == for numbers: addition of a set and a number is undefined, so this is not a proposition — it is not even a syntactically legitimate assertion, let alone one with a truth value. The "predicate" P(x)P(x) as bare notation, without a specified domain, therefore fails to be a predicate in the sense of our definition: Part 1 of the Substitution Theorem (closure) required substitution to succeed in producing a proposition for every candidate value, and here it does not even parse for some candidates. The fix is exactly the domain-of-discourse clause built into the definition: declare D=RD = \mathbb{R} (or Z\mathbb{Z}, or N\mathbb{N}) in advance, as part of specifying PP. Once D=RD = \mathbb{R} is fixed, P(x):x+5=12P(x): x+5=12 over R\mathbb{R} is a legitimate predicate (every real number substitutes to give a genuine true/false arithmetic equation), with truth set TP={7}T_P = \{7\}. The moral: "predicate" is not a property of a string of symbols alone but of a string together with a domain; omit the domain and you can no longer even state, let alone prove, that substitution always succeeds. A second, subtler failure mode with the same missing hypothesis: let DD include an element for which the defining condition is a category error even within a plausible-looking domain. E.g. take D=QD = \mathbb{Q} and P(x):x is rationalP(x): \sqrt{x} \text{ is rational}, intending D=Q≥0D=\mathbb{Q}_{\ge 0} but sloppily writing D=QD=\mathbb{Q}. Substituting x=−4/9∈Qx=-4/9 \in \mathbb{Q} gives "−4/9\sqrt{-4/9} is rational" — under the real square root, −4/9\sqrt{-4/9} is undefined, so again no proposition results. The lesson is identical: the domain must be chosen so that every element of it makes the defining condition meaningful, not merely most elements.

Scope, edge cases & common traps

SituationWhat happensCorrect handling
Domain not specifiedSubstitution may fail to produce a sentence at allAlways state DD as part of defining PP
nn-variable predicate, only some variables substitutedResult is still an open sentence (in the unsubstituted variables)Track free variables carefully; partial substitution does not close the sentence
Truth set is emptyPP is a legitimate predicate; it is simply false for every element of DDDo not confuse "no solutions" with "not a predicate"
Truth set equals DDPP is true for every element; still just a predicate, not automatically "quantified"Distinguish "P(x)P(x) true for all xx tested" from the quantified proposition ∀x P(x)\forall x\, P(x)
Predicate compared across different domainsSame symbolic expression, different truth setsTruth set is only well-defined relative to a fixed domain
Multi-variable predicate assumed symmetricMay be false, as in Example 2Check both orders explicitly; never assume P(a,b)⇔P(b,a)P(a,b) \Leftrightarrow P(b,a)

The mathematician behind it

Origins · 1 minGottlob Frege and how this was discovered
GF
Gottlob Frege
1848–1925 · Foundations of logic and the analysis of quantification

Gottlob Frege, a German mathematician and philosopher working at the University of Jena, is the figure most responsible for isolating the modern notion of a predicate as distinct from a proposition. In his Begriffsschrift (1879), Frege introduced a formal notation in which he explicitly separated the "unsaturated" part of a judgment — what we now call the predicate, with its argument slots — from the fully "saturated" proposition obtained by filling those slots. Frege's insight that "xx is prime" denotes a function from objects to truth values, rather than a truth value itself, is precisely the modern definition formalized in this article, and it made rigorous quantification (the subject that follows) possible for the first time.

History
- 1879 — Frege's Begriffsschrift introduces function/argument analysis of judgments, distinguishing predicates from propositions and formalizing quantifier notation for the first time.
- 1889 — Peano's axiomatization of arithmetic uses predicate-style conditions (e.g. "nn is a natural number satisfying...") systematically, though with less semantic precision than Frege's.
- 1910–1913 — Whitehead and Russell's Principia Mathematica develops propositional functions (their term for predicates) as the basis for the ramified theory of types.
- 1928 — Hilbert and Ackermann's Grundzüge der theoretischen Logik gives the first widely-used textbook treatment of predicate logic with clean free/bound variable terminology.
- 1936 — Tarski's semantic theory of truth rigorously formalizes the notion of a predicate's satisfaction by elements of a domain, underlying the modern "truth set" concept used here.
What exactly is the difference between a predicate and a proposition?

A proposition is a declarative sentence with a single, determinate truth value — true or false, not both, not neither. A predicate is a pattern for producing propositions: it contains one or more free variables, and only becomes an actual proposition once every free variable has been closed, either by substituting a specific object from the relevant domain or by attaching a quantifier. So "77 is prime" is a proposition (true), "nn is prime" is a predicate/open sentence (no truth value on its own), and "∀n∈N, n\forall n \in \mathbb{N},\ n is prime" is again a proposition (false, since 4 is not prime), obtained by quantifying rather than substituting.

Why do we need to specify a domain of discourse at all — can't we just let variables range over "everything"?

Letting a variable range over "everything" (some universal collection of all objects) causes two separate problems. First, as the counterexample shows, a fixed symbolic condition like "x+5=12x+5=12" may simply not parse for some objects (sets, functions, colors), so substitution would not reliably produce a proposition, violating the closure property required of a genuine predicate. Second, in set theory, assuming a "set of all objects" exists leads to contradictions such as Russell's Paradox. Restricting to a specific, well-understood domain DD (integers, reals, subsets of a fixed set, etc.) sidesteps both issues and is what makes the Substitution Theorem provable rather than merely hoped for.

Is the truth set of a predicate the same thing as the predicate itself?

Not quite, though they carry the same logical information relative to a fixed domain. The truth set TP={x∈D:P(x)}T_P = \{x \in D : P(x)\} records exactly which elements make PP true, and two syntactically different predicates with the same truth set are called logically equivalent (as in Example 1, where n2−5n+6=0n^2-5n+6=0 and (n−2)(n−3)=0(n-2)(n-3)=0 share truth set {2,3}\{2,3\}). But the predicate itself is the expression or function P:D→{T,F}P: D \to \{T,F\}, which carries a definite defining rule, while the truth set is only the resulting output data (the preimage of TT). Two predicates can be equivalent without being the same expression.

Can a predicate have zero free variables, or is that a contradiction?

If an expression has zero free variables, it is not a predicate in the substitution sense — it is already a closed sentence, i.e., a proposition (assuming it's well-formed and declarative), because there is nothing left to substitute. The definition of "predicate" as given here is reserved for expressions with at least one free variable, precisely because the interesting phenomenon — needing substitution or quantification to obtain a truth value — requires a variable to be present. A zero-variable expression skips straight to being a proposition, which is the base case this whole theory is built on top of.

What is the relationship between predicates and quantifiers, without getting into the details of quantifiers themselves?

Substitution is one way to close an open sentence's free variable: replace xx by a specific object a∈Da\in D, and by the Substitution Theorem you get a proposition. Quantification is the other way: instead of naming one object, you assert something about the pattern across the whole domain — "for every xx in DD, P(x)P(x) holds" or "there exists an xx in DD for which P(x)P(x) holds." Both operations take a one-free-variable open sentence and output a genuine closed proposition, but quantification does so without singling out any one element, which is what makes it strictly more expressive than substitution alone. The precise definitions and proof rules for these two operations are developed in Universal and Existential Quantifiers.

Does a predicate's truth set have to be a "nice" or describable subset of the domain?

No — nothing in the definition requires the truth set to be finite, cofinite, an interval, or expressible by any simpler formula. Example 1 showed a truth set that was a small finite subset {2,3}\{2,3\} of the infinite domain Z\mathbb{Z}; other predicates (e.g. "xx is a real number that is a root of some specific transcendental equation") can have truth sets that are uncountable, or even undecidable to describe algorithmically in general logical settings. The Substitution Theorem guarantees only that each individual substitution yields a determinate proposition — it says nothing about how complicated the resulting collection of true instances might be.

If I substitute the same value using two different names (like "6" and "2·3"), do I always get the same truth value?

Yes, and this is exactly Part 2 of the Substitution Theorem (well-definedness). Since a predicate is formally a function from its domain to {T,F}\{T,F\}, and functions are single-valued, evaluating that function at the same underlying object always returns the same output regardless of which numeral or expression is used to name that object. So P(6)P(6) and P(2⋅3)P(2\cdot 3) must agree for any predicate PP over a domain containing the integer 6, because "6" and "2·3" denote the identical element of that domain — the theorem guarantees notation never affects truth value, only the object substituted does.

Before this

Where this leads