Automatische Redeneer-systemen Voor Eerste-orde Predicaten Logica
AR: algemene context. Gegeven is een kennisbank in predicaten logica: T is een verzameling van eerste-orde formules formeel ook genoemd: een “Theorie’’ Gegeven een bijkomende eerste-orde formule: F Is F een logisch gevolg van T ? Notatie: T |= F (T impliceert F) Vind afleidingstechnieken die dit uitmaken voor ELKE F en T. Vereisten: correctheid -- volledigheid -- efficientie
AR: beslisbaarheid. Stelling Church ‘36: MAAR: semi-beslisbaar! Er kan GEEN ENKEL ALGORITME bestaan dat beslist of T |= F, voor elke theorie T en elke formule F. MAAR: semi-beslisbaar! Volledigheidsstelling van Goedel ‘31: Er bestaat een redeneertechniek, zo dat voor elke theorie T en formule F, waarvoor T |= F, de redeneer-techniek bewijst dat T |= F. DUS: als F volgt uit T, dan kunnen we dat bewijzen, anders is het mogelijk dat onze procedure niet eindigt.
Even uittesten... De stellingen van Church en Goedel zijn contradic-torisch: We kunnen in parallel F en ~F proberen te bewijzen en volgens de stelling van Goedel moet na eindige tijd 1 van de twee lukken. Fout ! Stel: T = {slim(Kelly)} en F = sterk(Kelly) Alhoewel sterk(Kelly) ~sterk(Kelly) altijd waar is, hebben we: noch: {slim(Kelly)} |= sterk(Kelly) noch: {slim(Kelly)} |= ~sterk(Kelly)
AR: algemene outline (1). Eerst schetsen we de meest algemeen gebruikte aanpak voor automatisch redeneren in eerste-orde: achterwaartse resolutie De verschillende technische componenten worden pas later in volledig technisch detail uitgewerkt (outline (2)).
AR: algemene outline (2) . We bestuderen verschillende subsets van predicaten logica: gegronde Horn clause logica Horn clause logica Clausale logica volledige predicaten logica Voor elk geval bestuderen we semi-beslissende procedures. Elke uitbreiding vereist de introductie van nieuwe technieken .
Achterwaarts redenerende Resolutie … in een notedop
Achterwaartse resolutie: 0) De taak: een voorbeeld. 1) Bewijs door inconsistentie. 2) Conversie naar clausale vorm. 3) Unificatie. 4) De resolutie stap. 5) (Achterwaartse) resolutie bewijzen.
0) De TAAK (voorbeeld): z ~ q(z) y p(f(y)) x p(x) q(x) r(x) T p = parent f = father r = rich q = old Zijn axioma’s: beschrijven kennis over een of andere wereld. u r(f(u)) Is in deze wereld: steeds waar ? F Hoe in het algemeen zo’n stelling bewijzen?
1) Bewijs door inconsistentie u r(f(u)) F Niet F rechtstreeks bewijzen: Maar de negatie van F toevoegen aan de axioma’s een bewijzen dat de uitbreiding inconsistent is. ~ u r(f(u)) z ~ q(z) y p(f(y)) x p(x) q(x) r(x) NIEUWE TAAK: is inconsistent. de 4 axioma’s zijn nooit samen waar is één interpretatie
2) Clausale vorm: = Normaliseer de formules tot een (eenvoudigere) standaard vorm. Elke verzameling axioma’s kan getransformeerd worden in een verzameling die alleen formules bevat van de vorm: xy…z p(…) q(…) … r(…) t(…) s(…) … u(…) alleen links; alleen rechts geen ~ ; geen die inconsistent is als en slechts als het originele stel inconsistent was. Merk op: je kan “x y … z“ weglaten.
Voorbeeld: u false r(f(u)) ~ u r(f(u)) z false q(z) z ~ q(z) y p(f(y)) : is al in clausale vorm: ( P P true) x p(x) q(x) r(x) x q(x) r(x) p(x) Ps: vereist meestal veel meer werk !
3) Unificatie: Gegeven 2 atomaire formules: Vb.: p(f(A),y) p(x, g(x)) vind hun meest algemene gemeenschappelijke instantiatie. Vb.: x moet worden: f(A) g(x) moet worden: g(f(A)) y moet worden: g(f(A)) p(f(A), g(f(A))) Meest algemene unifier (mgu) : x -> f(A) y -> g(f(A))
4) De resolutie stap Propositie logica: P Q P Q ~Q ~P Q P P true Modus ponens Modus tollens P Q P Q ~Q ~P Q P P true Q true Q P false Q false P P1 P2 … Pn Q1 ... Qm R1 … Rk P1 S1 … Sl P2 … Pn R1 … Rk Q1 ... Qm S1 … Sl Resolutie
De resolutie stap (2): Predicaten logica: p(x,f(A)) q(g(x)) Voorbeeld: p(x,f(A)) q(g(x)) r(z) p(B,z) r(f(A)) q(g(B)) mgu(p(x,f(A)), p(B,z)) = x -> B z -> f(A) = mgu toegepast op r(z) q(g(x)) De clausules waarop je resolutie uitvoert mogen geen variabelen gemeenschappelijk hebben.
5) Resolutie bewijzen: Om een stel clauses inconsistent te bewijzen: selecteer er 2 uit, waarop resolutie mogelijk is pas resolutie toe en voeg het resultaat toe aan de set als je de clause false vindt: STOP ! Betekent inconsistentie van de laatste set EN inconsistentie van de oorspronkelijke EN dat F geïmpliceerd was door T
Voorbeeld: q(x) r(x) p(x) false r(f(u)) false q(z) p(f(y)) q(f(u)) p(f(u)) x -> f(u) false p(f(u)) z -> f(u) false y -> u Dus: inconsistent !
Volledige Predicaten Logica Een diepere studie Modus ponens Gegronde Horn Logica Unificatie Horn Logica Resolutie Clausale Logica Normalizatie Volledige Predicaten Logica
Horn clause logica Alle formules in T zijn van de vorm: x1 … xk A B1 B2 … Bn Alle formules in T zijn van de vorm: waarin A, B1, B2,…,Bn atomen zijn. Een atoom is een formule van de vorm p(t1,…,tm), met p een predicaat symbool en t1,…,tm termen. Horn clause formules zijn universeel gequantificeerd over alle variabelen die erin voorkomen. B1,…,Bn noemen we body-atomen van de Horn clause; A is het hoofd van de Horn clause. n mag ook nul zijn: in dat geval noemen we de Horm clause een feit.
Welke soort van formules kunnen we bewijzen? x1 … xk B1 B2 … Bn In Horn clause logica, beperken we ons tot formules F van de vorm: waarin B1, B2, …, Bn opnieuw atomen zijn. Alle variabelen zijn existentieel gequantificeerd !
Een heel simpel voorbeeld: Bosmans is showmaster (1) Showmasters zijn rijk (2) Rijke mensen hebben grote huizen (3) Grote huizen vereisen veel onderhoud (4) Doel: automatisch afleiden dat Bosmans’ huis veel onderhoud vereist.
Representatie in Horn logica: Bosmans is showmaster (1) Showmasters zijn rijk (2) Rijke mensen hebben grote huizen (3) Grote huizen vereisen veel onderhoud (4) Te bewijzen: showmaster(Bosmans) p rijk(p) showmaster(p) p groot(huis(p)) rijk(p) p veel_werk(huis(p)) groot(huis(p)) veel_werk(huis(Bosmans))
AR voor gegronde Horn clause logica Achterwaarts redenerenende bewijsprocedures gebaseerd op veralgemeende Modus ponens
Beperking tot gegronde Horn clauses: showmaster(Bosmans) rijk(Bosmans) showmaster(Bosmans) groot(huis(Bosmans)) rijk(Bosmans) veel_werk(huis(Bosmans)) groot(huis(Bosmans)) Dus voorlopig: Horn clauses zonder variabelen: Voorbeeld: veel_werk(huis(Bosmans)) Bewijs:
Eenvoudig met modus ponens ! 3 toepassingen van modus ponens: showm(Bos) rijk(Bos) showm(Bos) rijk(Bos) groot(huis(Bos)) rijk(Bos) groot(huis(Bos)) geeft de gewenste conclusie. veel_werk(huis(Bos)) groot(huis(Bos)) veel_werk(huis(Bos))
Modus ponens in AR: Modus ponens is correct: B A B A Neem een interpretatie waarin zowel B als A B waar zijn (= neem een model van {B , A B} ) Modus ponens is correct: Dan: A is ook waar in die interpretatie (zie waarheidstafels) Probleem: hoe dit organizeren in een procedure zodat het ook volledig wordt (voor gegronde Horn clauses)?
Inconsistentie: Een theorie T is inconsistent als ze geen enkel model heeft. Stel T een theorie en F een formule. T impliceert F als en slechts als T {~F} inconsistent is. Stelling: Bewijs: T impliceert F asa Elk model van T maakt F waar asa Elk model van T maakt ~F onwaar asa T {~F} heeft geen model asa T {~F} is inconsistent
Uitgebreid voorbeeld: europeaan(Bos) belg(Bos) rijk(Bos) showm(Bos) europeaan(Bos) groot(huis(Bos)) rijk(Bos) veel_werk(huis(Bos)) groot(huis(Bos)) showm(Bos) belg(Bos)
Opnieuw het voorbeeld Toon dat de theorie: inconsistent is. showm(Bos) belg(Bos) europeaan(Bos) belg(Bos) rijk(Bos) showm(Bos) europeaan(Bos) groot(huis(Bos)) rijk(Bos) veel_werk(huis(Bos)) groot(huis(Bos)) ~ veel_werk(huis(Bos)) inconsistent is. Probleem: dit is geen Horn clause theorie !?
Refutatie bewijzen: het “false” predicaat We introduceren een nieuw predicaat symbool: We spreken af dat false de waarheidswaarde ‘onwaar’ heeft onder elke interpretatie. Stel je voor dat false gedefinieerd is als : false p ~p voor één of ander predicaat p
“definiete” doelstellingen: In de Horn logica setting heeft F de vorm: x1 … xm B1 B2 … Bn Wat is dan de vorm van ~F? ~(x1 … xm B1 B2 … Bn) x1 … xm ~(B1 B2 … Bn) x1 … xm false ~(B1 B2 … Bn) x1 … xm false B1 B2 … Bn A ~B A B Merk op: ~F is nu opnieuw een Horn clause !!
Opnieuw het voorbeeld showm(Bos) belg(Bos) europeaan(Bos) belg(Bos) rijk(Bos) showm(Bos) europeaan(Bos) groot(huis(Bos)) rijk(Bos) veel_werk(huis(Bos)) groot(huis(Bos)) false veel_werk(huis(Bos)) De uitgebreide theorie (inconsistent te bewijzen) is nu: een gegronde Horn clause theorie !
Modus ponens veralgemeend: A B1 B2 … Bi … Bn Bi C1 C2 … Cm A B1 B2 … C1 C2 … Cm … Bn Gewone Modus ponens is het bijzonder geval met: n = i = 1 and m =0 Correctheid: via waarheidstafels
Enkele achterwaartse stappen met ons voorbeeld: false veel_werk(huis(Bos)) veel_werk(huis(Bos)) groot(huis(Bos)) false groot(huis(Bos)) false groot(huis(Bos)) groot(huis(Bos)) rijk(Bos) false rijk(Bos) en zo verder ...
De achterwaartse procedure: het idee Converteer F in een definiete doelstelling: false B1 B2 … Bi … Bn Pas veralgemeende modus ponens toe op de body- atomen Bi van de doelstelling, gebruik makend van de Horn clauses in T totdat: wordt afgeleid. false Dus: een onware formule is logisch gevolg van T {~F} we hebben inconsistentie van T {~F} bewezen
Achterwaartse procedure Goal := false B1 B2 … Bn ; Repeat Select some Bi atom from the body of Goal Select some clause Bi C1 C2 … Cm from T Replace Bi in the body of Goal by C1 C2 … Cm Until Goal = false or no more Selections possible Hier bovenop moet je backtracking toelaten over de geselecteerde clauses en geselecteerde body atomen. Als het algoritme stopt omdat het al deze alter-natieven heeft geprobeerd: F was geen gevolg!
Opnieuw het voorbeeld Stap 0: Goal := false veel_werk(huis(Bos)) select: veel_werk(huis(Bos)) groot(huis(Bos)) Stap 1: Goal := false groot(huis(Bos)) select: groot(huis(Bos)) rijk(Bos) Stap 2: Goal := false rijk(Bos) select: rijk(Bos) showm(Bos) europeaan(Bos) Stap 3: Goal := false showm(Bos) europeaan(Bos) select: showm(Bos) Stap 4: Goal := false europeaan(Bos) select: europeaan(Bos) belg(Bos) Stap 5: Goal := false belg(Bos) select: belg(Bos) Stap 6: Goal := false
Nog een voorbeeld (propositioneel) p q r q t q s r n r o s o n Bewijs: p Bemerk: non-determinisme zowel op atoom selectie ALS op clause selectie ! we illustreren het alleen op clause selectie hier
Zoekboom doorlopen door de achterwaartse procedure false p p q r q t q s r n r o s o n false q r false t r false s r false r false n false o false false
Achterwaartse procedure is efficiënter Bewijs is nu doelgericht naar de te bewijzen stelling. geen exploratie van irrelevante regels meer Verschillende zoekmethodes kunnen gebruikt worden om deze zoekboom te doorlopen. Atoom-selectie kan ook de efficiëntie beïnvloeden: bv.: door het sneller detecteren van een falende tak maar heeft geen effect op het vinden van een oplossing (in het geval er maar eindig veel ground Horn clauses zijn)
Volledigheid: Voorbeeld: Mogelijke afleidingen: …… false p p p (1) p (2) Mogelijke afleidingen: false p false (2) false p (1) false p (1) …… (1) Is alleen volledig indien de zoekboom wordt doorzocht met een volledige zoekstrategie.
Representie-kracht van gegronde Horn clauses Is een subset van propositie logica. showm(Bos) showm_Bos groot(huis(Bos)) groot_huis_Bos Voorbeeld: In het algemeen zijn expressievere logica’s nodig. Essentie: met variabelen kan 1 formule equivalent zijn aan een heel groot aantal propositie logica formules