AR voor Horn clause logica

Slides:



Advertisements
Verwante presentaties
Programmeren met Alice
Advertisements

AR voor Horn clause logica Introductie van: Unificatie.
Deel XIV Eerste echte e-commerce applicatie Implementatie (vervolg) 1 Internetapplicaties Deel 14: Eerste echte e-commerce applicatie: Implementatie (vervolg)
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica IN3 005 Deel 2 College 5 Cees Witteveen
Hogere-ordefuncties nEen lijst langs lopen en met elk element iets doen nEen lijst langs lopen en sommige elementen selecteren map filter.
Reductiemachine Functionele talen en dus de -calculus, worden vaak geïmplementeerd door een reductiemachine. De elementaire stap is een reductie, en de.
Datastructuren Analyse van Algoritmen en O
VBA en VBS Een introductie.
Automatisch redeneren en stellingen bewijzen
Automatische Redeneer-systemen
Automatisch Redeneren in de praktijk
Inleiding Databanken: oefeningen 4 Sven Casteleyn 4 Lokaal: 6G HomePage: te bereiken via
AR: clausale logica De stap naar: resolutie. 2 Clausale vorm  Veralgemeende vorm van de formules:  x1 …  xk A1  A2 …  Am  B1  B2 …  Bn  Horn.
Hoofdstuk 6: Controle structuren
 - congruentie -regel:
1 Datastructuren Zoekbomen II Invoegen en weglaten.
Presentatie vergelijkingen oplossen Deel 2
De grafiek van een lineair verband is ALTIJD een rechte lijn.
Gebruiken.
1. Parsing (epsilon’s, tabellen) 2. Unificatie grammatica Natuurlijke taalverwerking week 7.
Natuurlijke-Taalinterfaces week 5 Lambda-termen en Lambda-conversie.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3005 Deel 2 College 3 Cees Witteveen
-calculus.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
Informatiesystemen in de Bouw
Datastructuren Sorteren, zoeken en tijdsanalyse
Eenvoudig voorbeeld: Steden in Belgie
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 3 Cees Witteveen.
LauwersCollege Buitenpost Informatica
AI101  Historisch Perspectief Weak Methods Logic Theorist General Problem Solver  Resolution Theorem Proving Leeswijzer: Hoofdstuk 13.0, 13.1, 13.2 AI.
Animatie nAnimatie: “tekenfilm” programma toont automatisch veranderende beelden nGemakkelijk te programmeren met gebruik van de klasse Thread “draadje”
CONTROLESTRUCTUREN (DEEL 1)
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
MBR AtT1 College 9 Diagnose met correctmodellen. Verdieping in de formalisatie. In reader: Characterizing diagnoses and Systems J. de Kleer, A.
Beslissingen. Inhoud: Booleaanse expressies: wat? Booleaanse expressies: wat? Relationele en logische operatoren Relationele en logische operatoren De.
MBR AtT1 College 7 : covering theorie (Deel 2) model MAB-diagnose: College 6: Covering theorie College 7: Algoritme voor covering theorie werkelijk.
Les 0 Structured Query Language SQL. Programma Les 0 – Introductieopdracht Les 1 Les 2 Les 3 Schriftelijke toets.
Spelen Instructions: 1) Verdeel klas in teams. 2) Stel een vraag aan een team. 3) Bij een goed antwoord mag er aan het rad gedraaid worden. 4) Typ het.
GegevensAnalyse Les 2: Bouwstenen en bouwen. CUSTOMER: The Entity Class and Two Entity Instances.
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
De O notatie… Limiet van Bachmann-Landau: Paul Gustav Heidrich Bachmann Edmund Landau
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
1 februari 2016 PHP expressie statement. 1 februari 2010 Titel van de presentatie 2 Boole logica? Definitie De booleaanse operatoren zijn genoemd naar.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Informatie beoordelen If else Switch En Wiskunde.
Berekening van de Orde Van een Algoritme
Key Process Indicator Sonja de Bruin
Minimum Opspannende Bomen
Programmeren met Reeksen
KRITISCH DENKEN 11 Co-premissen II © Kritisch Denken.
Recursie in de wiskunde
Gameprogrammeren: Keuzeopdrachten
Gameprogrammeren: Expressies
-calculus versus Scheme
Modderdorp UNPLUGGED Bron: csunplugged.org.
Verlangen naar God Longing for God
De grafiekgenerator.
De grafiek van een lineair verband is ALTIJD een rechte lijn.
Modderdorp UNPLUGGED Bron: csunplugged.org.
SQL Les February 2019.
PHP regular expressions
Automatisch redeneren en stellingen bewijzen
Automatische Redeneer-systemen
De stap naar: resolutie
Rekenen Mevr. Koçak 13 november 2018.
Software Development fundamentals
Merkwaardig product: kwadraat van een tweeterm
Transcript van de presentatie:

AR voor Horn clause logica Introductie van: Unificatie

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’.

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

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.

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.

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.

“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

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)

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 ) 

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}

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.

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:

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.

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 

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

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 !

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.

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)} ...

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}

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

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; ...

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 !

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))

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!

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.

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 }

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) ????