In so-called ``classical'' accounts of logic, a proposition has a truth value in . Consequently, propositions can be treated as boolean expressions. This boolean-valued account is more restrictive than the one we need in order to discuss computability issues, so we adopt a more abstract account of propositions. We want to consider both the sense and the truth of a proposition. In particular we are interested in their computational sense.
We will, of course, talk about the truth value of a proposition as well as its sense. The type of all propositions needed in this article is denoted . Nuprl can express ``higher order logic'' as well, in which case ``larger'' propositions are needed. See Jackson  or  for fuller accounts of higher order logic.
There are two distinguished atomic propositions, the
canonically true one and the canonically false one. Given
propositions we can form compounds in the usual way:
A propositional function on a type is any map Given such a , then we can form the propositions:
``for all of
``for some of type holds.''
Also associated with every type is the atomic equality proposition, in . The definition of this equality is given with each type.
In classical logic the boolean value is considered the same as the true proposition and is identified with . But the proposition we associate with a boolean expression is this atomic equality: in . Given we denote the corresponding proposition as True(). Clearly we know True() iff and True() iff . Sometimes we denote True() by for short. We call this up arrow ``assert.''
The types we need belong to a universe, . If and are types then we have seen that and are also types.