De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

AR voor Horn clause logica Introductie van: Unificatie.

Verwante presentaties


Presentatie over: "AR voor Horn clause logica Introductie van: Unificatie."— Transcript van de presentatie:

1 AR voor Horn clause logica Introductie van: Unificatie

2 2 Hoe variabelen behandelen?  Voorbeeld:  p veel_werk(huis(p))  groot(huis(p))  p veel_werk(huis(p))  groot(huis(p)) false  veel_werk(huis(Bos))  We willen graag besluiten:  door middel van veralgemeende modus ponens. false  groot(huis(Bos)) Principe: gebruik instantiaties van de 2 Horn clauses, zodanig dat ze wél ‘matchen’.

3 3 Meer voorbeelden:  Vanaf nu laten we universele quantificatie weg, ver- mits alle variabelen universeel gequantificeerd zijn.  Enkele voorbeelden met standard modus ponens: verwant(x,y)  ouder(x,y) ouder(John,Mary) ouder(John,Mary) verwant(John,Mary) houdtvan(John,x)  verwant(John,x) verwant(y,vader(y)) verwant(y,vader(y)) houdtvan(John,vader(John)) Unificatie !!

4 4 Substituties:  Voorbeelden:  ={ x / h(g(A)), y / g(A), z / w}  = { x / g(z), y / B}  Een substitutie is een eindige verzameling koppels van het type variabele / term, zo dat alle variabelen aan de linkerkanten van koppels verschillend zijn.  In onze substituties zullen we hier NIET toelaten dat variabelen die links voorkomen ooit in een rechterkant term voorkomen.

5 5 Substituties toepassen:  Substituties kunnen toegepast worden op enkelvoudige expressies (atomen of termen), door het vervangen van alle voorkomens van de linker variabelen door hun corresponderende termen.  = { x / g(z), y / B} p(x, f(y, z))  = p(g(z), f(B, z))  ={ x / h(g(A)), y / g(A), z / w} p(x, f(y, z))  =p(h(g(A)), f(g(A), w)) p(x, f(y, z))  = p(h(g(A)), f(g(A), w))  Voorbeelden:

6 6 Herinner de motivatie:  We wensen substituties die atomen gelijk maken. veel_werk(huis(p))  groot(huis(p)) veel_werk(huis(p))  groot(huis(p)) false  veel_werk(huis(Bos))  De twee atomen in de clauses:  moeten gelijk worden.

7 7 “Unifiers”  Voorbeeld: S = {verwant(John,x), verwant(y, vader(y))}  = {y / John, x / vader(John)} is een unifier voor S S  = {verwant(John,vader(John))}  Gegeven een verzameling van enkelvoudige expressies S, dan noemen we een substitutie  een unifier voor S als: S  is a singleton

8 8 Nog een extra verfijning:  Voor afleidingsstap: verwant(x,y)  ouder(x,y) ouder(John,z) ouder(John,z)  hebben we: S = {ouder(x,y), ouder(John,z)}  en zijn er verschillende unifiers:  = {x / John, y / z}  = {x / John, y / Mary, z / Mary} enz.  Alleen de meest algemene, , laat de sterkste afgeleide conclusie toe: verwant(John,z)

9 9 Relatie tussen deze?  Voorbeeld: S = {ouder(x,y), ouder(John,z)}  = {x / John, y / z} S  = {ouder(John,z)}  = {x / John, y / Mary, z / Mary} S  = {ouder(John,Mary)} Er bestaat een bijkomende substitutie:  = {z / Mary} met S  = ( S  ) 

10 10 Meest algemene unifier:  Gegeven een verzameling van enkelvoudige expressies S, een meest algemene unifier  voor S is een unifier voor S, zó dat voor alle andere unifiers  voor S, er een substitutie  bestaat zodat: S  = (S  )   Sleutel-idee: creeer minimale instantiaties!  Notatie:  = mgu(S), of  = mgu(A, B) voor S = {A,B}

11 11 Veralgemeende modus ponens voor Horn clauses A  B1  B2  …  Bi  …  Bn Bi’  C1  C2  …  Cm  (A  B1  B2  …  C1  C2  …  Cm  …  Bn)   Veralgemeende modus ponens moet verder uitgebreid worden tot:  waarin  = mgu( Bi, Bi’)  Let wel: Bi and Bi’ moet hetzelfde predicaat hebben.  Correctheid: wegens correctheid van alle gegronde instantiaties van deze afleiding.

12 12 Voorbeeld: enkele stappen  Bemerk: we zullen variabelen altijd van nieuwe namen voorzien teneinde ‘toevallige’ clashes te 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:

13 13 Achterwaartse procedure voor Horn clauses Goal := false  B1  B2  …  Bn ; Repeat Select some Bi atom from the body of Goal Select some clause Bi’  C1  C2  …  Cm from Select some clause Bi’  C1  C2  …  Cm from T such that  = mgu(Bi, Bi’) exists T such that  = mgu(Bi, Bi’) exists Goal := false  (B1  …  Bi-1  C1  C2  …  Cm Goal := false  (B1  …  Bi-1  C1  C2  …  Cm  Bi+1  …  Bn)   Bi+1  …  Bn)  Until Goal = false  or no more Selections possible  Opnieuw: concrete versies van dit generisch schema vereisen mogelijk backtracking over eerdere selecties,  of behandelen het probleem als een algemeen zoekprobleem doorheen de zoekruimte van algeleide doelstellingen.

14 14 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} false  groot(huis(x))  = { x2 / x} groot(huis(x2))  rijk(x2) false  rijk(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 } belg(Bos)  = { x / Bos } false  showm(Bos) showm(Bos)  = { } false 

15 15 Waarom variabelen hernoemen? false  p(x) p(y)  q(z,y) false  q(z,y)  = {x/y } false  p(x) p(y)  q(x,y) false  q(y,y)  = {x/y }  Beschouw de afleidingsstap:  Probleem: p(y)  q(x,y) is equivalent met p(y)  q(z,y) en dus kon ook de afleidingsstap:  waaruit we een strikt sterkere conclusie krijgen !  Altijd eerst variabelen van disjuncte namen voorzien !!

16 16 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  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 !

17 17 Volledigheid:  Achterwaartse veralgemeende modus ponens, met een volledige zoekmethode over de zoekruimte van de afgeleide doelstellingen en met hernoeming van de variabelen is volledig.  Merk op dat het alleen maar semi-beslissend is, want de zoekruimte van doelstellingen kan oneindig groot zijn,  dus, in het algemeen, kunnen we hiermee niet beslissen of we tot false  kunnen herleiden.

18 18 Een oneindige afleiding:  Voorbeeld: nat(s(x))  nat(x) false  nat(u) false  nat(x1) {u/s(x1)} false  nat(x2) {x1/s(x2)}...

19 19 Met volledige zoekmethode wel een antwoord voor:  Voorbeeld: nat(0) nat(s(x))  nat(x) false  nat(u) false  nat(x1) {u/s(x1)} false  nat(x2) {x1/s(x2)}... false  {u/0}{u/0}{u/0}{u/0} {x1/0}

20 Unificatie Een basis algoritme in Automatische Redeneren

21 21 Een unificatie algoritme :={ s = t }; mgu:= { s = t }; Stop:= false; Case: t is a variable, s is not a variable: Case: t is a variable, s is not a variable: replace s = t by t = s in mgu; replace s = t by t = s in mgu; Case: s is a variable, t is the SAME variable: Case: s is a variable, t is the SAME variable: delete s = t from mgu; delete s = t from mgu; Case: s is a variable, t is not a variable and Case: s is a variable, t is not a variable and contains s : contains s : Stop:= true; Stop:= true;...... While not(Stop) and mgu still contains s = t of

22 22 Unification algorithm (2) If Stop = false : Report mgu ! Case: s is a variable, t is not identical to nor Case: s is a variable, t is not identical to nor contains s and s occurs elsewhere in mgu: contains s and s occurs elsewhere in mgu: replace all other occurrences of s in mgu by t ; replace all other occurrences of s in mgu by t ;... Case: s is of the form f(s1,…,sn), t of g(t1,…,tm): if f  g or n  m : Stop := true; if f  g or n  m : Stop := true; else replace s = t in mgu by else replace s = t in mgu by s1 = t1, s2 = t2, …, sn = tn ; s1 = t1, s2 = t2, …, sn = tn ;End_while

23 23 Voorbeeld 1:  Unificeer: p(B,y) en p(x,f(x)) :  Init: mgu:= { p(B,y) = p(x,f(x))}  Case 5: mgu:= {B = x, y = f(x) }  Case 1: mgu:= {x = B, y = f(x) }  Case 4: mgu:= {x = B, y = f(B) }  Geen cases meer toepasbaar !  p(B,y) en p(x,f(x)) zijn unificieerbaar  mgu = { x/B, y/f(B) }  resultaat: p(B, f(B))

24 24 Voorbeelden 2 & 3:  Unificeer: p(A) en p(f(x)) :  Init: mgu:= { p(A) = p(f(x))}  Case 5: mgu:= {A = f(x) }  Case 5: Stop:= true NIET unificeerbaar!  Unificeer: x en f(x) :  Init: mgu:= { x = f(x)}  Case 3: Stop:= true NIET unificeerbaar!

25 25 Terminatie van het algoritme:  Stop = true  geen unifier  expressies waren niet unificeerbaar  Geen cases meer toepasbaar:  mgu bevat een verzameling gelijkheden van de vorm:  {x1 = t1, …, xn = tn} met  alle x1,…,xn onderling verschillende variabelen !  De substitutie {x1/t1,…,xn/tn} is een meest algemene unifier voor de initiële s en t.  Martelli-Montanari algoritme.  Uitbreidbaar voor meer dan 2 expressies.

26 26 Rekenen met unificatie  Voorbeeld: geimpliceerd: mgu = {u/point(1,z)} geimpliceerd: mgu = {u/y,v/y } vertikaal(segment(punt(x,y),punt(x,z))) horizontaal(segment(punt(x,y),punt(z,y )))  u vertikaal(segment(punt(1,2),u))  u,v horizontaal(segment(punt(1,u),punt(2,v)))

27 27 Representatiekracht van Horn clauses  De meeste predicaten logica formules kunnen gemakkelijk hervormd worden tot Horn clauses.  Voorbeelden:  x cat(x)  dog(x)  pet(x)  x poodle(x)  dog(x)  small(x) pet(x)  cat(x) pet(x)  dog(x) dog(x)  poodle(x) small(x)  poodle(x)  MAAR:  x human(x)  male(x)  female(x)  x dog(x)  ~abnormal(x)  has_4_legs(x) ????


Download ppt "AR voor Horn clause logica Introductie van: Unificatie."

Verwante presentaties


Ads door Google