Beim Situationskalkül handelt es sich um eine Methode der Künstlichen Intelligenz. Es werden Auswirkungen von Aktionen auf Situationen in einer Modellwelt unter Verwendung der Prädikatenlogik beschrieben. Angewendet wird der Situationskalkül zum Beispiel in der Sprache GOLOG, welche unter anderem in der Robotik zur Aktionsplanung eingesetzt wird.
Inhaltsverzeichnis |
Die Durchführung einer Aktion a führt zu einer Nachfolgesituation si + 1, die von der vorherigen Situation si und der durchgeführten Aktion abhängig ist. Das lässt sich formal durch eine binäre Funktion do(a,s) ausdrücken: s(i + 1) = do(a,si). Nicht jede Aktion lässt sich in jeder Situation durchführen, das lässt sich durch ein Prädikat Poss(a,s) definieren, welches in allen Situationen wahr ist in denen die Aktion erlaubt ist. Für diese Definition sind häufig Situationsabhängige Prädikate notwendig.
Als Beispiel dient ein Schrank mit mehreren Schubladen. Aus den Schubladen können Gegenstände genommen werden, die Schubladen können geöffnet und geschlossen werden. Dieser Sachverhalt lässt sich folgendermaßen beschreiben:






Das vorangegangene Beispiel führt direkt zum Rahmenproblem, da die Klauseln noch nicht ausreichen um die Welt zu beschreiben. Es fehlen noch triviale Klauseln, die nur aussagen, dass alle anderen Dinge durch die Aktionen nicht verändert werden. Diese Klauseln werden schon bei kleinen Welten außerordentlich zahlreich: Bei 100 verschiedenen Aktionen mit 50 Fluenten sind schon ca. 10000 Klauseln zur Beschreibung notwendig. Raymond Reiter hat für dieses Problem 1991 eine Lösung gefunden, die nur eine Klausel zur Darstellung eines Fluenten benötigt:
![\textrm{Poss}(a,s)\rightarrow [\mathit{istGeschlossen}(x,\textrm{do}(a,s))\equiv [\, \, a=\mathit{schliesseSchublade}(x)\, \, \vee \, \, \mathit{istGeschlossen}(x,s)\, \wedge\, a\neq \mathit{oeffneSchublade}(x)\, \, ]]](/wikipedia.images/J/96e163a5145083cd27e07a73f8541c6f.png)
Die Axiome sind folgende Klauseln, die in jeder Welt gelten:
Es gibt genau eine Anfangssituation S0, keine Situation s liegt vor der Anfangssituation

Jede Situation ist einmalig. Wenn zwei Situationen gleich sind, die durch die Aktion a1 in der Situation s1 und durch die Aktion a2 in der Situation s2 entstanden sind, dann sind sowohl die Situationen s1 und s2 gleich, als auch die Aktionen a1 und a2.

Eine Aussage ist in allen Situationen wahr, wenn sie in der Anfangssituation wahr ist, und die Aussage auch nach Durchführung einer beliebigen Aktion in einer beliebigen Situation wahr bleibt.
![\forall \textrm{P}.\quad \textrm{P}(S_{0})\, \wedge \, \forall a\, \forall s\left[\textrm{P}(s)\! \rightarrow \! \textrm{P}(\textrm{do}(a,s))\right]\; \rightarrow \; \forall s\, \textrm{P}(s)](/wikipedia.images/J/5613667f8cd7af667a4097d1a1b845bd.png)
Ein Teil der Situationen ist sortierbar. Der Vergleichsoperator
wird rekursiv definiert: Eine Situation s1, die vor einer Situation do(a,s2) liegt, die sich durch Ausführung der Aktion a in der Situation s2 ergibt, ist entweder die Situation s2 oder eine Situation, die vor s2 liegt.

Wenn man als Anfangsbedingung setzt, dass sich ein Ball in der geschlossenen linken Schublade befindet, und als Ziel, dass der Ball sich dort nicht mehr befinden soll, lässt sich unter Berücksichtigung aller Klauseln ein Plan berechnen, der die linke Schublade öffnet und den Ball aus der Schublade nimmt.