SLD Resolution, Prädikatenlogik
Transcription
SLD Resolution, Prädikatenlogik
Lineare Resolution and Einführung in die Prädikatenlogik Michael Leuschel Softwaretechnik und Programmiersprachen 03/11/15 Foliensatz 5 Wiederholung: KNF & Resolution • KNF: Menge an Klauseln – Klausel = Disjunktion von Literalen – Literal = p or ¬p – Beispiel: { ¬p ∨ q , wet ∨ ¬rains ∨ ¬outside } – Horn Klausel: maximal ein positives Literal – Anfrage: nur negative Literale • Resolution – Aus p ∨ α und ¬p ∨ β leiten wir folgende Konsequenz ab: α ∨ β • Refutationsbeweis für S ⇒ {L}: – Wir zeigen, dass wir von S ∪ {¬L} einen Widerspruch o durch Resolution ableiten können 03/11/15 T: p ∨¬q q Lineare Resolution D: ¬p D’: ¬q – 1.Nehme eine Theorie T in KNF mit Horn Klauseln, aber ohne Anfragen – 2. Nehme eine Anfrage D – 3. Resolution von D mit einer Klausel aus T • wir erhalten eine neue Anfrage D’ – 4. Falls D’=o sind wir fertig – 5. Sonst setze D :=D’ (vergesse die alte Anfrage) and gehe zu Schritt 2 zurück – Beobachtungen: • Negative Literale kommen immer aus D, positive Literale immer aus T, T bleibt unverändert 03/11/15 Lineare Resolution und Prolog umbrella :- rain, outside. rain. outside. ?- umbrella. yes umbrella ← rain ∧ outside umbrella ∨ ¬ rain ∨ ¬outside rain outside 03/11/15 ¬ umbrella ⇓ ¬ rain ∨ ¬outside ⇓ ¬outside ⇓ o Linear = Man kann die vorherigen Anfragen “vergessen” Selek%ons-Funk%onundSLD • “Auswahlregel”:welchesnega%veLiteralin deraktuellenAnfragesollbenutztwerden: – ¬ rain ∨ ¬outside – ¬ rain ∨ ¬outside • SLD Resolution: lineare Resolution parametrisiert durch eine Selek%onsFunk%on 03/11/15 SLD-Resolu%on • S:Selek%ons-Funk%on • L:LineareResolu%on • D:DefiniteKlauseln(HornKlauseln,keine Nega%onimRumpfvonKlauseln) • definiertdieAusführungvonlogischen Programmen 03/11/15 % Die Belegung von der Aufgabe: a. not_b. c. not_d. e. % Schaltungen der ersten Ebene and11 :- a,b. or11 :- b. or11 :- c. and12 :- c,d. not1 :- not_e. % Schaltungen der zweiten Ebene or21 :- and11. or21 :- not1. and2 :- or11, not1. or22 :- and12. or22 :- not1. not2 :- e. % \+ not1. % Schaltungen der dritten Ebene and3 :- or21, and2. or3 :- or22. or3 :- not2. % Schaltungen der vierten Ebene or4 :- and3. or4 :- or3. and4 :- or3, not2. % Letzte Ebene and5 :- and4, or4. output :- and5. 03/11/15 eine erfolgreiche SLD-Ableitung ? ?- output. ... % Die Belegung von der Aufgabe: a. not_b. c. not_d. e. % Schaltungen der ersten Ebene and11 :- a,b. or11 :- b. or11 :- c. and12 :- c,d. not1 :- not_e. % Schaltungen der zweiten Ebene or21 :- and11. or21 :- not1. and2 :- or11, not1. or22 :- and12. or22 :- not1. not2 :- e. % \+ not1. % Schaltungen der dritten Ebene and3 :- or21, and2. or3 :- or22. or3 :- not2. % Schaltungen der vierten Ebene or4 :- and3. or4 :- or3. and4 :- or3, not2. % Letzte Ebene and5 :- and4, or4. output :- and5. 03/11/15 eine erfolgreiche SLD-Ableitung ????????????[] output. and5. and4,or4. or3,not2,or4. not2,not2,or4. e,not2,or4. not2,or4. e,or4. or4. or3. not2. e. SLD-Bäume:Defini%on • SLD-BaumfürP∪{¬Q}: • FürjedenKnoten(aussero): – AusgewähltesLiteralList unterstrichen • Wurzel – DieKindersindalle – Anfrage:¬Q Resolventen(Resolu%on vonLmiteinerKlauselaus • BläRer: P) – Erfolgooder – BläRerwokeine Klauselaufdas ausgewählteLiteral passt 03/11/15 SLD-Bäume • ¬p • ¬q∨¬r • ¬t∨¬r • ¬s∨¬r p:-q,r. q:-t. q:-s. r. s. O • ¬r • o Prolog: Tiefensuche (Depth-First), Selection Rule: erstes Literal links 03/11/15 Arten von SLD Bäumen • Fehlgeschlagen (Failed) vs Ergolgreich (Successful) • Endlich vs Unendlich – Erfolgreich: es gibt mindestens ein Blatt mit o – Fehlgeschlagen: alle anderen Fälle 03/11/15 Theorem: P ∪ {¬Q} is inconsistent iff the SLD-tree for P ∪ {¬Q} is successful output % Die Belegung von der Aufgabe: a. not_b. c. not_d. e. % Schaltungen der ersten Ebene and11 :- a,b. or11 :- b. or11 :- c. and12 :- c,d. not1 :- not_e. % Schaltungen der zweiten Ebene or21 :- and11. or21 :- not1. and2 :- or11, not1. or22 :- and12. or22 :- not1. not2 :- e. % \+ not1. % Schaltungen der dritten Ebene and3 :- or21, and2. or3 :- or22. or3 :- not2. % Schaltungen der vierten Ebene or4 :- and3. or4 :- or3. and4 :- or3, not2. % Letzte Ebene and5 :- and4, or4. output :- and5. and5 and4,or4 or3,not2,or4 or22,not2,or4 not2,not2,or4 and12,not2,or4 not1,not2,or4 e,not2,or4 c,d,not2,or4 not_e,not2,or4 not2,or4 d,not2,or4 fail e,or4 fail or4 and3 or3 or21,and2 or22 not2 and11,and2 not1,and2 and12 not1 e a,b,and2 not_e,and2 c,d not_e [] b,and2 fail d fail true 03/11/15 fail fail Übung: Finden Sie P ∪ {¬Q} für: • einen endlichen fehlgeschlagenen SLD-Baum (finitelyfailed SLD-tree) • einen unendlichen fehlgeschlagenen SLD-Baum • einen unendlichen erfolgreichen SLDBaum 03/11/15 • einen unendlichen erfolgreichen SLDBaum in dem Prolog keine Lösung findet Nicht Lineare Resolution One day Tokusan told his student Gantõ, “I have two monks who have been here for many years. Go and examine them.” n Gantõ picked up an ax, saying, “If you say a word I will cut off your heads; and if you do not say a word, I will also cut off your heads.” n 1) cut ∨ ¬ say 2) cut ∨ say Nicht-lineare Resolution nötig um zu zeigen, dass “cut” eine logische Konsequenz ist. Beobachte: 2) ist keine Horn Klausel 03/11/15 Linear = Man kann die vorherigen Anfragen “vergessen” Prädikatenlogik (First-Order Logic) 03/11/15 Warum brauchen wir eine aussagekräftigere Logik • Beispiel: – Alle Menschen sind sterblich – Sokrates ist ein Mensch – Es folgt: Sokrates ist sterblich • Aussagenlogik: – {alle_menschen_sind_sterblich, sokrates_ist_mensch} ⇒ {sokrates_ist_sterblich} O • → Wir müssen über Objekte/Individuen sprechen können 03/11/15 human_sokrates. tiger_hobbes. mortal_sokrates :- human_sokrates. mortal_hobbes :- human_hobbes. ?- mortal_sokrates. human(sokrates). tiger(hobbes). mortal(X) :- human(X). ?- mortal(sokrates). 03/11/15 Interpretationen Modelle Sind alle Modelle des Prolog Programms auch Modelle der Anfrage ? Erweiterung 1: Konstanten • Konstanten: a,b,c, john, janet – Beginnen mit Kleinbuchstaben – keine Aussagen ! – Stellen ein Objekt aus der “realen Welt” dar a b janet (mathematically: interpretations will map each constant to an element from a domain) 03/11/15 john c Erweiterung 2: Prädikate • Prädikate: girl(_), loves(_,_), … binary relation – Beginnen mit Kleinbuchstaben – Stellen Relationen zwischen Objekten dar – Haben eine Arität • loves(_,_): 2 • sterblich(_): 1 • rains: 0 (Aussagen sind nur ein Sonderfall) 03/11/15 loves(john,janet) Erweiterung 3: Variablen • Variablen: X,Y,Z,… – Beginnen mit einem Großbuchstaben – Haben keinen Wahrheitswert – Können für “beliebige” Objekte der “realen Welt” stehen X 03/11/15 Erweiterung 4: Quantoren • Universalquantor ∀ (für alle) – Beispiel: ∀X loves(X,X) – “Jeder liebt sich selber” – (∀X F): die Formel F ist für alle möglichen Werte von X wahr • Existenzquantor ∃ (es existiert) – Beispiel: ∃ X girl(X) – “Es gibt ein Mädchen” – (∃ X F): es gibt mindestens einen Wert für X, so dass die Formel F wahr wird 03/11/15 Übung: Dylan • Nach Prädikatenlogik übersetzen: – You can fool some of the people all of the time. – You can fool all of the people some of the time. – But you cannot fool all of the people all of the time. • Benutzen Sie das Prädikat: – fool(X,T): you can fool X at time T 03/11/15 Übung: Lösung • Nach Prädikatenlogik übersetzen: – You can fool some of the people all of the time. – You can fool all of the people some of the time. – But you cannot fool all of the people all of the time. • Eine Lösung: – ∃ X ∀ T fool(X, T) – ∃ T ∀ X fool(X, T) (auch akzeptabel: – ¬ (∀ X ∀ T fool(X, T) ) 03/11/15 ∀ X ∃ T fool(X, T)) Übung 2 • Graphfärbung – Prädikate: • colour(node,col) • link(node1,node2) • =/2 – zweiNachbarknotenhabendiegleicheFarbein Prolog – AllNachbarnhabenunterschiedlicheFarben 03/11/15 Übung 3 • N-Queens – Prädikate: • queen(i,j) 03/11/15 Übung 4 • “Shoes must be worn” • “Dogs must be carried” • Prädikate: OnEscalator(x), ... 03/11/15 Source: Michael Jackson, Wikimedia Commons Übung 5 (Mehrdeutigkeiten) • Oldmenandwomenweretakentosafe loca%ons. • Everymanlovesawoman. • Themansawthegirlwiththetelescope. • Buybooksforchildren. • SeemaloveshermotherandSriyadoestoo. • Thecarhitthepolewhileitwasmoving. 03/11/15 Source: Michael Jackson, Wikimedia Commons nat(0). nat(s(X)) :- nat(X). plus(0,X,X). plus(s(X),Y,s(Z)) :plus(X,Y,Z). islist([]). islist([_|T]) :- islist(T). ?- nat(s(0)). ?- plus(s(0),0,s(0)). 03/11/15 Interpretationen Modelle Sind alle Modelle des Prolog Programms auch Modelle der Anfrage ? Erweiterung 5: Funktionssymbole • Funktionssymbole: succ(_), cons(_,_), … – Beginnen mit Kleinbuchstaben – Stellen Funktionen zwischen Objekten dar – Haben eine Arität: • cons(_,_): 2 • succ(_): 1 • john: 0 (Konstanten sind ein Sonderfall der Funktionssymbole) 03/11/15 unary function Natural Numbers • Constant 0 • Function symbol succ(_) • Describing natural numbers: 0 1 succ 2 3 – nat(0) 4 – ∀X ( nat(succ(X)) ← nat(X) ) 5 • Describing addition: 6 – ∀X plus(0, X, X) 7 – ∀X Y Z ( plus(succ(X),Y,succ(Z)) ← plus(X, Y, Z) ) 8 9 10 ... 03/11/15 (but there are Prolog built-in’s) Exercise • Define (in terms of plus/3) – Subtraction – Multiplication • Run it in Prolog 03/11/15 Representing Lists – Constant nil: empty list – Function symbol .(_,_) • .(H,T): list with first element H and tail T [a,b] denoted by [a,b] .(a,.(b,nil)) [a,a] [b,a] [b,b] ∀X app([],X,X) . [a] [b] nil 03/11/15 [] a b Zusammenfassung 1. First-Order Logic - constants, functions, variables (tom mother(tom) X) - relations ( human(.) married(. , .) ) - quantifiers (∀ ∃ ) 0. Propositional Logic - propositions (basic units: either true or false) - logical connectives (∨ ∧ ¬ →) 03/11/15 human(sokrates) ∀ X. human(X) → mortal(X) variables over objects rains rains → carry_umbrella rains ∨¬ rains p ∨¬ p no variables Zusammenfassung • Lineare Resolution • SLD-Resolution und SLD-Bäume in Aussagenlogik • Bausteine der Prädikatenlogik (FOL) – Konstanten, Prädikate, Quantoren, Funktionen • Übersetzung natürlicher Sprachen nach FOL – Übungen • Darstellung von Datenstrukturen in FOL – natürliche Zahlen, Listen – Bäume (später) 03/11/15