Es ist wichtig zu verstehen, dass die Sprache prozedural und nicht deklarativ ist: Die Erklärungen und Erklärungen werden in der Reihenfolge ihres Erscheinens zusammengestellt und ausgeführt. Daher ist es nicht möglich, auf einen Bezeichner zu verweisen, der später in der Quelldatei deklariert wird, oder zu berücksichtigen, dass eine Anweisung, die sich später in der Quelldatei befindet, bereits ausgeführt wurde. Darüber hinaus wird die Sprache kompiliert und nicht interpretiert: Die gesamte Quelldatei wird zuerst – als Ganzes – in eine binäre Form (die BIM-Datei) übersetzt, dann wird diese binäre Form des Programms erneut gelesen, um ausgeführt zu werden. Während der Kompilierung wird, mit Ausnahme einiger einfacher konstanter Ausdrücke, keine Aktion ausgeführt. Aus diesem Grund können während der Kompilierungszeit nur einige Fehler erkannt werden, alle anderen werden beim Ausführen des Programms erkannt. Angenommen, wir möchten ein objektorientiertes Typsystem mit einzelner Vererbung modellieren. Wir bräuchten ein Prädikat für die Untertypisierung. Die Untertypisierung sollte eine Teilreihenfolge sein und die einzelne Vererbung respektieren. Bei einigen integrierten Typkonstruktoren, z. B. für Array-of, sollte die Untertypisierung monoton sein. Im folgenden Beispiel wird die erste Möglichkeit zum Deklarieren und Definieren einer Logikgleichung veranschaulicht.

Es ist an das Problem der Lebensmittelherstellung [foodemp] angepasst. Bei diesem Problem wird die Vermischung von Ölen modelliert. führt den gegebenen Ausdruck mit dem erstellten Funktionsprogramm (Modell) aus(bewertet). Zusätzlich zum Modell-/Paketnamen kann mit dieser Direktive eine Dateiversionsnummer angegeben werden: Eine Versionsnummer besteht aus 1, 2 oder 3 Ganzzahlen zwischen 0 und 999, die durch das Zeichen `.` getrennt sind. Wir können die parametrisierte Kartenfunktion verwenden, um endliche Sets und endliche Beutel zu kodieren. Finite Taschen können ähnlich wie Sets modelliert werden. Ein Beutel ist hier ein Array, das Elemente ihrer Multiplizität zuordnet. Zu den Hauptbeuteloperationen gehören Union, die durch Hinzufügen von Multiplizität, Schnittpunkt, durch Die minimale Multiplizität und eine duale Verknüpfungsoperation erhalten wird, die die maximale Multiplizität übernimmt. Im folgenden Beispiel definieren wir die Bag-Union mithilfe von Map. Beachten Sie, dass wir die vollständige Signatur von + angeben müssen, da es sich um einen überladenen Operator handelt.

Für jede Entscheidungsvariable müssen wir den Satz möglicher Werte geben, die die Variable annehmen kann. Dies wird als Domäne der Variablen bezeichnet. Dies kann als Teil der Variablendeklaration angegeben werden, und der Typ der Entscheidungsvariablen wird aus dem Typ der Werte in der Domäne abgeleitet.

Коментарите са затворени.