 We generally let quantifiers bind a single type of variable, but we may find it helpful, on occasion, to let them bind additional types of variables in order to quantify over different sorts of values. In arithmetic, for example, we may want to be able to quantify over natural numbers and sets thereof and we may find it convenient to classify the individual variables of the language into at least two categories. We may reserve lowercase variables \(x, y, z, x_1\), … to range over natural numbers, and we may use uppercase variables \(X, Y, Z, X_1\), … to range over sets of natural numbers. In a many-sorted language with functional symbols and individual constants, each singular term would be assigned a single sort. If we want identity, we need to include an identity predicate for each sort of a variable and insist on each such predicate to be flanked only by singular terms of the appropriate sort. Other predicates may nevertheless take arguments of different sorts; for example, in a two-sorted language in which lowercase variables range over numbers and uppercase variables range over sets of numbers, \(x \epsilon X\), for example, can take as arguments variables of different sorts and may be read “\(x\) is in \(X\)”.