AR voor Horn clause logica Introductie van: Unificatie.

27
AR voor Horn clause logica AR voor Horn clause logica Introductie van: Introductie van: Unificatie Unificatie

Transcript of AR voor Horn clause logica Introductie van: Unificatie.

Page 1: AR voor Horn clause logica Introductie van: Unificatie.

AR voor Horn clause logicaAR voor Horn clause logica

Introductie van: Introductie van: UnificatieUnificatie

Page 2: AR voor Horn clause logica Introductie van: Unificatie.

2

Hoe variabelen behandelen?Hoe variabelen behandelen? Voorbeeld:Voorbeeld:

p p veel_werk(huis(p))veel_werk(huis(p)) groot(huis(p)) groot(huis(p))false false veel_werk(huis(Bos))veel_werk(huis(Bos))

We willen graag besluiten:We willen graag besluiten:

door middel van veralgemeende modus ponens.door middel van veralgemeende modus ponens.

false false groot(huis(Bos)) groot(huis(Bos))

Principe:Principe: gebruik instantiaties van de 2 Horn gebruik instantiaties van de 2 Horn clauses, zodanig dat ze wél ‘matchen’.clauses, zodanig dat ze wél ‘matchen’.

Page 3: AR voor Horn clause logica Introductie van: Unificatie.

3

Meer voorbeelden:Meer voorbeelden: Vanaf nu laten we universele quantificatie weg, ver-mits Vanaf nu laten we universele quantificatie weg, ver-mits

alle variabelen universeel gequantificeerd zijn. alle variabelen universeel gequantificeerd zijn.

Enkele voorbeelden met standard modus ponens:Enkele voorbeelden met standard modus ponens:

verwant(verwant(xx,,yy) ) ouder( ouder(xx,,yy)) ouder(John,Mary)ouder(John,Mary)verwant(verwant(JohnJohn,,MaryMary))

houdtvan(John,houdtvan(John,xx) ) verwant(John, verwant(John,xx)) verwant(verwant(yy,vader(,vader(yy))))

houdtvan(John,houdtvan(John,vader(John)vader(John)))

Unificatie !!Unificatie !!

Page 4: AR voor Horn clause logica Introductie van: Unificatie.

4

Substituties:Substituties: Voorbeelden:Voorbeelden:

={={ x x // h(g(A))h(g(A)) , , y y // g(A)g(A) ,, z z // ww}}

= {= { x x // g(z)g(z) ,, y y // BB}}

Een Een substitutiesubstitutie is een is een eindige verzameling koppelseindige verzameling koppels van van het type het type variabele variabele // termterm, zo dat alle , zo dat alle variabelenvariabelen aan de aan de linkerkanten van koppels linkerkanten van koppels verschillend zijnverschillend zijn..

In onze substituties zullen we hier NIET toelaten In onze substituties zullen we hier NIET toelaten dat dat variabelenvariabelen die links voorkomen ooit in een die links voorkomen ooit in een rechterkant rechterkant termterm voorkomen. voorkomen.

Page 5: AR voor Horn clause logica Introductie van: Unificatie.

5

Substituties toepassen:Substituties toepassen:

Substituties kunnen Substituties kunnen toegepasttoegepast worden op worden op enkelvoudige expressiesenkelvoudige expressies (atomen of termen), door (atomen of termen), door het vervangen van alle voorkomens van de linker het vervangen van alle voorkomens van de linker variabelenvariabelen door hun corresponderende door hun corresponderende termentermen..

= {= { x x // g(z)g(z) ,, y y // BB}}

p(p(xx , f(, f(yy, z)), z)) = p(= p(g(z)g(z) , f(, f(BB, ,

z))z)) ={={ x x // h(g(A))h(g(A)) , , y y // g(A)g(A) ,, z z // ww}}

p(p(xx, f(, f(yy, , zz)) )) == p(p(h(g(A))h(g(A)) , f(, f(g(A)g(A) ,, ww))))

Voorbeelden:Voorbeelden:

Page 6: AR voor Horn clause logica Introductie van: Unificatie.

6

Herinner de motivatie:Herinner de motivatie:

We wensen substituties die atomen gelijk maken.We wensen substituties die atomen gelijk maken.

veel_werk(huis(veel_werk(huis(pp)))) groot(huis(p)) groot(huis(p))false false veel_werk(huis(veel_werk(huis(BosBos))))

De twee atomen in de clauses:De twee atomen in de clauses:

moeten moeten gelijkgelijk worden. worden.

Page 7: AR voor Horn clause logica Introductie van: Unificatie.

7

““Unifiers”Unifiers” Voorbeeld:Voorbeeld:

S = {verwant(John,S = {verwant(John,xx), verwant(), verwant(yy,, vader( vader(yy))}))}

= {= {y y // JohnJohn,, x x // vader(John)vader(John)}} is een unifier vooris een unifier voor SS

SS = = {verwant({verwant(JohnJohn,,vader(John)vader(John))})}

Gegeven een Gegeven een verzamelingverzameling van enkelvoudige van enkelvoudige expressies expressies SS, dan noemen we een substitutie , dan noemen we een substitutie een een unifierunifier voor voor SS als: als:

S S is a singleton is a singleton

Page 8: AR voor Horn clause logica Introductie van: Unificatie.

8

Nog een extra verfijning:Nog een extra verfijning: Voor afleidingsstap:Voor afleidingsstap: verwant(verwant(xx,,yy) ) ouder( ouder(xx,,yy))

ouder(John,z)ouder(John,z)

hebben we:hebben we: S = {ouder(S = {ouder(xx,,yy), ouder(John,z)}), ouder(John,z)}

en zijn er verschillende unifiers:en zijn er verschillende unifiers:

= {= {x x // JohnJohn, , y y // zz}}

= {= {x x // JohnJohn, , y y // MaryMary, z / , z / MaryMary}}

enzenz..

Alleen de meest algemene, Alleen de meest algemene, ,, laat de sterkste laat de sterkste afgeleide conclusie toe:afgeleide conclusie toe:

verwant(verwant(JohnJohn,,zz))

Page 9: AR voor Horn clause logica Introductie van: Unificatie.

9

Relatie tussen deze?Relatie tussen deze? Voorbeeld:Voorbeeld: S = {ouder(S = {ouder(xx,,yy), ouder(John,z)}), ouder(John,z)}

= {= {x x // JohnJohn, , y y // zz}} S S = {ouder(= {ouder(JohnJohn,,zz)})}

= {= {x x // JohnJohn, , y y // MaryMary, z / , z / MaryMary}}

S S = {ouder(= {ouder(JohnJohn,,MaryMary)})}

Er bestaat een Er bestaat een bijkomendebijkomende substitutie: substitutie:

= {z /= {z / MaryMary}} metmet S S = ( = (S S ) )

Page 10: AR voor Horn clause logica Introductie van: Unificatie.

10

Meest algemene unifier:Meest algemene unifier:

Gegeven een verzameling van enkelvoudige Gegeven een verzameling van enkelvoudige expressies expressies SS, een , een meest algemene unifiermeest algemene unifier voor voor SS is een unifier voor is een unifier voor SS, zó dat voor alle , zó dat voor alle andere unifiers andere unifiers voor voor SS, er een substitutie , er een substitutie bestaat zodat:bestaat zodat:

SS = (S= (S ))

Sleutel-idee: creeer minimale instantiaties!Sleutel-idee: creeer minimale instantiaties! Notatie: Notatie: = = mgumgu((SS) , of ) , of = = mgumgu((AA, , BB) voor S = {A,B} ) voor S = {A,B}

Page 11: AR voor Horn clause logica Introductie van: Unificatie.

11

Veralgemeende modus ponens Veralgemeende modus ponens voor Horn clausesvoor Horn clauses

A B1 B2 … Bi … BnBi’ C1 C2 … Cm

(A B1 B2 … C1 C2 … Cm … Bn)

Veralgemeende modus ponens moet verder Veralgemeende modus ponens moet verder uitgebreid worden tot:uitgebreid worden tot:

waarin waarin = = mgu(mgu( BiBi,, Bi’Bi’))

Let welLet wel: : BiBi and and Bi’Bi’ moet hetzelfde predicaat hebben. moet hetzelfde predicaat hebben. CorrectheidCorrectheid: wegens correctheid van alle gegronde instantiaties van deze afleiding.: wegens correctheid van alle gegronde instantiaties van deze afleiding.

Page 12: AR voor Horn clause logica Introductie van: Unificatie.

12

Voorbeeld: enkele stappenVoorbeeld: enkele stappen

BemerkBemerk: we zullen variabelen : we zullen variabelen altijd van nieuwe altijd van nieuwe namen voorziennamen voorzien teneinde ‘toevallige’ clashes te teneinde ‘toevallige’ clashes te vermijden.vermijden.

false veel_werk(huis(x)) veel_werk(huis(y)) groot(huis(y))

false groot(huis(y))

false showm(z) belg(z) showm(Bos)

false belg(Bos)

Een stap, veel later:Een stap, veel later:

Page 13: AR voor Horn clause logica Introductie van: Unificatie.

13

Achterwaartse procedure voor Achterwaartse procedure voor Horn clausesHorn clauses

Goal Goal := := false false B1 B1 B2 B2 … … Bn Bn ; ;RepeatRepeat

Select some Select some BiBi atom from the body of atom from the body of GoalGoal Select some clause Select some clause Bi’ Bi’ C1 C1 C2 C2 … … Cm Cm from from TT such that such that = mgu( = mgu(BiBi,, Bi’Bi’)) exists exists

GoalGoal := := false false (B1 (B1 … … Bi-1 Bi-1 C1 C1 C2 C2 … … Cm Cm Bi+1 Bi+1 … … Bn) Bn) UntilUntil GoalGoal = = false false or no more Selections possible or no more Selections possible

OpnieuwOpnieuw: concrete versies van dit generisch schema vereisen : concrete versies van dit generisch schema vereisen mogelijk mogelijk backtrackingbacktracking over eerdere selecties, over eerdere selecties,

of behandelen het probleem als een of behandelen het probleem als een algemeen zoekprobleemalgemeen zoekprobleem doorheen de zoekruimte van algeleide doelstellingen. doorheen de zoekruimte van algeleide doelstellingen.

Page 14: AR voor Horn clause logica Introductie van: Unificatie.

14

Terug naar het voorbeeld:Terug naar het voorbeeld:

false veel_werk(huis(x))

europeaan(x) belg(x)rijk(x) showm(x) europeaan(x)groot(huis(x)) rijk(x)veel_werk(huis(x)) groot(huis(x))false veel_werk(huis(x))

showm(Bos)belg(Bos)

veel_werk(huis(x1)) groot(huis(x1)) = { x1 / x}= { x1 / x}

false groot(huis(x)) = { x2 / x}= { x2 / x}

groot(huis(x2)) rijk(x2)

false rijk(x) = { x3 / x }= { x3 / x }rijk(x3) showm(x3) europeaan(x3)

false showm(x) europeaan(x)

false showm(x) belg(x)

europeaan(x4) belg(x4) = { x4 / x }= { x4 / x }

belg(Bos) = { x / Bos }= { x / Bos }

false showm(Bos) showm(Bos) = { }= { }

false

Page 15: AR voor Horn clause logica Introductie van: Unificatie.

15

Waarom variabelen hernoemen?Waarom variabelen hernoemen?

false p(x) p(y) q(z,y) false q(z,y) = {= {xx//yy } }

false p(x) p(y) q(x,y) false q(y,y) = {= {xx//yy }}

Beschouw de afleidingsstap:Beschouw de afleidingsstap:

Probleem: Probleem: p(y) p(y) q( q(xx,y),y) is equivalent met is equivalent met p(y) p(y) q(q(zz,y),y) en dus kon ook de afleidingsstap: en dus kon ook de afleidingsstap:

waaruit we een strikt sterkere conclusie krijgen !waaruit we een strikt sterkere conclusie krijgen !

Altijd eerst variabelen van disjuncte namen voorzien !!Altijd eerst variabelen van disjuncte namen voorzien !!

Page 16: AR voor Horn clause logica Introductie van: Unificatie.

16

Ander voorbeeld:Ander voorbeeld: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(u,v)

false parent(x1,z1) anc(z1,y1)

(2) {u/x1,v/y1}

false anc(B,y1)(3) {x1/A,z1/B}

false parent(B,y1)(1) {x2/B,y2/y1}

false (4) {y1/C}

false parent(x1,y1)(1) {u/x1,v/y1}

false (3) {x1/A,y1/B}

false

(4) {x1/B,y1/C}

Verschillende manieren van bewijzen !Verschillende manieren van bewijzen !

Page 17: AR voor Horn clause logica Introductie van: Unificatie.

17

Volledigheid:Volledigheid: Achterwaartse veralgemeende modus ponens, Achterwaartse veralgemeende modus ponens,

met een volledige zoekmethodemet een volledige zoekmethode over de over de zoekruimte van de afgeleide doelstellingen en zoekruimte van de afgeleide doelstellingen en met hernoemingmet hernoeming van de variabelen van de variabelen is volledigis volledig..

Merk op dat het Merk op dat het alleen maar semi-beslissendalleen maar semi-beslissend is, is, want de zoekruimte van doelstellingen kan want de zoekruimte van doelstellingen kan oneindig groot zijn, oneindig groot zijn,

dus, in het algemeen, kunnen we hiermee niet dus, in het algemeen, kunnen we hiermee niet beslissen of we tot beslissen of we tot false false kunnen herleiden. kunnen herleiden.

Page 18: AR voor Horn clause logica Introductie van: Unificatie.

18

Een oneindige afleiding:Een oneindige afleiding: VoorbeeldVoorbeeld:: nat(s(x)) nat(x)

false nat(u)

false nat(u)

false nat(x1)

{{uu//s(x1)s(x1)}}

false nat(x2)

{{x1x1//s(x2)s(x2)}}

...

Page 19: AR voor Horn clause logica Introductie van: Unificatie.

19

Met volledige zoekmethodeMet volledige zoekmethodewel een antwoord voor:wel een antwoord voor:

VoorbeeldVoorbeeld:: nat(0)nat(s(x)) nat(x)false nat(u)

false nat(u)

false nat(x1)

{{uu//s(x1)s(x1)}}

false nat(x2)

{{x1x1//s(x2)s(x2)}}

...

false {{uu//00}}

false {{x1x1//00}}

Page 20: AR voor Horn clause logica Introductie van: Unificatie.

UnificatieUnificatie

Een basis algoritme in Automatische Een basis algoritme in Automatische RedenerenRedeneren

Page 21: AR voor Horn clause logica Introductie van: Unificatie.

21

Een unificatie algoritmeEen unificatie algoritmemgu:=:= { { ss = = t t };};

StopStop:= false;:= false;

Case:Case: t t is a variable,is a variable, ss isis not a variable:not a variable:

replacereplace s s = = tt by by t t = = ss in in mgumgu;;

Case:Case: ss is a variable,is a variable, t t is the SAME variable:is the SAME variable:

deletedelete s s = = tt from from mgumgu;;

Case:Case: ss is a variable,is a variable, t t is not a variable and is not a variable and

contains contains s s : :

StopStop:= true; := true;

......

WhileWhile not(not(StopStop) and ) and mgumgu still contains still contains ss = = tt ofof

Page 22: AR voor Horn clause logica Introductie van: Unificatie.

22

Unification algorithm (2)Unification algorithm (2)

If If StopStop = false : Report = false : Report mgumgu ! !

Case:Case: ss is a variable,is a variable, t t is not identical to nor is not identical to nor

contains contains ss and and s s occurs elsewhere in occurs elsewhere in mgumgu: :

replace all other occurrences of replace all other occurrences of ss in in mgumgu by by tt ; ;

......

Case:Case: ss is of the form is of the form f(s1,…,sn)f(s1,…,sn) , , t t ofof g(t1,…,tm): g(t1,…,tm):

ifif ff gg or or nn mm : : StopStop := true; := true;

elseelse replace replace ss = = tt in in mgumgu by by

s1s1 = = t1t1 , , s2s2 = = t2 t2 , …, , …, snsn = = tn tn ;;

End_whileEnd_while

Page 23: AR voor Horn clause logica Introductie van: Unificatie.

23

Voorbeeld 1:Voorbeeld 1: Unificeer:Unificeer: p(B,y)p(B,y) enen p(x,f(x))p(x,f(x)) : :

InitInit:: mgumgu:= { := { p(B,y)p(B,y) == p(x,f(x))p(x,f(x))}}

Case 5Case 5: : mgumgu:= {:= {BB = = xx, , yy = = f(x)f(x) } } Case 1Case 1: : mgumgu:= {:= {xx = = BB, , yy = = f(x)f(x) } } Case 4Case 4: : mgumgu:= {:= {xx = = BB, , yy = = f(B)f(B) } }

Geen cases meer toepasbaar !Geen cases meer toepasbaar ! p(B,y)p(B,y) en en p(x,f(x))p(x,f(x)) zijn unificieerbaar zijn unificieerbaar mgumgu = { = { xx//BB, , yy//f(B)f(B) } } resultaat: p(B, f(B))resultaat: p(B, f(B))

Page 24: AR voor Horn clause logica Introductie van: Unificatie.

24

Voorbeelden 2 & 3:Voorbeelden 2 & 3: Unificeer:Unificeer: p(A)p(A) enen p(f(x))p(f(x)) : :

InitInit:: mgumgu:= { := { p(A)p(A) == p(f(x))p(f(x))}}

Case 5Case 5: : mgumgu:= {:= {AA = = f(x)f(x) } } Case 5Case 5: : StopStop:= true:= true NIET unificeerbaar!NIET unificeerbaar!

Unificeer:Unificeer: xx enen f(x)f(x) : :

InitInit:: mgumgu:= { := { xx == f(x)f(x)}}

Case 3Case 3: : StopStop:= true:= true NIET unificeerbaar!NIET unificeerbaar!

Page 25: AR voor Horn clause logica Introductie van: Unificatie.

25

Terminatie van het algoritme:Terminatie van het algoritme: Stop Stop = true= true

geen unifiergeen unifier expressies waren niet unificeerbaarexpressies waren niet unificeerbaar

Geen cases meer toepasbaar:Geen cases meer toepasbaar: mgumgu bevat een verzameling gelijkheden van de vorm: bevat een verzameling gelijkheden van de vorm:

{{x1x1 = = t1 t1, …, , …, xnxn = = tntn}} met met alle alle x1x1,,……,,xnxn onderling verschillende variabelen ! onderling verschillende variabelen !

De substitutie De substitutie {{x1x1//t1t1,…,,…,xnxn//tntn}} is een meest is een meest algemene unifier voor de initiële algemene unifier voor de initiële ss en en tt . .

Martelli-Montanari algoritme.Martelli-Montanari algoritme. Uitbreidbaar voor meer dan 2 expressies.Uitbreidbaar voor meer dan 2 expressies.

Page 26: AR voor Horn clause logica Introductie van: Unificatie.

26

Rekenen met unificatieRekenen met unificatie Voorbeeld:Voorbeeld:

geimpliceerdgeimpliceerd: : mgumgu = {= {uu//point(1,z)point(1,z)}}

geimpliceerdgeimpliceerd: : mgumgu = {= {uu//yy,,vv//yy } }

vertikaal(segment(punt(x,y),punt(x,z)))vertikaal(segment(punt(x,y),punt(x,z)))horizontaal(segment(punt(x,y),punt(z,yhorizontaal(segment(punt(x,y),punt(z,y))))))

u vertikaal(segment(punt(1,2),u))u vertikaal(segment(punt(1,2),u))

u,v horizontaal(segment(punt(1,u),punt(2,v)))u,v horizontaal(segment(punt(1,u),punt(2,v)))

Page 27: AR voor Horn clause logica Introductie van: Unificatie.

27

Representatiekracht Representatiekracht van Horn clausesvan Horn clauses

De meeste predicaten logica formules kunnen De meeste predicaten logica formules kunnen gemakkelijk hervormd worden tot Horn clauses.gemakkelijk hervormd worden tot Horn clauses.

Voorbeelden:Voorbeelden:

x cat(x) x cat(x) dog(x) dog(x) pet(x) pet(x)

x poodle(x) x poodle(x) dog(x) dog(x) small(x) small(x)

pet(x) cat(x)pet(x) dog(x)

dog(x) poodle(x)small(x) poodle(x)

MAARMAAR::

x human(x) x human(x) male(x) male(x) female(x) female(x)

x dog(x) x dog(x) ~abnormal(x) ~abnormal(x) has_4_legs(x) has_4_legs(x)

????

????