The critical point about judging that T is a type is knowing what it means for an expression to be an element of T. This is what we know when we show that T is a type.
Assertions about objects require their classification into types. Moreover, we need relative or hypothetical classification because an object t occurring in a proposition may be built contingently from other objects xi of type Ti, and will be in some type T. We understand these relative type membership judgments as follows. To judge that t[x] is a member of T2 provided xis a member of T1 means that for any object t1 of type T1, t[t1] is an object of T2. We write this as . We extend the notation to n assumptions by writing for xi distinct identifiers. (We write only when we need to be explicit about the variables; this notation is a second order variable.) We give concrete examples of this judgment below and discuss them at length in section 3.
We don't treat this judgment as an assertion. It summarizes what must hold for a statement about t to make sense. It is not the kind of expression that is true or false. For example, when we say , we are thinking that 0 is a natural number. This is a fact. We are thinking `` ,'' and it does not make sense to deny this, thinking that 0is something else.
In order to consider propositional functions of more than one argument, say P(x, y), we explicitly construct pairs of elements, and express P(x, y) as . The pair belongs to the Cartesian product type. So our types have at least this structure.
Propositions are elements of the large type (or category) Prop. We use
membership judgements
The membership rules are that if and , then for opa connective; and if , then where Q is a quantification operator and where is obtained by removing the typing assumption .
The usual names for the compound propositions are:
proposition | English equivalent | operator name | |
is | F and G | conjunction | |
is | F or G | disjunction | |
is | F implies G | implication | |
F(t) | is | F at t | instance |
is | for all x of type A, F(x) | universal quantification | |
is | for some x of type A, F(x) | existential quantification |
With these definitions in place we can write examples of general typed propositions. We use definiendum == definiens to write definitions.