As I understand it, the function is assigned the predicate ( e.g. let f(x) denote [[ _ is red]] ), the domain is the set of all possible referents and the range is the set of all possible propositions. (I.e. if there are two possible referents, [[John]] and [[Mary]] then set of all possible propositions is [[John is red]] and [[Mary is red]].)

  1. Is that correct?
  2. How is that different from expressing them in predicate logic? (e.g. Rx)

1 Answer 1


Within an extensional semantic framework, the range of the function should in fact be the set of truth values, i.e. {1, 0}, in a standard bivalent logical framework. The domain is the set of individuals. A predicate, such as is red is analysed as a function from individuals to truth values -- namely, that function which maps an individual to 1 if that individual is red, and to 0 otherwise. The denotation of is red, as a function from individuals to truth values, can be written in the lambda calculus as follows (following Heim & Kratzer, 1998):

[[is red]] = λx. x is red

This is to be read as: 'the function from an individual x to true, iff x is red.

I'm not really sure how to answer the question of how this is different to predicate logic. Using function-talk allows us to derive the truth-conditions of sentences of natural language compositionally, by using a general rule of composition such as function application (see again Heim & Kratzer, 1998). Predicate logic is useful for giving the truth conditions of an NL sentence, but it's not much use for giving an account of how these truth conditions are computed compositionally.

  • Thank you. Glad to know you're here. It's tough to find people who know about this. I've been trying to figure out how it is that a function conditionally maps to an output when there is nothing to mark its conditionality. Moreover, the mapping notation |--> {1,0} seems to denote the sentence maps to the set containing true and false - not that it contingently maps to either value. So, where do they get off notating it like this?
    – Hal
    Mar 23, 2014 at 17:02
  • In the lambda notation, the conditions under which the predicate maps an individual to true are given in our metalanguage (in this case, English) after the dot. We could also use predicate logic as our metalanguage, in which case [[is red]] in the lambda notation would be: λx. red(x). How we evaluate whether or not a given entity counts as red is an interesting question in the philosophy of concepts, but one we can abstract away from it in doing semantics.
    – P Elliott
    Mar 23, 2014 at 17:37
  • It's worth mentioning that talking about predicates in terms of functions is pretty much equivalent to talking about predicates in terms of sets of individuals. The function is a characteristic function, which maps each member of the set of red things to 1.
    – P Elliott
    Mar 23, 2014 at 17:42
  • You don't need lambdafication for most purposes, though; it limits things to first-order quantified predicate calculus, which is good for proving theorems. But nobody proves theorems in linguistics, and natural language is not limited to FOQPC.
    – jlawler
    Mar 23, 2014 at 22:01
  • @jlawler I need it for the purpose of getting my credit for the class.
    – Hal
    Mar 24, 2014 at 0:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.