I wanted for an example such as:

Everyone has a mother.

I've seen that it is represented in FOL as: $\forall x \exists y:$ Mother(x, y)

I'm seeing that as:For every x, there exists a y, such that y is a mother of x.

I want to know why isn't the following suitable:

$\forall x:$ hasMother(x)

Which I feel can be said as: For every x, x has a mother.


1 Answer 1


This is a good question and comes down to what you want to achieve with the Mother entity.

In your first example, Mother(x, y) is a (binary) relation. That means that you can have as many ys as you would like per x. With Mother as a relation, you can also make formula that checks whether you have two ys that satisfies motherhood for x.

In your other example, hasMother(x) is a predicate that can only be true or false. How many mothers do x have? Impossible to say. Who is x's mother? We can't say.

You could also conceive of a mother(x) → y function that maps an x to its mother y, but then you can have only one mother, and every x needs to have a mother (in the model).

It all comes down to (a) what is a natural representation of "the world" (whatever you want to model), and (b) what you want to achieve (whatever you want to get out of your model).


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.