Die Prädikatenlogik ist eine Erweiterung der Aussagenlogik, wobei Quantoren, Funktions- und Prädikatsymbole hinzukommen. Durch diese Konzepte sind Sachverhalte beschreibbar, die im Rahmen der Aussagenlogik nicht formuliert werden können. In der Aussagenlogik war es z.B. nicht möglich auszudrücken, daß gewisse ``Objekte`` in Beziehung stehen; daß eine Eigenschaft für alle Objekte gilt, oder daß ein Objekt mit einer gewissen Eigenschaft existiert.
Eine (prädikatenlogische) Signatur S ist ein Tupel , wobei und endliche oder abzählbar unendliche Mengen sind mit und .
Eine Variable hat die Form mit . Ein Prädikatsymbol hat die Form und ein Funktionssymbol hat die Form mit und . Hierbei heißt i jeweils der Unterscheidungsindex und k die Stellenzahl oder Stelligkeit. Man definiert die Menge der Terme durch einen induktiven Prozeß:
Nun kann man die Menge der prädikatenlogischen Formeln definieren:
Eine Struktur ist ein Paar , wobei eine beliebige aber nicht leere Menge ist, die Grundmenge oder Universum von genannt wird. Ferner ist eine Abbildung, die
Die Prädikatenlogik ist in folgendem Sinn eine Erweiterung der Aussagenlogik: Falls alle Prädikatsymbole nullstellig sein müssen erhält man Formeln der Aussagenlogik, wobei die nullstelligen Prädikatsymbole die Rolle der atomaren Formeln der Aussagenlogik übernehmen.
Die Begriffe ``Folgerbarkeit``, ``Modell`` und ``erfüllbar`` lassen sich direkt aus der Aussagenlogik übertragen.
Für die Ableitbarkeit kommen weitere logische Axiome zu denen der Aussagenlogik hinzu. Ausserdem gibt es eine weitere Ableitungsregel, nämlich das Generalisieren.
Sei S eine Signatur, s ein Term aus und x eine Variable.
Für entsteht aus t, indem wir jedes Auftreten von x in t durch s ersetzen.
Für ist
Wenn wir jedes freie Auftreten von x in A durch s ersetzen, so kommt keine der Variablen in s in den Wirkungsbereich eines Quantors in A.
Als Grundlage für die Generalisierungsrelation kann der Forgerungsbegriff verwendet werden. Da die Folgerbarkeit im allgemeinen Fall aber nicht entscheidbar ist, wird die schwächere Subsumtionsbeziehung bevorzugt. Immer, wenn die Subsumtionsbeziehung gilt, gilt auch die logische Folgerung - aber nicht umgekehrt!
Eine Klausel C1 ist genereller als eine andere Klausel C2, wenn gilt: C1 subsumiert C2.Für Literale gilt:
Ein Literal L1 subsumiert ein anderes Literal L2, wenn es eine Substitution gibt, so daß .Damit wird die Substitution zur Grundlage der Formalisierung der Generalisierung.
Für Hornklauseln gilt folgende Definition der -Subsumtion:
Eine Hornklausel -subsumiert eine Hornklausel , gdw. es eine Substitution gibt, so daß , und .
Die generalisierte -Subsumtion generalisiert zwei funktionsfreie Hornklauseln bezüglich gegebenem Hintergrundwissen. Die Substitution führt für alle Variablen der zu generalisierenden Klausel neue Konstante ein. bezeichne eine Substitution von Termen. Dann ist die Generalisierung nach Buntine folgendermaßen definiert:
Operationalisierung der Definition:
Jede Klausel der generelleren Klauselmenge kann zurückgeführt werden auf eine Klausel der spezielleren Klauselmenge, indem
Sei D eine Hornklausel,
und vars eine Funktion, die die Menge der Variablen einer Klausel berechnet.
ist ein lokaler Teil von D genau dann, wenn
und es kein
gibt, welches auch ein lokaler Teil von D ist. Ein lokaler Teil
ist für eine Konstante k:
k-vlokaler Teil gdw.
,
k-llokaler Teil gdw.
.
Eine Hornklausel D heißt k-llokal genau dann, wenn jeder lokale Teil von D ein k-llokaler bzw. ein k-vlokaler Teil ist.
Eine Klausel ist k-lokal, wenn sie einen lokalen Teil von Variablen oder Literalen hat, der k-llokal oder k-vlokal ist.
Ein Term aus einem Klauselkopf K ist mit einer Kette der Länge 0 verbunden. Für den Klauselkörper nimmt man an, daß die Literale nach ihrer Verbundenheit mit dem Klauselkopf geordnet sind: . Ein Term t aus ist genau dann durch eine deterministische Kette der Länge d+1 verbunden, wenn
Eine Klausel ist ij-deterministisch, wenn sie
Das Ausführen eines Programms kann aufgefaßt werden als das (automatische) Herleiten der leeren Klausel aus einer gegebenen Klauselmenge, zusammen mit einer Antworterzeugungskomponente. Die aus dem Resolutionsbeweis extrahierte Antwort kann dann als Rechenergebnis des (Logik-) Programms aufgefaát werden.
Sei eine i.a. erfüllbare Klauselmenge F gegeben. Dieses F kann man als ein (Logik-) Programm auffassen: In F kommen gewisse Prädikate und Funktionen vor und es werden durch die Klauseln in F gewisse Aussagen über deren Beziehung zueinander gemacht.
Es soll durch die Logik-Programmierung nicht nur die Frage, ob die Existenz eines (oder mehrerer) Objekte mit gewissen Eigenschaften aus dem Programm F folgt, vom Auswertungsmechanismus mit ja oder nein beantwortet werden. Es soll vielmehr im ja-Fall ein entsprechendes Objekt (oder möglicherweise alle) ausgegeben werden.
Man will z.B. wissen, ob G aus F folgt. Dazu testet man mittels Resolution, ob unerfüllbar ist.