A basic question about predicate logic

Suppose we have a statement: "Tom has a car" and we have an auxiliary clause that is

has(x, y): x has y then to write the statement in logic I am guessing the following ones:

$$\exists$$y has(Tom,y)

or

has(Tom,car)

The reason I am not sure which to select is I don't know whether or not "car" is a specific constant similar to Tom?

• Do you have a predicate "is_car"? If so, you can say "there exists an object y such that Tom has y and y is a car". – Yuval Filmus Dec 17 '20 at 14:07
• @YuvalFilmus No I don't have. This makes me confused, even I am not sure if the universe of discourse is humans or objects like car – Coder Dec 17 '20 at 14:08
• You can't adequately formalize the sentence without a car predicate. – lemontree Dec 17 '20 at 14:55
• y has(Tom,y) doesn't imply Tom has a car. Using the notation you gave, Tom has a car when/iff has(Tom,car). PS "∃y e" says there exists a value that when substituted for y in e gives a true statement. It doesn't say anything directly about anything else existing. – philipxy Dec 18 '20 at 3:23

There is no universal answer. It depends on how you choose to model the universe of discourse you've been assigned to model.

We'd normally expect there to be multiple cars that appear as distinct individuals in the model, and we expect the predicate has to be the relationship that expresses which individual owns which individual object, i.e. between individual persons and individual cars. In that case, if car is a constant, it must denote a particular car, so you'd need other constants, for instance, car2, car3, etcetera, to denote other cars. It's awkward, but it can be done.

So it is valid, but very impractical. In practice, we usually see a predicate is_car(x), as Yuval Filmus suggests, and a couple of individuals for which that predicate holds that stand for the individual cars that exist in the universe of discourse being modelled.

Tom can be a constant representing a particular person, and we can use other constants such as Dick and Harry to represent other persons. Courses in logic tend to do this because they are proper names and they use sentences such as Tom has a car which imply that there is, indeed, exactly one Tom in the universe of discourse, so you can do this.

Once again: this is valid, and probably what your professor wants you to do, but it is highly impractical.

In practical applications of logic, e.g. when designing a relational database, we can't usually assume that names such as Tom uniquely identify a person, so we model names not as constants, but as predicates.

For instance, we may use a predicate has_first_name(x,y), and the statement Tom has a car can then be expressed as

$$\exists! x: \mbox{has_first_name}(x,\mbox{"Tom"}) \\ \wedge \\ \exists x: \mbox{has_first_name}(x,\mbox{"Tom"}) \wedge \exists y: \mbox{is_car}(y) \wedge \mbox{has}(x,y)$$

PS: Mars points out a more serious issue with using constants for cars: they always refer to a particular car, and Tom has a car doesn't - you could only express it by a statement that lists every individual car, like this: $$\mbox{has}(\mbox{Tom},\mbox{car}) \vee \mbox{has}(\mbox{Tom},\mbox{car2}) \vee \ldots$$.

I agree with reinierpost's answer and with Yuval Filmus's and lemontree's comments. Here are some additional points.

In English "a car" in "Tom has a car" usually means that there is some car that Tom has. "a car" is not a name of a specific car. That is, it is not a constant. You could treat "car" as a name of an object, and give the answer as "has(Tom,car)", but that would not be a correct representation of the English sentence you provided. (If the phrase was "the car", it would be possible to treat that as a constant, although the semantics of this phrase is actually more complex.)

If instead you just write "$$\exists y$$ has(Tom, y)", that just means that Tom has something. It says nothing about cars. So you really do need an "is_car" predicate, as Yuval Filmus and lemontree suggested, to capture the meaning of the English sentence containing "a car".

In the preceding comments, I assumed that your domain contains at least persons and cars, and that "Tom" is the name of a person.

However, if you specified that the domain consisted only of cars, then "$$\exists y$$ has(Tom, y)" would capture the meaning of "Tom has a car": The formal representation would still only say that Tom has something, but since the only things are cars, that means that Tom has a car. Note though that in this case, since all things are cars, "Tom" would be the name of a car. So "$$\exists y$$ has(Tom, y)" would say, of a car named "Tom", that it owns a car. (That wouldn't usually make sense to us, because in our society we usually assume that cars can't own cars, but in this representation we would assume that they can. I suppose that might make sense in the world of the Cars animated movies, but I haven't seen them, so I don't know whether the characters in the films ever engage in automotive slavery.)

• Helpful answer, thanks. So based on what you explained even if we define a universe discourse specifically for cars, still it doesn't make sense? – Coder Dec 17 '20 at 17:04
• If the universe of discourse contains only cars, and you specify that "Tom" is a constant that refers to one of the cars, then $\exists y$ has(Tom,y) does make sense, in this respect: the formal representation captures the literal meaning of the English. It turns out that this statement conflicts with other assumptions we have about what can own what. However, if we don't represent those assumptions in our formal system, then there is no contradiction. One could add a statement $\neg\exists x \exists y$ has(x,y), i.e. no car owns a car. This would contradict $\exists y$ has(Tom,y). – Mars Dec 17 '20 at 17:18
• "Makes sense" is vague: makes sense in what respect? I added the comment about cars owning cars not making sense because I worried that it could be confusing for me to say that Tom the car owns a car, but in terms of the formal representation, it does make sense, on its own. We try to capture assumptions about meaning with formal logic, but simple uses of formal logic can't capture the full range of what we know and understand. Trying to do that requires a formal system with many statements, more advanced logic techniques (some still being developed) and, ultimately, AI. – Mars Dec 17 '20 at 17:30
• Also, I was wrong to say that $\neg\exists y \exists y$ has($x,y$) and $\exists y$ has(Tom, y) contradict each other. They are merely inconsistent. – Mars Dec 17 '20 at 17:44
• Multiple universes is pretty unusual. I've never heard of it. You could do it, but you'd have to have rules for what parts of an expression refer to what universes. Sometimes people define certain quantifiers as restricted to certain subsets of a single universe. This is just a shorthand for using predicates, though. (If this is an introductory class, do not try anything with restricted quantifiers or multiple universes--if that is even a thing--unless your professor or textbook has introduced that stuff.) – Mars Dec 17 '20 at 22:03