530 likes | 1.34k Views
Cat(Spot) Mammal(Spot) . Cat(Rebecca) Mammal(Rebecca) . Cat(Felix) ... (Felix, Spot) Cat(Felix)) (Sister(Richard, Spot) Cat(Richard)) ...
E N D
Logic Programming and Prolog Stuart Howard CS 550 Montana State University December 5, 2003
Presentation Outline • Definition • History and background • Logical calculus • Resolution theorem proving • Prolog syntax and example program • Strengths and weaknesses • Summary and conclusions
Logic programming • based on symbolic logic • write declarations and infer the results • logic programming languages are declarative languages
What does declarative mean? • Logic programmers write declarations describing relationships between entities • the ‘what’ vs. the ‘how’ • what does the answer look like? (specification) vs. • how do I exactly compute the answer?(implementation)
The evolution of programming paradigms figure from [Brookshear]
Let’s sort a list nonprocedurally permute(oldList, newList) Ù sorted(newList) => sort(oldList, newList) • j such that 1 ≤ j < n, list(j) ≤ list(j + 1) => sorted(list) example from [Sebesta]
Prolog Prolog = Programmation en Logique • Early 70’s • Alain Colmerauer and Phillipe Roussel • Robert Kowalski
Origins of Prolog Q-systems – designed for machine natural language translation (Colmerauer) • used to construct automatic English-French translations • used in Canada to translate weather forecasts from English to French
First large Prolog program man-machine communication system –1972 TOUT PSYCHIATRE EST UNE PERSONNE. CHAQUE PERSONNE QU'IL ANALYSE, EST MALADE. *JACQUES EST UN PSYCHIATRE A *MARSEILLE. EST-CE QUE *JACQUES EST UNE PERSONNE? OU EST *JACQUES? EST-CE QUE *JACQUES EST MALADE? OUI. A MARSEILLE. JE NE SAIS PAS.
Prolog example Shaun, the bull, and the tractor.
Logical calculus • language • inference rules • semantics
Propositional calculus the language… • atoms: T, F, {w | w is a string and begins with a capital letter}…H, On_A_B • connectives: Ù, Ú, Ø, → • rules for forming sentences(aka. well-formed formulas, wff’s)
Rules for wff’s • any atom is a wff • If w1 and w2 are wff’s, so are:w1 Ù w2conjunctionw1 Ú w2disjunctionw1 →w2implication Ø w1negation • there are no other wff’s
more terms… • literal: atom or negated atom (P, ØP) • w1 →w2(antecedent) (consequent)
Propositional calculus the inference rules…(6 of them anyway) • w2 from w1 and w1 →w2 (modus ponens) • w1 Ù w2 from w1 and w2 (Ù introduction) • w2 Ù w1 from w1 Ù w2 (commutativity of Ù) • w1 from w1 Ù w2 (Ù elimination) • w1 Ú w2 from w1 or w2 (Ú introduction) • w1 from Ø(Øw1) (Ø elimination)
Propositional calculus the semantics… • associate atoms with propositions about the world Shaun_strong with “Shaun is strong”|_________________| denotation |__________________________________________| interpretation
Propositional calculus remember…? • literal: an atom or its negation a new term! • clause: a set of literals with disjunction implied {P, Q, ØR} ≡ (P ÚQ ÚØR)
Propositional calculus a new inference rule…resolution S1 S2from{a} S1 and{Øa} S2 P ÚR from P ÚQ and R ÚØQ { } from{a} and {Øa}
Resolving (P OR Q) (R OR Q) [Brookshear]
Why not? • Soundness - OK • Completeness – not OK
Resolving (P OR Q), (R OR Q), R, P [Brookshear]
limitations… • Propositional calculus limits us to referring to ‘hard-coded’ propositions about the world. • What if we also want to refer to objects and propositions by name?
Predicate Calculus Objects: constants (names) or variables Functions/relations: constants (names) weird(MichaelJackson) cute(Russell) smart(x) hate(Michael, Microsoft)
Predicate Calculus • Quantifiers • Universal • Existential • Express properties of entire collections of objects
Predicate Calculus • Universal quantifiers make statements about every object, "x A cat is a mammal "x Cat(x) ÞMammal(x) Cat(Spot) Þ Mammal(Spot) Ù Cat(Rebecca) Þ Mammal(Rebecca) Ù Cat(Felix) Þ Mammal(Felix) Ù Cat(Richard) Þ Mammal(Richard) Ù Cat(John) Þ Mammal(John) Ù … [Comp313A]
Predicate Calculus • Existential Quantifiers make statements about some objects, $x Spot has a sister who is a cat $x Sister(x, Spot) Ù Cat(x) (Sister(Spot, Spot) Ù Cat(Spot)) Ú (Sister(Rebecca, Spot) Ù Cat(Rebecca)) Ú (Sister(Felix, Spot) Ù Cat(Felix)) Ú (Sister(Richard, Spot) Ù Cat(Richard)) Ú (Sister(John, Spot) Ù Cat(John)) Ú … [Comp313A]
Predicate Calculus "is a conjunction over the universe of objects $is a disjunction over the universe of objects
Predicate Calculus Example The George W. Bush Family mother(Barbara, George Jr.) father(George Jr., Jenna) father(George Jr., Barbara II)
Predicate Calculus Example Q: Barbara is the grandmother of whom? " x" y"z[mother(x, y) Ù parent(y, z) => grandmother(x, z)] " x"y [father(x,y) => parent(x, y)] " x"y [mother(x,y) => parent(x, y)]
Predicate Calculus Example • mother(Barbara, George Jr.) • father(George Jr., Jenna) • father(George Jr., Barbara II) • " x" y"z[mother(x, y) Ù parent(y, z) => grandmother(x, z)] • " x"y [father(x,y) => parent(x, y)] • " x"y [mother(x,y) => parent(x, y)]
Resolution in Predicate Calculus " x" y"z[mother(x, y) Ùparent(y, z) => grandmother(x, z)] mother(x, y) Ùparent(y, z) => grandmother(x, z) Ø [mother(x, y) Ùparent(y, z)] Ú grandmother(x, z) Ø mother(x, y) ÚØ parent(y, z) Ú grandmother(x, z)
Resolution in Predicate Calculus " x"y [father(x,y) => parent(x, y)] father(a, b) => parent(a, b) Ø father(a, b) Úparent(a, b)
Resolution in Predicate Calculus " x"y [mother(x,y) => parent(x, y)] mother(c, d) => parent(c, d) Ø mother(c, d) Úparent(c, d)
mother(Barbara, George Jr.) • father(George Jr., Jenna) • father(George Jr., Barbara II) • Ø mother(x, y) ÚØ parent(y, z) Ú grandmother(x, z) • Ø father(a, b) Úparent(a, b) • Ø mother(c, d) Úparent(c, d) • Ø grandmother(Barbara, Jenna) • Ø mother(Barbara, e) ÚØ parent(e, Jenna) [7, 4] • Ø mother(Barbara, f) ÚØ father(f, Jenna) [8, 5] • Ø father(George Jr., Jenna) [9, 1] • { }
Prolog Syntax • Rules • Facts • Goals They are all variants of an implication!
Rule General a => b a Ù bÙ c => d Prolog b :- a. d :- a, b, c.
Fact General { } => b Prolog b.
Goal General b => { } Prolog b.
Horn what? Ø a Ú Ø b Ú Ø c Ú d (Ø a Ú Ø b Ú Ø c) Ú d Ø (a Ù bÙ c) Ú d a Ù bÙ c => d
Horn what? b Ø { } Ú b { } => b
Horn what? Ø a Ú Ø b Ú Ø c Ø (a Ù bÙ c) Ú { } a Ù bÙ c => { }
1 2 4 5 3 6
1 2 4 3 5 6 7
Uses of logic programming • relational database management systems • expert systems • natural language processing
Weaknesses of Prolog • Resolution order control • Closed world assumption
Summary and Conclusions Proponets say… • Logical language => logically organized=> fewer errors, less maintenance • Programs concise => less development time => good prototyping language Opponents say… • BUNK! http://www.mozart-oz.org/features.html
Presentation Review • Definition • History and background • Logical calculus • Resolution theorem proving • Prolog syntax and example program • Strengths and weaknesses • Summary and conclusions