Abstract

Abstract We now turn from first-order logic to higher-order logic: the principal extra feature of this logic, compared with that which we studied in Chapter D1, is that we have variables running over types whose intended interpretation is the set of all subsets of (the set denoted by) some other type, or the set of all functions between two such types – and we can therefore quantify over elements of such ‘higher types’. The extra feature of our formal languages which makes this possible is the presence of type constructors, which build new types from old. In fact, as we remarked after Definition 1.1.1, the first of these type constructors (the product type constructor) was implicitly present already in our account of first-order logic, in that our function symbols and relation symbols had types assigned to them which were finite strings of sorts, and which were formally interpreted as products of those sorts. Now that we need other type constructors, it makes sense to add the product type constructor explicitly to our definition of a signature. We shall find it convenient to maintain the distinction between sorts which are the basic types given to us, along with the primitive function symbols and relation symbols, as part of the specification of our signature, and the types of the signature which may be either sorts or ‘compound types’ built up using type constructors.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call