EMA-XPS Online
DEFINE-CONSTRAINT-PATTERN
DEFINE-CONSTRAINT-PATTERN
=========================
syntax: (define-constraint-pattern <Name>
(<log-Var>+)
[:DOCUMENTATION <Dokumentation>]
[:EXPLANATION <Erklärung>]
RULES
(known (<log-Var>+)
and-if <Komplexe-Prädikation>
then {:INCONSISTENT | <Assign-Form>+})
Warnung: Der Erklärungseintrag wird durch
EMA-XPS nicht unterstützt, d.h.
:documentation und :explanation
werden ignoriert.
Das Constraint-Pattern bildet ein sogenanntes Muster
für die Definition der Constraints. Was in einem
Constraint-Pattern definiert wurde, kann für jedes
einzelne Constraint abgearbeitet werden.
Die KNOWN-Klausel bestimmt, welche der logischen
Variablen gebunden sein müssen, damit die Regel
zutrifft. Sie ist für jede Regel obligatorisch.
Die if-Bedingung ist nicht obligatorisch, für sie
gelten die Konventionen der BQL. Im Prämissenteil
der Regel dürfen neben den als bekannt deklarierten
Parametern zusätzliche logische Variablen auf-
treten, aber keine Parameter, die nicht als bekannt
deklariert sind. Lediglich die erste gültige
Instanziierung der Regelprämisse wird ermittelt.
Wenn ein Verhalten :inconsistent ist, wird das Con-
straint abgebrochen.
Die <assign-Form> weist der genannten Variablen einen
Wert zu. Diese darf jedoch nicht als bekannt dekla-
riert sein.
Zusätzlich zu einem Constraint-Pattern müssen Sie
noch die einzelnen Constraints definieren, für die
dieses Verhalten zutreffen soll.
Beispiel: >(define-constraint-pattern
berechne-reale-kosten)
(_reale-Kosten _Landes-Wuensche)
:documentation "Berechnet die
entstehenden Kosten für den Kunden
bei Besuch der Länder
_Landes-Wuensche."
RULES
(KNOWN (_Landes-Wuensche)
THEN (is _reale-Kosten (berechne-kosten-
der-kunde _Landes-Wuensche))))
>(define-constraint berechne-kosten-fuer-
kunden
OF berechne-reale-kosten
FOR-EACH (ein-kunde (instances-of
'Kunde)))
WITH
[entstehende-Kosten ein-Kunde
_reale-Kosten]
[ziele ein-Kunde _Landes-Wuensche])
EMA-XPS Online