1 / 48

For Monday

For Monday. Read “lectures” 6,9-12 of Learn Prolog Now: http://www.coli.uni-saarland.de/~kris/learn-prolog-now/ Prolog Handout 2. Exam 1. Next Monday Covers through chapter 9 Topics include: History Agents/Environments Search Logic/Inference No Prolog

Download Presentation

For Monday

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. For Monday • Read “lectures” 6,9-12 of Learn Prolog Now: http://www.coli.uni-saarland.de/~kris/learn-prolog-now/ • Prolog Handout 2

  2. Exam 1 • Next Monday • Covers through chapter 9 • Topics include: • History • Agents/Environments • Search • Logic/Inference • No Prolog • Take home handed out Wednesday, due at the exam

  3. Resolution • Propositional version. {a Ú b, ¬b Ú c} |- a Ú c OR {¬aÞ b, b Þ c} |- ¬a Þ c Reasoning by cases OR transitivity of implication • First­order form • For two literals pj and qk in two clauses • p1Ú ... pj ... Ú pm • q1Ú ... qk ... Ú qn such that q=UNIFY(pj , ¬qk), derive SUBST(q, p1Ú...pj­1Úpj+1...ÚpmÚq1Ú...qk­1 qk+1...Úqn)

  4. Implication form • Can also be viewed in implicational form where all negated literals are in a conjunctive antecedent and all positive literals in a disjunctive conclusion. ¬p1Ú...Ú¬pmÚq1Ú...ÚqnÛ p1Ù... Ù pmÞ q1Ú ...Ú qn

  5. Conjunctive Normal Form (CNF) • For resolution to apply, all sentences must be in conjunctive normal form, a conjunction of disjunctions of literals (a1Ú ...Ú am) Ù (b1Ú ... Ú bn) Ù ..... Ù (x1Ú ... Ú xv) • Representable by a set of clauses (disjunctions of literals) • Also representable as a set of implications (INF).

  6. Example Initial CNF INF P(x) Þ Q(x) ¬P(x) Ú Q(x) P(x) Þ Q(x) ¬P(x) Þ R(x) P(x) Ú R(x) True Þ P(x) Ú R(x) Q(x) Þ S(x) ¬Q(x) Ú S(x) Q(x) Þ S(x) R(x) Þ S(x) ¬R(x) Ú S(x) R(x) Þ S(x)

  7. Resolution Proofs • INF (CNF) is more expressive than Horn clauses. • Resolution is simply a generalization of modus ponens. • As with modus ponens, chains of resolution steps can be used to construct proofs. • Factoring removes redundant literals from clauses • S(A) Ú S(A) -> S(A)

  8. Sample Proof P(w)  Q(w) Q(y)  S(y) {y/w} P(w)  S(w) True  P(x)  R(x) {w/x} True  S(x)  R(x) R(z)  S(z) {x/A, z/A} True  S(A)

  9. Refutation Proofs • Unfortunately, resolution proofs in this form are still incomplete. • For example, it cannot prove any tautology (e.g. PÚ¬P) from the empty KB since there are no clauses to resolve. • Therefore, use proof by contradiction (refutation, reductio ad absurdum). Assume the negation of the theorem P and try to derive a contradiction (False, the empty clause). • (KB Ù ¬P Þ False) Û KB Þ P

  10. Sample Proof P(w)  Q(w) Q(y)  S(y) {y/w} P(w)  S(w) True  P(x)  R(x) {w/x} True  S(x)  R(x) R(z)  S(z) {z/x} S(A)  False True  S(x) {x/A} False

  11. Resolution Theorem Proving • Convert sentences in the KB to CNF (clausal form) • Take the negation of the proposed theorem (query), convert it to CNF, and add it to the KB. • Repeatedly apply the resolution rule to derive new clauses. • If the empty clause (False) is eventually derived, stop and conclude that the proposed theorem is true.

  12. Conversion to Clausal Form • Eliminate implications and biconditionals by rewriting them. p Þ q -> ¬p Ú q p Û q ­> (¬p Ú q) Ù (p Ú ¬q) • Move ¬ inward to only be a part of literals by using deMorgan's laws and quantifier rules. ¬(p Ú q) -> ¬p Ù ¬q ¬(p Ù q) -> ¬p Ú¬q ¬"x p -> $x ¬p ¬$x p -> "x ¬p ¬¬p -> p

  13. Conversion continued • Standardize variables to avoid use of the same variable name by two different quantifiers. "x P(x) Ú$x P(x) -> "x1 P(x1) Ú $x2 P(x2) • Move quantifiers left while maintaining order. Renaming above guarantees this is a truth­preserving transformation. "x1 P(x1) Ú $x2 P(x2) -> "x1$x2 (P(x1) Ú P(x2))

  14. Conversion continued • Skolemize: Remove existential quantifiers by replacing each existentially quantified variable with a Skolem constant or Skolem function as appropriate. • If an existential variable is not within the scope of any universally quantified variable, then replace every instance of the variable with the same unique constant that does not appear anywhere else. $x (P(x) Ù Q(x)) -> P(C1) Ù Q(C1) • If it is within the scope of n universally quantified variables, then replace it with a unique n­ary function over these universally quantified variables. "x1$x2(P(x1) Ú P(x2)) -> "x1 (P(x1) Ú P(f1(x1))) "x(Person(x) Þ$y(Heart(y) Ù Has(x,y))) -> "x(Person(x) Þ Heart(HeartOf(x)) Ù Has(x,HeartOf(x))) • Afterwards, all variables can be assumed to be universally quantified, so remove all quantifiers.

  15. Conversion continued • Distribute Ù over Ú to convert to conjunctions of clauses (aÙb) Ú c -> (aÚc) Ù (bÚc) (aÙb) Ú (cÙd) -> (aÚc) Ù (bÚc) Ù (aÚd) Ù (bÚd) • Can exponentially expand size of sentence. • Flatten nested conjunctions and disjunctions to get final CNF (a Ú b) Ú c -> (a Ú b Ú c) (a Ù b) Ù c -> (a Ù b Ù c) • Convert clauses to implications if desired for readability (¬a Ú ¬b Ú c Ú d) -> a Ù b Þ c Ú d

  16. Sample Clause Conversion "x((Prof(x) Ú Student(x)) Þ($y(Class(y) Ù Has(x,y)) Ù$y(Book(y) Ù Has(x,y)))) "x(¬(Prof(x) Ú Student(x)) Ú($y(Class(y) Ù Has(x,y)) Ù$y(Book(y) Ù Has(x,y)))) "x((¬Prof(x) Ù ¬Student(x)) Ú ($y(Class(y) Ù Has(x,y)) Ù$y(Book(y) Ù Has(x,y)))) "x((¬Prof(x) Ù ¬Student(x)) Ú ($y(Class(y) Ù Has(x,y)) Ù$z(Book(z) Ù Has(x,z)))) "x$y$z((¬Prof(x)Ù¬Student(x))Ú ((Class(y) Ù Has(x,y)) Ù (Book(z) Ù Has(x,z)))) (¬Prof(x)Ù¬Student(x))Ú (Class(f(x)) Ù Has(x,f(x)) Ù Book(g(x)) Ù Has(x,g(x))))

  17. Clause Conversion (¬Prof(x)Ù¬Student(x))Ú (Class(f(x)) Ù Has(x,f(x)) Ù Book(g(x)) Ù Has(x,g(x)))) (¬Prof(x) Ú Class(f(x))) Ù (¬Prof(x) Ú Has(x,f(x))) Ù (¬Prof(x) Ú Book(g(x))) Ù (¬Prof(x) Ú Has(x,g(x))) Ù (¬Student(x) Ú Class(f(x))) Ù (¬Student(x) Ú Has(x,f(x))) Ù (¬Student(x) Ú Book(g(x))) Ù (¬Student(x) Ú Has(x,g(x))))

  18. Sample Resolution Problem • Jack owns a dog. • Every dog owner is an animal lover. • No animal lover kills an animal. • Either Jack or Curiosity killed Tuna the cat. • Did Curiosity kill the cat?

  19. In Logic Form 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) Ú Kills(Cursiosity,Tuna) E) Cat(Tuna) F) "x(Cat(x) Þ Animal(x)) Query: Kills(Curiosity,Tuna)

  20. In Normal Form A1) Dog(D) A2) Owns(Jack,D) B) Dog(y) Ù Owns(x,y) Þ AnimalLover(x) C) AnimalLover(x) Ù Animal(y) Ù Kills(x,y) Þ False D) Kills(Jack,Tuna) Ú Kills(Curiosity,Tuna) E) Cat(Tuna) F) Cat(x) Þ Animal(x) Query: Kills(Curiosity,Tuna) Þ False

  21. Resolution Proof

  22. Logic Programming • Also called declarative programming • We write programs that say what is to be the result • We don’t specify how to get the result • Based on logic, specifically first order predicate calculus

  23. Prolog • Programming in Logic • Developed in 1970’s • ISO standard published in 1996 • Used for: • Artificial Intelligence: expert systems, natural language processing, machine learning, constraint satisfaction, anything with rules • Logic databases • Prototyping

  24. Bibliography • Clocksin and Mellish, Programming in Prolog • Bratko, Prolog Programming for Artificial Intelligence • Sterling and Shapiro, The Art of Prolog • O’Keefe, The Craft of Prolog

  25. Working with Prolog • You interact with the Prolog listener. • Normally, you operate in a querying mode which produces backward chaining. • New facts or rules can be entered into the Prolog database either by consulting a file or by switching to consult mode and typing them into the listener.

  26. Prolog and Logic • First order logic with different syntax • Horn clauses • Does have extensions for math and some efficiency.

  27. The parent Predicate • Definition of parent/2 (uses facts only)%parent(Parent,Child).parent(pam, bob).parent(tom, liz).parent(bob, ann).parent(bob, pat).parent(pat, jim).

  28. Constants in Prolog • Two kinds of constants: • Numbers (much like numbers in other languages) • Atoms • Alphanumeric strings which begin with a lowercase letter • Strings of special characters (usually used as operators) • Strings of characters enclosed in single quotes

  29. Variables in Prolog • Prolog variables begin with capital letters. • We make queries by using variables: ?- parent(bob,X). X = ann • Prolog variables are logic variables, not containers to store values in. • Variables become bound to their values. • The answers from Prolog queries reflect the bindings.

  30. Query Resolution • When given a query, Prolog tries to find a fact or rule which matches the query, binding variables appropriately. • It starts with the first fact or rule listed for a given predicate and goes through the list in order. • If no match is found, Prolog returns no.

  31. Backtracking • We can get multiple answers to a single Prolog query if multiple items match: ?- parent(X,Y). • We do this by typing a semi-colon after the answer. • This causes Prolog to backtrack, unbinding variables and looking for the next match. • Backtracking also occurs when Prolog attempts to satisfy rules.

  32. Rules in Prolog • Example Prolog Rule: offspring(Child, Parent) :- parent(Parent, Child). • You can read “:-” as “if” • Variables with the same name must be bound to the same thing.

  33. Rules in Prolog • Suppose we have a set of facts for male/1 and female/1 (such as female(ann).). • We can then define a rule for mother/2 as follows:mother(Mother, Child) :- parent(Mother, Child), female(Mother). • The comma is the Prolog symbol for and. • The semi-colon is the Prolog symbol for or.

  34. Recursive Predicates • Consider the notion of an ancestor. • We can define a predicate, ancestor/2, using parent/2 if we make ancestor/2 recursive.

  35. Lists in Prolog • The empty list is represented as []. • The first item is called the head of the list. • The rest of the list is called the tail.

  36. List Notation • We write a list as: [a, b, c, d] • We can indicate the tail of a list using a vertical bar: L = [a, b, c,d], L = [Head | Tail], L = [ H1, H2 | T ].Head = a, Tail = [b, c, d], H1 = a, H2 = b, T = [c, d]

  37. Some List Predicates • member/2 • append/3

  38. Try It • reverse(List,ReversedList) • evenlength(List) • oddlength(List)

  39. The Anonymous Variable • Some variables only appear once in a rule • Have no relationship with anything else • Can use _ for each such variable

  40. Arithmetic in Prolog • Basic arithmetic operators are provided for by built-in procedures: +, -, *, /, mod, // • Note carefully: ?- X = 1 + 2. X = 1 + 2 ?- X is 1 + 2. X = 3

  41. Arithmetic Comparison • Comparison operators: > < >= =< (note the order: NOT <=) =:= (equal values) =\= (not equal values)

  42. Arithmetic Examples • Retrieving people born 1950-1960: ?- born(Name, Year), Year >= 1950, Year =< 1960. • Difference between = and =:= ?- 1 + 2 =:= 2 + 1. yes ?- 1 + 2 = 2 + 1. no ?- 1 + A = B + 2. A = 2 B = 1

  43. Length of a List • Definition of length/2length([], 0).length([_ | Tail], N) :- length(Tail, N1), N is 1 + N1. • Note: all loops must be implemented via recursion

  44. Counting Loops • Definition of sum/3sum(Begin, End, Sum) :- sum(Begin, End, Begin, Sum).sum(X, X, Y, Y).sum(Begin, End, Sum1, Sum) :- Begin < End, Next is Begin + 1, Sum2 is Sum1 + Next, sum(Next, End, Sum2, Sum).

  45. The Cut (!) • A way to prevent backtracking. • Used to simplify and to improve efficiency.

  46. Negation • Can’t say something is NOT true • Use a closed world assumption • Not simply means “I can’t prove that it is true”

  47. Dynamic Predicates • A way to write self-modifying code, in essence. • Typically just storing data using Prolog’s built-in predicate database. • Dynamic predicates must be declared as such.

  48. Using Dynamic Predicates • assert and variants • retract • Fails if there is no clause to retract • retractall • Doesn’t fail if no clauses

More Related