Achtergrond
In het vorige college hebben we algemene resolutie behandeld
voor clausules en we hebben gezien dat iedere predicaatlogische formule "herschreven"
kan worden naar een conjunctie van clausules, waarbij inconsistentie bewaard
blijft. Resolutie heeft nog erg veel keuze momenten (welke literals van welke
clausules moeten we met elkaar unificeren om een resolutiestap te doen?) waardoor
het in de praktijk niet erg bruikbaar is. Daarom beperkt men zich meestal tot
logische programma's (bestaande uit een rij logische clausules) waar
dan 1 doel bij gestopt wordt om inconsistentie te bewijzen.
Deze vorm van resolutie heet logisch programmeren en computer systemen
als Prolog zijn ervoor gemaakt om hiermee te werken. Bij logisch programmeren
zijn er nog steeds keuzes te maken. SLD resolutie is een vorm van resolutie
die de keuzes op een vaste manier voorschrijft, volgens een rekenregel
en een zoekregel.
In dit college bestuderen we SLD resolutie: hoe het algoritmisch werkt en de keuzes die ermee gemoeid zijn. Een belangrijk begrip is de SLD boom, die op een samenhangende manier alle mogelijke SLD resoluties beschrijft (gegeven een zoekregel). Daarnaast bekijken we Herbrand modellen van logische programma's. Deze modellen worden gebruikt om de volledigheid van SLD resolutie aan te tonen: "Als S u {~A} inconsistent is, dan is er een succesvolle SLD afleiding van S u{~A}". (De correctheid van resolutie hebben we al in een eerder college bewezen.)
Leerdoel
Na het voltooien van deze taak kunt u
Instructie
Product
Reflectie