Database Reference
In-Depth Information
durch
{
L
}
ausgedruckt werden. Entsprechend wird eine Liste von Regeln der Form
L
i
or not
L
i
←
Body
.
in
SMODELS
durch
:- Body
.
reprasentiert. Wie in Prolog werden Kopf und Rumpf einer Regel in
SMODELS
durch
:-
getrennt. Die logische Negation
{
L
1
,...,
L
n
}
¬
L wird in
SMODELS
durch
-L
ausge-
druckt.
Ein
SMODELS
-Ausdruck der Form
{
atom
(
X
):
predicate
(
X
)}
denotiert die Menge aller Atome der Form
atom(X)
,sodass
predicate(X)
gilt.
Gelten beispielsweise
block(1)
,
block(2)
und
block(3)
, so steht der Ausdruck
{
on
(
B
,
table
):
block
(
B
)
.
Eine naturliche Zahl
j
am Anfang einer Regel ist eine Kardinalitatsein-
schrankung, die die Antwortmengen auf solche Mengen einschrankt, deren Machtig-
keit mindestens
j
ist [215]. Entsprechend ist
j
rechts von einem geklammerten Aus-
druck eine obere Schranke fur die Machtigkeit der Antwortmengen. Beispielsweise
steht
}
fur
{
on
(
1
,
table
),
on
(
2
,
table
),
on
(
3
,
table
)
}
}
5
fur solche Literalmengen S, die mindestens 2 und hochstens 5 Literale der Form
on
(
B
,
table
)enthalten,sodass
block(B)
gilt.
2
{
on
(
B
,
table
):
block
(
B
)
11.8.2
Planen mit
SMODELS
Zur Illustration verwenden wir wieder ein Beispiel aus der Blockwelt. Dabei erwei-
tern wir das Szenario so, dass der Roboter, der die Blocke bewegt, mehrere Greifar-
me hat, so dass auch mehrere Blocke gleichzeitig bewegt werden konnen. Werden
zwei Blocke gleichzeitig bewegt, so konnen diese dabei allerdings nicht aufeinander
gestapelt werden.
Die Zustande dieser Blockwelt werden durch Mengen von Literalen beschrie-
ben. Ein Zustand enthalt insbesondere Literale uber den Standort der einzelnen
Blocke zu einem Zeitpunkt. So soll im Ausgangszustand die Verteilung der Blocke
durch die sechs Regeln
on(1,2,0). % Initialzustand:
on(2,table,0). %
on(3,4,0). %
on(4,table,0). % 1 3 5
on(5,6,0). % 2 4 6
on(6,table,0). % --------------
gegeben sein. Dabei sind in einem Literal der Form
on(B,L,T) B
ein Block,
L
ei-
ne Ortsangabe (
location
) und
T
ein Zeitpunkt. Mogliche Ortsangaben sind ein Block