26.09.2024
ReimSY ist eine kleine Open-Source-Programmierklasse in JavaScript, mit der man logische Abhängigkeiten als Tabelle darstellen und auswerten lassen kann.
Sie können das Tool hier direkt ausprobieren. Sie können Beispiele auswählen und einfach modifizieren.
Wenn Sie sich für die Grundidee interessieren, finden Sie unten einige Hinweise.
Jede Zeile der Tabelle besteht aus einem Propositionalteil (die ersten drei Wörter) und einem Konditionalteil (die letzten drei Wörter). Propositional- und Konditionalteil sind immer gleich aufgebaut. In der Mitte steht ein logisches Wort, wie z. B. „wenn“. Die Reihenfolge der Aussagen spielt keine Rolle.
Die Prädikate und deren Implikationen lassen sich je nach Fachbereich selbst definieren. Ein Beispiel, das die Leistungsfähigkeit aufzeigt, ist Nummer 6:
%A hat Eigenschaft %B und-wenn %A ist vom Typ %C
%A hat Eigenschaft %B und-wenn %C hat Eigenschaft %B
Auch wenn das Beispiel etwas kompliziert wirkt, ist der Zusammenhang einfach. Man schließt vom einer Typisierung (z.B. Mensch) auf eine Eigenschaft (z.B. sterblich). Natürlich ist das Prinzip auch in der Alltagslogik und in der Technik allgegenwärtig.
Die Proposition ist in beiden Aussagen gleich. Diese Wiederholung erlaubt es, dass die Aussagen nicht aufeinander folgen müssen. In der Alltagsprache ist oft auch so, dass Bedingungen nach und nach genannt werden. Die Proposition ist das verbindede Glied.
Die Prädikate ergeben sich aus der Fachsprache. Anregungen liefern z.B. die Systemtheorie, UML oder die Fachsprache aus Ihrem persönlichen Bereich. Die Modellierung der Prädikate und deren Implikationen ist der komplizierte Part. Das muss aber nur einmalig stattfinden.
Mathematische Aussagen werden ganz simpel nach einer Einsetzungsmethode ausgewertet.
Ich habe das Tool programmiert, um computerbasierte Modelle in ihrem allgemeinen Aufbau darzustellen. Das Ziel ist es, eine flexible, einfache Sprache für die Definition solcher Modelle zu entwickeln. Man kann technische Fachsprachen oft als ein Satz von Prädikaten lesen. Meist sind es nicht viele. Die Zahl der Substantive ist natürlich riesig.
Der Code besteht aus lediglich 700 Zeilen und kann auf GitHub heruntergeladen und auch verändert werden.
let demo = new ReimSY("de");
Beispiel 1:
demo.add("Gerät", "Zustand", "eingeschaltet", "wenn", "LED", "leuchtet", "grün");
demo.add("LED", "leuchtet", "grün");
let result = demo.evaluate();
console.log(result); // [["LED", "leuchtet", "grün"], ["Gerät", "Zustand", "eingeschaltet"]]
Es werden standardmäßig 5 logische Iterationen durchlaufen. Diese können über die Variable numberOfLoops erhöht werden. Aber wo wird im Alltag um mehr als 5 Ecken gedacht?
Der Code kann unter dem folgenden Link heruntergeladen werden:
https://github.com/sebriko/ReimSY
Der Vorteil dieser Methode besteht darin, dass es nur ein Minimum an Konventionen gibt. Eine logische Programiersprache wie z.B. Prolog wäre schwieriger zu lernen. Über die Methode lassen sich auch relationale Datenbankstrukturen über eine einzige Tabelle abbilden.