Here is sentence:

Every farmer who owns a donkey beats it

Everyone claims that the following translation to first order logic is not correct (or maybe lacking consistency how quantifiers are supposed to be translated)

∀ x: ∃ y: (farmer(x) ∧ donkey(y) ∧ own(x,y) → beat(x,y))

saying that truth conditions fails link. Could somebody help me understand how truth condition fails here? I think this is perfect translation.


1 Answer 1


The key is, "false implies X" is always true, no matter what X is (the Principle of Explosion, aka Ex Falso Sequitur Quodlibet in Latin).

So let's say we have a farmer who owns a donkey and doesn't beat it. Whatever formulation we use, we expect it to return false for this. Set x to be this farmer.

Now, the quantifier on y means the statement is true if I can find any value of y that makes it true. I set y to be the Sun.

Now the statement is:

(farmer(x)=TRUE and donkey(y)=FALSE and own(x,y)=FALSE) → beat(x,y)=FALSE

The left side of this implication is false. And since false implies anything, the whole thing is true. But we don't want it to be true, since this farmer has a donkey and doesn't beat it. So the formulation is wrong.

To fix it, you need to change the quantifier on y to be universal ("for all"). This is equivalent to "for every man and every donkey, if the man owns the donkey, he beats it".

  • Thank you, I believe, that I have already have seen clarifications that changing to \forall is incorrect, since it would it mean that farmer beats every donkey that he owns, but I might be wrong. Apr 23, 2019 at 14:26
  • 1
    @user1700890 Yes, the original sentence is false in this case, since the farmer owns a donkey and doesn't beat it.
    – Draconis
    Apr 23, 2019 at 15:20
  • 2
    @user1700890 Then these clarifications were wrong, at least by the conventional understanding of the sentence. "Every farmer beats every donkey he owns" is a correct translation, which might make a little more sense if one paraphrases "a" as "any": "For any given donkey, no matter what, if the farmer owns the donkey, he beats it". Apr 23, 2019 at 18:35
  • 1
    @user1700890 No, of course "a" does not always translate as "for all". This is just the case in this particular construction where we have an implicational formula. A more direct translation would be \forall x (farmer(x) \to ((\exists y donkey(y)) \to beat(x,y)) - you see that there is an existential quantifier as the antecedent to an implication; this is your "a". In general, ((\exists y \phi) \to \psi) is logically equivalent to \forall y (\phi \to \psi) - so this is where \forall comes from: We move the existential quantifier out of the implication, so it becomes a universal quantifier. Apr 24, 2019 at 14:16
  • 1
    However, this transformation is normally only allowed if y does not occur free in \psi, i.e., if we don't accidentally bind anything by moving the quantifier out of the antecedent to have scope over the entire implication. The point is that here we explicitly do want the y in beat(x,y) to be bound by the donkey-quantifier, so we just have to stipulate that \forall x \forall y is the desired translation to start with. In fact, the entire donkey problem revolves around why we are allowed to use this step. Apr 24, 2019 at 14:18

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