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