Gibt es ein Tool zum Prototyping einer Programmiersprachen-Semantik und eines Typsystems, das auch eine Art Modellprüfung von Standardeigenschaften wie der Typensicherheit ermöglicht?
Ich frage dies, weil ich ein Buch über Legierung lese und es genau die Funktionalität bietet, die ich möchte, aber für Modelle, die mit relationaler Logik ausgedrückt werden.
Ich kenne Ott , aber es verfügt nicht über diese Art der "Modellprüfung", da es sich auf die Generierung von Code für Proof-Assistant-Systeme konzentriert.
Jeder Hinweis auf eine solche Tool-Existenz wäre nett.
reference-request
programming-languages
semantics
model-checking
Rodrigo Ribeiro
quelle
quelle
Antworten:
Obwohl es Frameworks gibt, die speziell für das Prototyping von Programmiersprachen erstellt wurden (einschließlich ihrer Semantik, Typsysteme, Auswertung sowie Überprüfung ihrer Eigenschaften), hängt die beste Wahl von Ihrem speziellen Fall und Ihren spezifischen Anforderungen ab.
Trotzdem gibt es mehrere (vielleicht nicht so unterschiedliche) Alternativen, die Sie wählen könnten (einschließlich der bereits erwähnten):
Beachten Sie, dass es einen Kompromiss zwischen der einfachen Verwendung des Frameworks / Tools (z. B. so einfach wie das Auslegen der Definition auf Papier oder in Latex) und der Leistungsfähigkeit der Mechanismen zum Überprüfen der Eigenschaften der Sprache (z. B. Einbetten der Die Sprache in einem Theorembeweiser kann es ermöglichen, sehr ausgefeilte Eigenschaften zu überprüfen.
[1] Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay A. McCarthy, Jon Rafkind, Sam Tobin-Hochstadt und Robert Bruce Findler. Führen Sie Ihre Forschung durch: Über die Wirksamkeit der Leichtbau-Mechanisierung. POPL, 2012.
[2] Daniel Jackson. Legierung: Eine leichte Objektmodellierungsnotation. TOSEM, 2002.
[3] Greg Dennis, Felix Chang und Daniel Jackson. Modulare Codeüberprüfung mit SAT. ISSTA, 2006
[4] Coq Formal Proof Management System
[5] Formale Argumentation zu Programmen. Adam Chlipala, 2016
[6] Leon automatisiertes System zur Überprüfung, Reparatur und Synthese funktionaler Scala-Programme
quelle