De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

AR voor Horn clause logica

Verwante presentaties


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

1 AR voor Horn clause logica
Introductie van: Unificatie

2 Hoe variabelen behandelen?
Voorbeeld: 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 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) verwant(John,Mary) houdtvan(John,x)  verwant(John,x) verwant(y,vader(y)) houdtvan(John,vader(John)) Unificatie !!

4 Substituties: Voorbeelden:  = { x / g(z) , y / B}
 ={ x / h(g(A)) , y / g(A) , z / w} 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 Substituties toepassen:
Voorbeelden:  = { 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)) Substituties kunnen toegepast worden op enkelvoudige expressies (atomen of termen), door het vervangen van alle voorkomens van de linker variabelen door hun corresponderende termen.

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

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 Nog een extra verfijning:
Voor afleidingsstap: verwant(x,y)  ouder(x,y) 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 Relatie tussen deze? Voorbeeld: S  = {ouder(John,Mary)}
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 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 Veralgemeende modus ponens voor Horn clauses
Veralgemeende modus ponens moet verder uitgebreid worden tot: A  B1  B2  …  Bi  …  Bn Bi’  C1  C2  …  Cm (A  B1  B2  …  C1  C2  …  Cm  …  Bn)  waarin  = mgu( Bi, Bi’) Let wel: Bi and Bi’ moet hetzelfde predicaat hebben. Correctheid: wegens correctheid van alle gegronde instantiaties van deze afleiding.

12 Voorbeeld: enkele stappen
false  veel_werk(huis(x)) veel_werk(huis(y))  groot(huis(y)) false  groot(huis(y)) Bemerk: we zullen variabelen altijd van nieuwe namen voorzien teneinde ‘toevallige’ clashes te vermijden. false  showm(z)  belg(z) showm(Bos) false  belg(Bos) Een stap, veel later:

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 T such that  = mgu(Bi, Bi’) exists Goal := false  (B1  …  Bi-1  C1  C2  …  Cm  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 Terug naar het voorbeeld:
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) false  veel_werk(huis(x)) 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) europeaan(x4)  belg(x4)  = { x4 / x } false  showm(x)  belg(x) belg(Bos)  = { x / Bos } false  showm(Bos) showm(Bos)  = { } false 

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

16 Ander voorbeeld: Verschillende manieren van bewijzen !
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,y1) (1) {u/x1,v/y1} false  parent(x1,z1)  anc(z1,y1) (2) {u/x1,v/y1} false  (3) {x1/A,y1/B} false  (4) {x1/B,y1/C} false  anc(B,y1) (3) {x1/A,z1/B} false  parent(B,y1) (1) {x2/B,y2/y1} false  (4) {y1/C} Verschillende manieren van bewijzen !

17 Semi-beslissend: Achterwaartse veralgemeende modus ponens, met een volledige zoekmethode over de zoekruimte van de afgeleide doelstellingen en met hernoeming van de variabelen is semi-beslissend. 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 Een oneindige afleiding:
Voorbeeld: nat(s(x))  nat(x) false  nat(u) false  nat(u) false  nat(x1) {u/s(x1)} false  nat(x2) {x1/s(x2)} ...

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

20 Een basis algoritme in Automatische Redeneren
Unificatie Een basis algoritme in Automatische Redeneren

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

22 Unification algorithm (2)
Case: s is a variable, t is not identical to nor contains s and s occurs elsewhere in mgu: 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; else replace s = t in mgu by s1 = t1 , s2 = t2 , …, sn = tn ; End_while If Stop = false : Report mgu !

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 Voorbeelden 2 & 3: Unificeer: p(A) en p(f(x)) : NIET unificeerbaar!
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 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 Rekenen met unificatie
Voorbeeld: vertikaal(segment(punt(x,y),punt(x,z))) horizontaal(segment(punt(x,y),punt(z,y))) u vertikaal(segment(punt(1,2),u)) geimpliceerd: mgu = {u/point(1,z)} u,v horizontaal(segment(punt(1,u),punt(2,v))) geimpliceerd: mgu = {u/y,v/y }

27 Representatiekracht van Horn clauses
De meeste predicaten logica formules kunnen gemakkelijk hervormd worden tot Horn clauses. Voorbeelden: pet(x)  cat(x) pet(x)  dog(x) x cat(x)  dog(x)  pet(x) dog(x)  poodle(x) small(x)  poodle(x) x poodle(x)  dog(x)  small(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"

Verwante presentaties


Ads door Google