Hello,
while studying First Order Logic some of my results are a little different from the results in the book.

Can you please tell me if they are equivalement or why mine does not work?

Since we dont have the sybols, the following will be used:
* Universal = A
* Existential = E
* Negation = Not

Example:
"Jack owns a dog"
Ex dog(x) AND owns(jack,x)
"Jack doesn't own a dog"
Not Ex dot(x) ANd owns(jack, x)


"Every dog owner is an animal lover"

Mine:
Ax Ey dog(y) AND onws(x,y) => animallover(x)

Book:
Ax (Ey Dog(y) AND Owns(x,y))=>AnimalLover(x)

- This is almost equal... are the () significant?

"No animal lover kills an animal."

Mine:
Not Ex Ay animal_lover(x) AND animal(y) AND kills(x, animal)

Books:
Ax animal_lover(x) => Ay animal(y) => not kills(x,y)

- This differs that I just use ANDs and no => (implication)


Another question:

when should we use SKOLEM functions and when should we use skolem constants?

Thanks.

Since you already have the textbook's answers...

"Every dog owner is an animal lover"

Mine:
Ax Ey dog(y) AND onws(x,y) => animallover(x)

Book:
Ax (Ey Dog(y) AND Owns(x,y))=>AnimalLover(x)

- This is almost equal... are the () significant?

They're significant for readability. The book's solution makes it much clearer that both a dog existing and X owning that dog are necessary to X being an animal lover.

Your solution can be read that way, but if you group things differently, i.e., (Ax Ey dog(y)) AND (Owns(x,y) => AnimalLover(x)) , it comes out saying that for every X there exists a dog Y, and if X owns Y then X is an animal lover. The statement still establishes that owning a dog makes you a dog lover, but it also implies the existence of at least one dog if any X-es exist, which isn't something the original statement claims.

Maybe precedence rules take care of this ambiguity, but I recommend using parentheses wherever someone could get confused. It can't hurt.

"No animal lover kills an animal."

Mine:
Not Ex Ay animal_lover(x) AND animal(y) AND kills(x, animal)

Books:
Ax animal_lover(x) => Ay animal(y) => not kills(x,y)

- This differs that I just use ANDs and no => (implication)

Translating back to English...

Book's: "For all X, if X is an animal lover, then for all Y, if Y is an animal, then Y is something that X does not kill."

Yours: "There is no X such that for all Y, X is an animal lover, Y is an animal, and X kills 'animal'." It isn't very clear what you mean by this statement. You might look at the original statement from an if/then perspective--anywhere you can say "if A, then B" you can write "A => B"


It might help if you first translate the English statement into another English statement that uses "for all", "there exists", "if ... then ...", &c. instead, and then translating the appropriate phrases from that statement into the appopriate logic symbols.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.