What happens when we want to give a formal representation of a sentence with two quantifiers, such as the following?

(26) Everybody admires someone.

There are (at least) two ways of expressing (26) in first-order logic:

(27) a. all x.(person(x) -> exists y.(person(y) & admire(x,y))) b. exists y.(person(y) & all x.(person(x) -> admire(x,y)))

Can we use both of these? The answer is yes, but they have different meanings. (27b) is logically stronger than (27a): it claims that there is a unique person, say, Bruce, who is admired by everyone. (27a), on the other hand, just requires that for every person u, we can find some person u' whom u admires; but this could be a different person u' in each case. We distinguish between (27a) and (27b) in terms of the scope of the quantifiers. In the first, V has wider scope than 3, whereas in (27b), the scope ordering is reversed. So now we have two ways of representing the meaning of (26), and they are both quite legitimate. In other words, we are claiming that (26) is ambiguous with respect to quantifier scope, and the formulas in (27) give us a way to make the two readings explicit. However, we are not just interested in associating two distinct representations with (26); we also want to show in detail how the two representations lead to different conditions for truth in a model.

In order to examine the ambiguity more closely, let's fix our valuation as follows:

... admire => {(j, b), (b, b), (m, e), (e, m), (c, a)} >>> val2 = nltk.parse_valuation(v2) The admire relation can be visualized using the mapping diagram shown in (28).

In (28), an arrow between two individuals x and y indicates that x admires y. So j and b both admire b (Bruce is very vain), while e admires m and m admires e. In this model, formula (27a) is true but (27b) is false. One way of exploring these results is by using the satisfiers() method of Model objects.

>>> fmla4 = lp.parse('(person(x) -> exists y.(person(y) & admire(x, y)))') >>> m2.satisfiers(fmla4, 'x', g2) set(['a', 'c', 'b', 'e', 'j', 'm'])

This shows that fmla4 holds of every individual in the domain. By contrast, consider the formula fmla5; this has no satisfiers for the variable y.

>>> fmla5 = lp.parse('(person(y) & all x.(person(x) -> admire(x, y)))') >>> m2.satisfiers(fmla5, 'y', g2)

That is, there is no person that is admired by everybody. Taking a different open formula, fmla6, we can verify that there is a person, namely Bruce, who is admired by both Julia and Bruce.

>>> fmla6 = lp.parse('(person(y) & all x.((x = bruce | x = julia) -> admire(x, y)))') >>> m2.satisfiers(fmla6, 'y', g2)

Your Turn: Devise a new model based on m2 such that (27a) comes out

false in your model; similarly, devise a new model such that (27b) comes

Was this article helpful?

## Post a comment