Existe-t-il un outil pour prototyper la sémantique et le système de type d'un langage de programmation et qui permet également une sorte de vérification du modèle des propriétés standard, comme la solidité du type?
Je pose cette question, car je lis un livre sur Alloy et il fournit la fonctionnalité exacte que je veux, mais pour les modèles exprimés en utilisant la logique relationnelle.
Je connais Ott , mais il n'a pas ce genre de capacité de "vérification de modèle", car il se concentre sur la génération de code pour les systèmes d'assistant de preuve.
Toute référence sur l'existence d'un tel outil serait bien.
reference-request
programming-languages
semantics
model-checking
Rodrigo Ribeiro
la source
la source
Réponses:
Bien qu'il existe des cadres créés spécifiquement dans le but de prototyper les langages de programmation (y compris leur sémantique, les systèmes de types, l'évaluation et la vérification des propriétés les concernant), le meilleur choix dépend de votre cas particulier et de vos besoins spécifiques.
Cela dit, il existe plusieurs alternatives (peut-être pas si distinctes) que vous pourriez prendre (y compris celles que vous avez déjà mentionnées):
Notez qu'il y a un compromis entre la facilité d'utilisation du cadre / outil (par exemple aussi simple que la présentation de la définition sur papier ou en Latex) et la puissance des mécanismes de vérification des propriétés du langage (par exemple, l'intégration de la dans un prouveur de théorèmes peut permettre de vérifier des propriétés très élaborées).
[1] Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay A. McCarthy, Jon Rafkind, Sam Tobin-Hochstadt et Robert Bruce Findler. Exécutez vos recherches: sur l'efficacité de la mécanisation légère. POPL, 2012.
[2] Daniel Jackson. Alliage: une notation de modélisation d'objet légère. TOSEM, 2002.
[3] Greg Dennis, Felix Chang, Daniel Jackson. Vérification modulaire du code avec SAT. ISSTA, 2006
[4] Système formel de gestion des preuves Coq
[5] Raisonnement formel sur les programmes. Adam Chlipala, 2016
[6] Système automatisé Leon pour vérifier, réparer et synthétiser les programmes Scala fonctionnels
la source