# How is uniqueness quantification translated in First Oder Logic

I have this following natural language statement:

"There is only one house in area1 the size of which is less than 200m²."

which is mistranslated to FOL:

∃x.(house(x) ∧ In(x,area1) ∧ ∀y.(house(y) ∧ In(y,area1) ∧ size(y) < 200 -> x=y))


This translation is wrong according to my lecturer, because it is not necessary that the size of x must be less than 200. The statement is true if there only houses which are bigger.

I have two questions:

1. I don't get the FOL translation at all and don't see where the uniqueness part is expressed : so translated it back : "if all houses in area1 have a size less then 200m² then there exists one house which equals to all houses ??"

2. why is not necessary that the size of x is less than 200, when it clearly says in the statement above that must exist one house with a size less then 200 ?

• It would be much appreciated if people who down vote, explain why the question deserves a downvote, so I can edit it.
– xava
Jun 4, 2018 at 11:52

According to the Wikipedia entry on Uniqueness Quantification your lecturer is correct. There is no size requirement expressed in the FOL expression.

The point about the implication is that it can be true if the antecedent is false. So, there is a house in area1 (which we call x). And all houses in area1 which are smaller than 200 are the same as x. But if there aren't any, then the antecedent is false, and the consequence (x = y) is false, but the whole statement is still true.

As another example: "If Trump is the 31st president of the USA, then the moon is made of green cheese". Both antecedent and consequence are false, but the whole statement is still logically true. Same as "If there is a house in that area, and there are houses that are less than 200 (which there aren't), then that house is one of them."

Moving on to the correct expression: The unique quantifier (usually written as ∃!) can be rewritten using the existential and universal quantifiers as follows (see the above mentioned Wikipedia page):

∃x (P(x) ∧ ∀y (P(y) -> y = x))

This is not what you have got; you have got two different predicates, P1 and P2. Your P1(x) is (house(x) ∧ in(x, area1)), and your P2(x) is (house(x) ∧ in(x, area1) ∧ size(x) < 200)

The correct expression would require the same predicate for the quantifiers and would therefore be

∃x ((house(x) ∧ in(x, area1) ∧ size(x) < 200) ∧ ∀y ((house(y) ∧ in(y, area1) ∧ size(y) < 200) -> y = x))

The difference is that you state that there is at least one house in the area with a size of less than 200. So the second predicate, that y is a house in the area with a size of less than 200, cannot be false.