Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

56
CPU3243 Logic Programming Budditha Hettige Department of Computer Science Predicate Logic

Transcript of Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Page 1: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

CPU3243

Logic Programming

Budditha Hettige

Department of Computer Science

Predicate Logic

Page 2: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Propositional Logic ???

• Example 1

– If X is married to Y, then Y is married to X.

– If X is west of Y, and Y is west of Z, then X is west of Z.

• Example 2

– If Sarah is a student, then he is hardworking.

If Ajith is a student, then he is hardworking

Many ideas cannot be expressed

in propositional logic.

Page 3: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

3

First-order Logic

• This is also known as predicate logic

• Address the issues of propositional logic

• Predicates are defined as objects with properties– E.g. fruit(mango).

– fruit is name of the predicate and mango is a property

• Using a variable for a property we can achieve generalization

• Predicate name tells us about what the predicate represents

• Quantifiers can be used to define the scope of variables

Page 4: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

4

Syntax of first-order logic

• Sentence AtomicSentence |Sentence Connective Sentence |Quantifier Variable Sentence

| Sentence

• AtomicSentences Predicate(Term, ....)Term =Term

• Term Function (Term, …)

| Constant

| Variable

• Connectives |||

• Quantifier |

• Constant A|X1|Asoka| ….

• Variable a|x| ….

• Predicate Before|Hascolour|Raining|.....

• Functions Mother|….

Page 5: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

5

Quantifiers in FOL

• x universal quantifiers

– Read as for all x

• x – existential quantifier

– Read as for some, there exists

Page 6: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

More About Quantifiers

7/11/2015 Budditha Hettige ([email protected]) 6

Page 7: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

7

Examples

• Everything is fine x fine(x)

• Something is expensive x expensive(x)

• All dogs are animal

– x dog(x) animal(x)

• Some dogs are friendly

– x dog(x) friendly(x)

• Nothing is fine x fine(x)

• Not everything is fine x fine(x)

Page 8: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

8

Order of quantifiers

• xy P(x,y) yx P(x,y)

• x y P(x,y) y x P(x,y)

• xy P(x,y) yx P(x,y)

Page 9: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

9

Universal quantifiers 1

• Represented by an upside-down A:

– It means “for all”

– Let P(x) = x+1 > x

• We can state the following:

– x P(x)

– English translation: “for all values of x, P(x) is true”

– English translation: “for all values of x, x+1>x is true”

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 10: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

10

Universal quantifiers 2

• But is that always true?

– x P(x)

• Let x = the character ‘a’

– Is ‘a’+1 > ‘a’?

• Let x = the state of Virginia

– Is Virginia+1 > Virginia?

• You need to specify your universe!

– What values x can represent

– Called the “domain”

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 11: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

11

Universal quantifiers 3

• Let the universe be the real numbers.– Then, x P(x) is true

• Let P(x) = x/2 < x– Not true for the negative numbers!

– Thus, x P(x) is false• When the domain is all the real numbers

• In order to prove that a universal quantification is true, it must be shown for ALL cases

• In order to prove that a universal quantification is false, it must be shown to be false for only ONE case

Page 12: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

12

Existential quantification 1

• Represented by an bacwards E:

– It means “there exists”

– Let P(x) = x+1 > x

• We can state the following:

– x P(x)

– English translation: “there exists (a value of) x such that P(x) is true”

– English translation: “for at least one value of x, x+1>x is true”

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 13: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

13

Existential quantification 2

• Note that you still have to specify your universe

– If the universe we are talking about is all the

states in the US, then x P(x) is not true

• Let P(x) = x+1 < x

– There is no numerical value x for which x+1<x

– Thus, x P(x) is false

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 14: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

14

Existential quantification 3

• Let P(x) = x+1 > x

– There is a numerical value for which x+1>x

• In fact, it’s true for all of the values of x!

– Thus, x P(x) is true

• In order to show an existential quantification is

true, you only have to find ONE value

• In order to show an existential quantification is

false, you have to show it’s false for ALL values

Page 15: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

15

Binding variables

• Let P(x,y) be x > y

• Consider: x P(x,y)

– This is not a proposition!

– What is y?

• If it’s 5, then x P(x,y) is false

• If it’s x-1, then x P(x,y) is true

• Note that y is not “bound” by a quantifier

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 16: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

16

Binding variables 2

• (x P(x)) Q(x)

– The x in Q(x) is not bound; thus not a proposition

• (x P(x)) (x Q(x))

– Both x values are bound; thus it is a proposition

• (x P(x) Q(x)) (y R(y))

– All variables are bound; thus it is a proposition

• (x P(x) Q(y)) (y R(y))

– The y in Q(y) is not bound; this not a proposition

Page 17: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

17

Negating quantifications

• Consider the statement:

– All students in this class have red hair

• What is required to show the statement is false?

– There exists a student in this class that does NOT have

red hair

• To negate a universal quantification:

– You negate the propositional function

– AND you change to an existential quantification

– ¬x P(x) = x ¬P(x)

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 18: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

18

Negating quantifications 2

• Consider the statement:

– There is a student in this class with red hair

• What is required to show the statement is false?

– All students in this class do not have red hair

• Thus, to negate an existential quantification:

– Tou negate the propositional function

– AND you change to a universal quantification

– ¬x P(x) = x ¬P(x)

Page 19: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

19

Translating from English

• Consider “For every student in this class, that

student has studied calculus”

• Rephrased: “For every student x in this class, x

has studied calculus”

– Let C(x) be “x has studied calculus”

– Let S(x) be “x is a student”

• x C(x)

– True if the universe of discourse is all

students in this classSource: Predicates and Quantifiers, Aaron Bloomfield

Page 20: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

20

Translating from English 2

• What about if the unvierse of discourse is all

students (or all people?)

– x (S(x)C(x))

• This is wrong! Why?

– x (S(x)→C(x))

• Another option:

– Let Q(x,y) be “x has stuided y”

– x (S(x)→Q(x, calculus))

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 21: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

21

Translating from English 3

• Consider:

– “Some students have visited Mexico”

– “Every student in this class has visited Canada or

Mexico”

• Let:

– S(x) be “x is a student in this class”

– M(x) be “x has visited Mexico”

– C(x) be “x has visited Canada”

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 22: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

22

Translating from English 4

• Consider: “Some students have visited Mexico”

– Rephrasing: “There exists a student who has visited

Mexico”

• x M(x)

– True if the universe of discourse is all students

• What about if the universe of discourse is all

people?

– x (S(x) → M(x))

• This is wrong! Why?

– x (S(x) M(x))Source: Predicates and Quantifiers, Aaron Bloomfield

Page 23: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

23

Translating from English 5

• Consider: “Every student in this class has visited

Canada or Mexico”

• x (M(x)C(x)

– When the universe of discourse is all students

• x (S(x)→(M(x)C(x))

– When the universe of discourse is all people

• Why isn’t x (S(x)(M(x)C(x))) correct?

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 24: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

24

Translating from English 6

• Note that it would be easier to define

V(x, y) as “x has visited y”

– x (S(x) V(x,Mexico))

– x (S(x)→(V(x,Mexico) V(x,Canada))

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 25: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

25

Translating from English 7

• Translate the statements:– “All hummingbirds are richly colored”

– “No large birds live on honey”

– “Birds that do not live on honey are dull in color”

– “Hummingbirds are small”

• Assign our propositional functions– Let P(x) be “x is a hummingbird”

– Let Q(x) be “x is large”

– Let R(x) be “x lives on honey”

– Let S(x) be “x is richly colored”

• Let our universe of discourse be all birds

Source: Predicates and Quantifiers, Aaron Bloomfield

Page 26: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

26

Translating from English 8

• Our propositional functions– Let P(x) be “x is a hummingbird”

– Let Q(x) be “x is large”

– Let R(x) be “x lives on honey”

– Let S(x) be “x is richly colored”

• Translate the statements:– “All hummingbirds are richly colored”

• x (P(x)→S(x))

– “No large birds live on honey”

• ¬x (Q(x) R(x))

• Alternatively: x (¬Q(x) ¬R(x))

– “Birds that do not live on honey are dull in color”

• x (¬R(x) → ¬S(x))

– “Hummingbirds are small”

• x (P(x) → ¬Q(x))Source: Predicates and Quantifiers, Aaron Bloomfield

Page 27: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

27

Negating multiple quantifiers 2

• Consider ¬(xy P(x,y)) = xy ¬P(x,y)

– The left side is saying “for all x, there exists a y such

that P is true”

– To disprove it (negate it), you need to show that “there

exists an x such that for all y, P is false”

• Consider ¬(xy P(x,y)) = xy ¬P(x,y)

– The left side is saying “there exists an x such that for

all y, P is true”

– To disprove it (negate it), you need to show that “for

all x, there exists a y such that P is false”

Page 28: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

28

Translating between English and

quantifiers

• The product of two negative integers is positive– xy ((x<0) (y<0) → (xy > 0))

– Why conditional instead of and?

• The average of two positive integers is positive– xy ((x>0) (y>0) → ((x+y)/2 > 0))

• The difference of two negative integers is not necessarily negative– xy ((x<0) (y<0) (x-y≥0))

– Why and instead of conditional?

• The absolute value of the sum of two integers does not exceed the sum of the absolute values of these integers– xy (|x+y| ≤ |x| + |y|)

Page 29: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

29

Translating between English and

quantifiers

• xy (x+y = y)

– There exists an additive identity for all real numbers

• xy (((x≥0) (y<0)) → (x-y > 0))

– A non-negative number minus a negative number is

greater than zero

• xy (((x≤0) (y≤0)) (x-y > 0))

– The difference between two non-positive numbers is

not necessarily non-positive (i.e. can be positive)

• xy (((x≠0) (y≠0)) ↔ (xy ≠ 0))

– The product of two non-zero numbers is non-zero if

and only if both factors are non-zero

Page 30: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

30

Rules of inference for the

universal quantifier

• Assume that we know that x P(x) is true

– Then we can conclude that P(c) is true

• Here c stands for some specific constant

– This is called “universal instantiation”

• Assume that we know that P(c) is true for any

value of c

– Then we can conclude that x P(x) is true

– This is called “universal generalization”

Page 31: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

31

Rules of inference for the existential

quantifier

• Assume that we know that x P(x) is true

– Then we can conclude that P(c) is true for

some value of c

– This is called “existential instantiation”

• Assume that we know that P(c) is true for some

value of c

– Then we can conclude that x P(x) is true

– This is called “existential generalization”

Page 32: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Example

7/11/2015 Budditha Hettige ([email protected]) 32

Page 33: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Write a corresponding sentence in FOL

7/11/2015 Budditha Hettige ([email protected]) 33

Source: Prof. Leslie Pack Kaelbling, Techniques in Artificial IntelligenceURL:https://courses.csail.mit.edu/6.825/fall04/

Page 34: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Answers

7/11/2015 Budditha Hettige ([email protected]) 34

Source: Prof. Leslie Pack Kaelbling, Techniques in Artificial IntelligenceURL:https://courses.csail.mit.edu/6.825/fall04/

Page 35: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

35

Conversion procedure FOL to CNF

step 1: remove all “=>” and “<=>” operators

(using P => Q ~P v Q and P <=> Q P => Q ^ Q => P)

step 2: move all negation signs to individual predicates

(using de Morgan’s law)step 3: remove all existential quantifiers y

case 1: y is not in the scope of any universally quantified variable, then replace all occurrences of y by a skolem constant

case 2: if y is in scope of universally quantified variables x1, ... xi,then replace all occurrences of y by a skolem function

with x1, ... xi are its argument

step 4: remove all universal quantifiers x (with the understanding that all remaining variables are universally quantified)

step 5: convert the sentence into CNF (using distribution law, etc) step 6: use parenthesis to separate all disjunctions, then drop all v’s

and ^’s

Page 36: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

36

Example – FOL to CNF

• Consider the sentence “every one who loves all animals is loved by someone”x [y animal(y)loves(x,y)] [y loves(y,x)]

• Using S1 (note replacing P Q with PQ)

x [ y animal(y)loves(x,y)][y loves(y,x)]

• Using S2 push inwards

x [y (animal(y)loves(x,y))][y loves(y,x)]

x [y animal(y)loves(x,y))][y loves(y,x)]

x [y animal(y)loves(x,y))][y loves(y,x)]

Page 37: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

37

Example – FOL to CNF…

• Use S3 to rename variable not to appear twice

x [y animal(y)loves(x,y))][z loves(z,x)]

• Use S4 to introduce constants to existential quantifiers

x [animal(A)loves(x,A))]loves(B,x)

Note: this A can be a F(x) and B is G(x) as they depend on x

x [animal(F(x))loves(x,F(x)))]loves(G(x),x)

Page 38: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

38

Example – FOL to CNF…

• Use S5

[animal(F(x))loves(x,F(x)))]loves(G(x),x)

• Use S6

[animal(F(x))loves(G(x),x)]

[loves(x,F(x)))loves(G(x),x)]

Page 39: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Examples

7/11/2015 Budditha Hettige ([email protected]) 39

Source: Prof. Leslie Pack Kaelbling, Techniques in Artificial Intelligence, https://courses.csail.mit.edu/6.825/fall04/

Page 40: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Answers

7/11/2015 Budditha Hettige ([email protected]) 40

Source: Prof. Leslie Pack Kaelbling, Techniques in Artificial IntelligenceURL:https://courses.csail.mit.edu/6.825/fall04/

Page 41: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Method of contradiction

Source: Aaron Bloomfield, Methods of Proof

Page 42: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Example 1

– “It is not sunny this afternoon and it is colder than yesterday”

– “We will go swimming only if it is sunny”

– “If we do not go swimming, then we will take a canoe trip”

– “If we take a canoe trip, then we will be home by sunset”

• Does this imply that “we will be home by sunset”?

7/11/2015 Budditha Hettige ([email protected]) 42

¬p q

r → p

¬r → s

s → t

t

Page 43: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Example 1

7/11/2015 Budditha Hettige ([email protected]) 43

1. ¬p q 1st hypothesis

2. ¬p Simplification using step 1

3. r → p 2nd hypothesis

4. ¬r Modus tollens using steps 2 & 3

5. ¬r → s 3rd hypothesis

6. s Modus ponens using steps 4 & 5

7. s → t 4th hypothesis

8. t Modus ponens using steps 6 & 7

Page 44: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

Example 1

7/11/2015 Budditha Hettige ([email protected]) 44

• We showed that:

– [(¬p q) (r → p) (¬r → s) (s → t)] → t

– That when the 4 hypotheses are true, then the

implication is true

– In other words, we showed the above is a tautology!

• To show this, enter the following into the truth

table generator at

((~P ^ Q) ^ (R => P) ^ (~R => S) ^ (S => T)) => T

Page 45: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

More rules of inference

7/11/2015 Budditha Hettige ([email protected]) 45

• Conjunction: if p and q are true separately, then pq is true

• Disjunctive syllogism: If pq is true, and p is false, then q must be true

• Resolution: If pq is true, and ¬pr is true, then qr must be true

• Hypothetical syllogism: If p→q is true, and q→r is true, then p→r must be true

Page 46: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

46

Example 2

• Given the hypotheses:– “Linda, a student in this class, owns

a red convertible.”

– “Everybody who owns a red convertible has gotten at least one speeding ticket”

• Can you conclude: “Somebody in this class has gotten a speeding ticket”?

C(Linda)R(Linda)

x (R(x)→T(x))

x (C(x)T(x))

Page 47: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

47

Example 2

1. x (R(x)→T(x)) 3rd hypothesis

2. R(Linda) → T(Linda) Universal instantiation using step 1

3. R(Linda) 2nd hypothesis

4. T(Linda) Modes ponens using steps 2 & 3

5. C(Linda) 1st hypothesis

6. C(Linda) T(Linda) Conjunction using steps 4 & 5

7. x (C(x)T(x)) Existential generalization using

step 6

Thus, we have shown that “Somebody in this class has gotten a speeding ticket”

Page 48: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

48

Example 2

• Given the hypotheses:

– “There is someone in this class who has been to France”

– “Everyone who goes to France visits the Louvre”

• Can you conclude: “Someone in this class has visited the Louvre”?

x (C(x)F(x))

x (F(x)→L(x))

x (C(x)L(x))

Page 49: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

49

Example 2

1. x (C(x)F(x)) 1st hypothesis

2. C(y) F(y) Existential instantiation using step 1

3. F(y) Simplification using step 2

4. C(y) Simplification using step 2

5. x (F(x)→L(x)) 2nd hypothesis

6. F(y) → L(y) Universal instantiation using step 5

7. L(y) Modus ponens using steps 3 & 6

8. C(y) L(y) Conjunction using steps 4 & 7

9. x (C(x)L(x)) Existential generalization using

step 8

Thus, we have shown that “Someone in this class has visited the Louvre”

Page 50: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

50

Resolution Proof - Example

• Consider the exampleEvery one who loves all animals is loved by someone.

Anyone who kills an animal is loved by no one

Jack loves all animals

Either Jack or Curiosity killed the cat, who is named Tuna

Did Curiosity kill the cat?

• Write these sentences in predicate logic (FOL)

• Covert them into corresponding CNF

Page 51: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

51

Writing in FOL

A. x [y animal(y)loves(x,y)] [y loves(y,x)]

B. x [y animal(y) kills(x,y)] [z loves(z,x)]

C. x animal(x) loves(Jack,x)

D. kills(Jack,Tuna) kills(Curiosity, Tuna)

E. Cat(Tuna)

F. x cat(x) animal(x)

G. kills(Curiosity, Tuna)

Note that we have assumed that Curiosity did not kills Tuna, as we

prove this using method of contradiction

Page 52: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

52

Corresponding CNF

A1 animal(F(x)) loves(G(x), x)

A2 loves(x,F(x)) loves(G(x), x)

B aniaml(y)kills(x,y) loves(z,x)

C aniaml(x)loves(Jack,x)

D kills(Jack, Tuna) kills(Curiosity, Tuna)

E cat(Tuna)

F cat(x) animal(x)

G kills(Curiosity, Tuna)

Page 53: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

53

Example of Automatic Theorem Proof:Did Curiosity kill the cat

• Jack owns a dog. Every dog owner is an animal lover. No animal lover kills an animal. Either Jack or Curiosity killed the cat, who is named Tuna. Did Curiosity kill the cat?

• These can be represented as follows:

A. (x) Dog(x) ^ Owns(Jack,x)

B. (x) ((y) Dog(y) ^ Owns(x, y)) => AnimalLover(x)

C. (x) AnimalLover(x) => (y) Animal(y) => ~Kills(x,y)

D. Kills(Jack,Tuna) v Kills(Curiosity,Tuna)

E. Cat(Tuna)

F. (x) Cat(x) => Animal(x)Q. Kills(Curiosity, Tuna)

Page 54: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

54

• Convert to clause form

A1. (Dog(D)) /* D is a skolem constant */

A2. (Owns(Jack,D))

B. (~Dog(y), ~Owns(x, y), AnimalLover(x))

C. (~AnimalLover(x), ~Animal(y), ~Kills(x,y))

D. (Kills(Jack,Tuna), Kills(Curiosity,Tuna))

E. Cat(Tuna)

F. (~Cat(x), Animal(x))

• Add the negation of query:

Q: (~Kills(Curiosity, Tuna))

Page 55: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

55

• The resolution refutation proofR1: Q, D, {}, (Kills(Jack, Tuna))

R2: R1, C, {x/Jack, y/Tuna},

(~AnimalLover(Jack), ~Animal(Tuna))

R3: R2, B, {x/Jack}, (~Dog(y), ~Owns(Jack, y),

~Animal(Tuna))

R4: R3, A1, {y/D}, (~Owns(Jack, D),

~Animal(Tuna))

R5: R4, A2, {}, (~Animal(Tuna))

R6: R5, F, {x/Tuna}, (~Cat(Tuna))

R7: R6, E, {} ()

Page 56: Predicate Logic - WordPress.com · • The product of two negative integers is positive – x y ((x

56

Proof by contradictioncat(Tuna) cat(x) animal(x) kills(Jack, Tuna)kills(Curiosity, Tuna)

kills(Curiosity, Tuna)

animal(Tuna)

kills(Jack, Tuna)

aniaml(y)kills(x,y) loves(z,x)

kills(x,Tuna)loves(z,x)

loves(z,Jack)

loves(x,F(x)) loves(G(x), x)

aniaml(x)loves(Jack,x)

aniaml(F(Jack)) loves(G(Jack), Jack)

animal(F(x)) loves(G(x), x)

loves(G(Jack), Jack)

loves(z, Jack)

{ }