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