1 / 27

Logic Programming

Explore the practical applications of logic programming and automated reasoning, including first-order logic, monotonicity, resolution-based automated reasoning, and negation as finite failure.

ablythe
Download Presentation

Logic Programming

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. Logic Programming Automated Reasoning in practice

  2. First order logic is monotone: T ’ |= T F2 F1 F3 G • But: people seldom reason monotonically ! Birds fly + Fred is a bird Fred flies + Fred is a penguin Motivation: monotonicity

  3. Default reasoning: • Is a form of reasoning that we’d like to use permanently • otherwise the rules are far too complex! • Is usually supported by hierarchy, inheritance and exceptions in OOP • also an early AI-formalism • CANNOT be expressed in FOL • independent on the knowledge representation !! • CAN be expressed in some FOL extensions • non-monotone logics • the simplest one of those is … …

  4. Logic Programming • Resolution-based automated reasoning: • restricted to Horn clauses • restricted to backwards linear resolution • BUT: with 3 important new extensions: • return Answer Substitutions • Least-model semanticsinstead of standard FOL model semantics • Extending Horn clause logic with Negation as Finite Failure

  5. Answer substitutions The link to programming

  6. anc(x,y)  parent(x,y) (1) anc(x,y)  parent(x,z)  anc(z,y) (2) parent(A,B) (3) parent(B,C) (4) false  anc(u,v) (2) {u/x1,v/y1} false  parent(x1,z1)  anc(z1,y1) Answer: Yes, u v anc(u,v) (3) {x1/A,z1/B} false  anc(B,y1) (1) {x2/B, y2/y1} false  parent(B,y1) (4) {y1/C} false  Answer substitutions false  anc(u,v) That is: u = A and v = C (composition of all mgu’s applied to the goal variables)

  7. anc(x,y)  parent(x,y) (1) anc(x,y)  parent(x,z)  anc(z,y) (2) parent(A,B) (3) parent(B,C) (4) false  anc(u,v) (1) {u/x1,v/y1} false  parent(x1,y1) (3) {x1/A,y1/B} false  (4) {x1/B,y1/C} false  And computes ALL answers false  anc(u,v) The third answer: u = B and v = C Another answer: u = A and v = B

  8. By computing answer substitutions Logic Programming serves as a de basis for a number of “general purpose” programming languages. Logic PROGRAMMING • Prolog, Mercury, XSB, … • with an efficiency comparable with C ! • and even faster for some programs.

  9. Example arithmetic: double_plus_1(x,y)  y is 2*x + 1 false  double_plus_1(3,z) Yes: z=7 false  double_plus_1(2,5) Yes • Example lists: append([], list, list)  append([x|list1], list2, [x|list3])  append(list1, list2, list3) false  append([1,2], [3,4,5], z) Yes: z= [1,2,3,4,5] false  append([1,2], y, [1,2,3]) Yes: y= [3] false  append(x, y, [1,2]) Yes: x = [], y = [1,2] x = [1], y = [2] … Practical programming?

  10. Least model semantics Specify in a more compact way

  11. Example: a database: celebrity(Crabé) celebrity(Jambers) celebrity(Peeters) celebrity(Lisa) celebrity(Tieleman) celebrity(Samson) • Is DeSchreye a celebrity ?? false  celebrity(DeSchreye) Least model semantics • We get no proof of inconsistency ! • FOL semantics says:celebrity(DeSchreye)is not logically entailed, thus: we do not know if it is true or not! • Least model semantics says: ~ celebrity(DeSchreye)

  12. What are the atomic consequences of theory T? model 2 T model 3 ~s ~r p model 1 q ~q s Formally: the idea • In FOL: Consequences are in the intersection: p en ~r. We do not know anything about the truth of q and s. • In LP: Consequences are in the intersection: p en ~r. Other predicates are NOT true: ~q and ~s.

  13. The logic program: celebrity(Crabé) celebrity(Jambers) celebrity(Peeters) celebrity(Lisa) celebrity(Tieleman) celebrity(Samson) • is equivalent to the infinite FOL theory: celebrity(Crabé) celebrity(Jambers) celebrity(Peeters) ~celebrity(DeSchreye) ~celebrity(Janssens) … celebrity(Lisa) celebrity(Tieleman) celebrity(Samson) ~celebrity(Cobain) ~celebrity(Dali) … • or also to: x celebrity(x)  (x = Crabé)  (x = Jambers)  (x = Peeters)  (x = Lisa)  ( x = Tieleman)  (x = Samson) Relation with FOL

  14. The “closed” assumption • Logic programming provides a compact way to express ‘complete knowledge’ on some subject. • If you do not say that something is true, than it is false. • The Closed World Assumption ! • (= everything not entailed by the theory is false) • In other words: Logic Programming supports formulating definitionsof the concepts. • Not just state what is true about these concepts (=FOL) !

  15. How relevant is the change of semantics? • In FOL: • {smart(Kelly)}implies neitherstrong(Kelly)nor~strong(Kelly) • In LP: {smart(Kelly)}implies~strong(Kelly) • In particular: LP is a non-monotone logic !! • In {smart(Kelly), strong(Kelly)},~strong(Kelly) is no longer entailed. • Knowledge is differently represented in these 2 formalisms. • Also: some concepts can be completely axiomatized in LP but not in FOL. • Ex.: the natural numbers !

  16. Negation as finite failure

  17. Here: Introduce negations in bodies ! Negation as finite failure • The basic idea: • extending the representation power of Logic Programming beyond the Horn Clauses logic • How? • equivalent: • allow disjunctions in the heads • allow negation before the body atoms • both give complete predicate logic ! • (but: with the least model semantics we will get something different from FOL!)

  18. not(B) means: • If all attempts to prove Busing linear LP-resolution, • fail in a finite time, conclude than not(B) Meaning of negation as finite failure • Not the meaning of standard negation • This is meaningful only with the least model semantics (where everything that is not proven to be ‘true’, is considered to be ‘false’)

  19. anc(x,y)  parent(x,y) (1) anc(x,y)  parent(x,z)  anc(z,y) (2) parent(A,B) (3) parent(B,C) (4) false  anc(u,v) false  anc(John,B) (2) {x/John,y/B} (1) {x/John,y/B} false  parent(John,B) false  parent(John,z)  anc(z,B) fails fails The ancestor example • Try to prove that “anc(John,B)” holds! • Conclusion: not anc(John,B)

  20. false  odd(s(s(s(0)))) false  even(s(s(s(0)))) false  not even(s(s(s(0)))) {x/s(0)} false  even(s(0)) Proof foreven(s(s(s(0)))) fails: conclusion not even(s(s(s(0)))) fails false  Another example even(0) even(s(s(x)))  even(x) odd(y)  not even(y) false  odd(s(s(s(0))))

  21. false  p false  q false  not q false  q Proof forq goes into infinite derivation: no conclusion for q … no answer And another example q  q p  not q false  p • But ~q is true according to the least model semantics!

  22. Also known: isa(Fred,Bird), Prove that:x locomotion(Fred,x) false <- locomotion(Fred,x) {x/Fly} false <- abnormal1(Fred) false <- Default reasoning in LP (1): locomotion(x,Fly) isa(x,Bird), not abnormal1(x) locomotion(x,Walk)  isa(x,Ostrich), not abnormal2(x) isa(x,Bird)  isa(x,Ostrich) abnormal1(x)  isa(x,Ostrich) false <- isa(Fred,Bird), not abnormal1(Fred) false <- not abnormal1(Fred) false <- isa(Fred,Ostrich) fails

  23. Also known: isa(Fred,Ostrich), Prove that:x locomotion(Fred,x) false <- locomotion(Fred,x) {x/Fly} false <- abnormal1(Fred) fails (for this branch) backtracking: the 2nd branch Default reasoning in LP (2): locomotion(x,Fly) isa(x,Bird), not abnormal1(x) locomotion(x,Walk)  isa(x,Ostrich), not abnormal2(x) isa(x,Bird)  isa(x,Ostrich) abnormal1(x)  isa(x,Ostrich) isa(Fred,Bird) false <- isa(Fred,Bird), not abnormal1(Fred) false <- not abnormal1(Fred) false <- isa(Fred,Ostrich) false <-

  24. locomotion(x,Fly) isa(x,Bird), not abnormal1(x) locomotion(x,Walk)  isa(x,Ostrich), not abnormal2(x) isa(x,Bird)  isa(x,Ostrich) abnormal1(x)  isa(x,Ostrich) isa(Fred,Bird) Also known: isa(Fred,Ostrich), Prove that:x locomotion(Fred,x) false <- locomotion(Fred,x) {x/Walk} false <- abnormal2(Fred) false <- Default reasoning (3): false <- isa(Fred,Ostrich), not abnormal2(Fred) false <- not abnormal2(Fred) fails

  25. Prolog • A specific programming language based on LP. • Uses a depth-first strategy to search linear resolution proofs. • incomplete • can get stuck in infinite branches • Has a bunch of built-in predicates (sometimes without logical meaning) for: • Numerical computations, input-output, changing the search strategy, meta-programming, etc. • More recent LP languages: Goedel, Mercury, Hal, ..

  26. Beyond FOL and Logic Programming • Logic Programming is very useful if you have a COMPLETE knowledge over your predicates • FOL is very useful if your knowledge is INCOMPLETE • Combine ! • Open Logic Programming • LP-definitions for the part for which you have a complete knowledge, • FOL formulae for the rest.

  27. Constraint Logic Programming • Integrate constraint processing techniques (consistency, forward checking, looking ahead, …) with Logic Programming. • Advantages of Logic for knowledge representation • Advantages of Constraint solving for efficient problem solving • A number of languages: CHIP, Eclipse, Sicsus, etc.

More Related