Zum Inhalt springen

Vertrag03 von 09

Welche Felder beschreibt eine Regel?

Eine Regel ist eine Formel mit Version.

Thema
KALKÜL
Lesezeit
2 Min.
Erstfassung
Auf dieser Seite
  1. 01Ein geplanter Vertrag, kein erreichbarer Endpunkt
  2. 02Wortlaut und Formel gehören zusammen
  3. 03Version und Geltung
  4. 04Harte und weiche Regeln
  5. 05Testfälle gehören zur Regel
  6. 06Schema
  7. 07Felder
  8. 08Fehlerfälle
  9. 09Grenze und Regel
  10. 10Quellen
  11. 11Verwandte Seiten

Was gebaut ist

Eine Regel hält fest, was gelten muss, bevor eine Handlung wirkt. In KALKÜL ist sie zugleich der Wortlaut einer Vorschrift und eine Formel, die ein Löser prüfen kann. Dieser geplante Vertrag legt fest, was zu einer Regel gehört, damit Wortlaut und Formel nicht auseinanderlaufen und jede Prüfung auf eine bestimmte Fassung zeigt.

Ein geplanter Vertrag, kein erreichbarer Endpunkt

Die Felder beschreiben die vorgesehene Form einer Regel. Der Demonstrator von KALKÜL rechnet im Browser mit drei festen Regeln im Quelltext, Sperrraum, Obergrenze und Reserve; ein Anlegen, Versionieren und Prüfen von Regeln über eine Schnittstelle besteht nicht.

Wortlaut und Formel gehören zusammen

Eine Regel trägt ihren Wortlaut, ihre Fundstelle in der Vorschrift und die Formel, die ihn ausdrückt. Die Formel steht in SMT-LIB, dem gemeinsamen Format der Löser, über benannten Variablen mit Typ, Einheit und Bereich. Erst wenn Fachleute für eine Reihe von Zuständen mit bekannter Antwort bestätigt haben, dass die Formel dasselbe sagt wie der Wortlaut, geht die Version in Betrieb.

Version und Geltung

Begriff · Nachweis

Der signierte Datensatz einer Prüfung: Handlung, Zustand, Regeln, Ergebnis und Voraussetzungen, mit Prüfwert, Signatur und Zeitstempel. Er lässt sich ohne Zugang zum System nachrechnen.

Nachweis im Zusammenhang

Eine Regel ändert sich nur durch eine neue Version. Jede Prüfung und jeder Nachweis nennt die Fassung, gegen die gerechnet wurde. Eine Version hat einen Gültigkeitszeitraum, einen Verantwortlichen und einen Verweis auf die Vorgängerin. Sie wird nie überschrieben, damit eine spätere Prüfung genau die Regel von damals findet.

Harte und weiche Regeln

Eine harte Regel bricht nie, höchstens mit einer Ausnahme und Freigabe. Eine weiche Regel ist eine Vorliebe mit Gewicht, die eine Optimierung abwägt. Die Art steht an der Regel. Dieselbe Regel gilt für die Prüfung und für die Optimierung.

Testfälle gehören zur Regel

Eine Regel ohne Testfälle wird nicht aktiv. Die Testfälle sind Zustände mit der Antwort, die die Regel liefern muss, und laufen bei jeder neuen Version. Ein Satz von Regeln wird außerdem auf Widerspruch geprüft: Lässt er keinen Zustand zu, meldet das System die kleinste Menge von Regeln, die einander ausschließen.

Schema

regel: <kennung>
version: <nummer>
art: hart | weich
wortlaut: "<text der vorschrift>"
fundstelle: <vorschrift, absatz>
variablen:
  <name>: { typ: real, einheit: <einheit>, bereich: [<von>, <bis>] }
formel: "(=> (not <freigabe>) (>= <groesse> <grenze>))"
gueltig_von: <datum>
verantwortlich: <rolle>
tests: [<testfall>, <testfall>]
Schema 1YAML · Schema mit Platzhaltern

Felder

FeldTypPflichtBedeutung
idstringjaStabile Kennung der Regel über alle Versionen.
versionintegerjaFassung der Regel. Wird nie überschrieben, nur durch eine neue ersetzt.
kindstringjahard oder soft. Weiche Regeln tragen ein Gewicht und gehen in das Ziel einer Optimierung ein.
wordingstringjaWortlaut der Vorschrift, wie er in der Quelle steht.
citationstringjaFundstelle der Vorschrift mit Absatz.
variablesobject[]jaVariablen mit Typ, Einheit und Bereich. Unbekannte Variablen in der Formel werden zurückgewiesen.
formulastringjaFormel in SMT-LIB über den Variablen. Muss den Wortlaut ausdrücken.
weightnumberneinGewicht einer weichen Regel. Fehlt bei harten Regeln.
validFromstring (date)jaBeginn der Geltung. Ende nur, wenn die Vorschrift endet.
ownerstringjaVerantwortliche Rolle für Inhalt und Übersetzung.
supersedesintegerneinNummer der abgelösten Version.
testsstring[]jaVerweise auf Testfälle. Ohne Testfälle wird die Regel nicht aktiv.

Fehlerfälle

KennungBedeutung
RULE_FORMULA_INVALIDDie Formel ist kein gültiger Ausdruck in SMT-LIB oder verwendet eine nicht unterstützte Theorie.
RULE_VARIABLE_UNKNOWNDie Formel nennt eine Variable, die nicht unter variables steht.
RULE_TESTS_FAILEDDie Formel liefert für einen Testfall nicht die erwartete Antwort; die Version wird nicht aktiv.
RULE_SET_CONTRADICTORYDie aktiven Regeln lassen keinen Zustand zu; die kleinste widersprüchliche Menge wird genannt.
RULE_VERSION_CONFLICTDie neue Version beruht auf einer überholten Fassung.

Grenze

Grenze
Dieser Schnittstellenvertrag ist geplant. Er belegt weder eine veröffentlichte Schnittstelle noch eine fachliche Übersetzung einer Vorschrift; ob eine Formel den Wortlaut richtig wiedergibt, bleibt Sache der fachlichen Prüfung.

Quellen

  1. SMT-LIB: The Satisfiability Modulo Theories LibraryGemeinsames Eingabeformat der Löser und Beschreibung ihrer Theorien.

Verwandte Seiten