TL; DR: Schreiben Sie SMT-basierte Programmanalysen (symbolische Ausführende, Verfeinerungstypen usw.) in eine optimierte datalogähnliche Sprache.
Datalog hat sich als nützliche Sprache für die Implementierung einer Reihe von Programmanalysen erwiesen. Analysen, die die SMT -Lösung verwenden, können jedoch nicht einfach in herkömmlichen Versionen von Datalog geschrieben werden. Formullog setzt diese Lücke durch, indem er Datalog erhöht, um die Möglichkeiten zum Konstruktion und Verhältnis von SMT-Formeln sowie eine funktionale Programmierung erster Ordnung zu ermöglichen, um das Leben zu erleichtern.
Warum Ihre SMT-basierte Analyse in Formullog schreiben?
Interessiert? Weitere Informationen finden Sie in den Formulog -Dokumenten (auch im DOCS -Verzeichnis verfügbar), einschließlich Tipps zum Erstengang und der Sprachreferenz. Um ein Gefühl für das zu erhalten, was am Aufbau einer nicht trivialen SMT-basierten Analyse in Formullog aufgebaut ist, lesen Sie unser Tutorial zur Implementierung eines Überprüfungskörpers im Formulog.
Beiträge zu diesem Projekt sind herzlich willkommen! Bitte öffnen Sie ein GitHub -Problem und verlinken Sie dann eine Pull -Anfrage darauf. Pull -Anfragen müssen im Google Java -Format vorhanden sein, bevor sie zusammengeführt werden. Um Ihren Kodex neu formatieren zu können, führen Sie mvn spotless:apply ; Sie können auch überprüfen, ob Ihr Code konformant ist (ohne ihn neu zu formatieren), indem Sie mvn spotless:check .
Formullog wird unter einer Apache 2.0 -Lizenz veröffentlicht.
Dieses Projekt verwendet Bibliotheken von Drittanbietern. Sie können eine Liste dieser Bibliotheken generieren und ihre zugehörigen Lizenzen mit diesem Befehl herunterladen:
mvn license:download-licenses
Der generierte Inhalt ist im target/generated-resources/ -verzeichnissen zu finden.