Apakah ada alat untuk membuat prototipe semantik bahasa pemrograman dan sistem tipe dan itu juga memungkinkan untuk semacam pengecekan model properti standar, seperti tipe kesehatan?
Saya menanyakan hal ini, karena saya membaca buku tentang Paduan dan menyediakan fungsionalitas tepat yang saya inginkan, tetapi untuk model yang diungkapkan menggunakan logika relasional.
Saya mengetahui Ott , tetapi tidak memiliki kemampuan "pengecekan model" semacam ini, karena berfokus pada menghasilkan kode untuk sistem asisten bukti.
Referensi apa pun tentang keberadaan alat tersebut akan menyenangkan.
reference-request
programming-languages
semantics
model-checking
Rodrigo Ribeiro
sumber
sumber
Jawaban:
Meskipun ada kerangka kerja yang dibuat khusus untuk keperluan prototyping bahasa pemrograman (termasuk semantik, tipe sistem, evaluasi, serta memeriksa properti mereka), pilihan terbaik tergantung pada kasus khusus Anda dan kebutuhan spesifik.
Karena itu, ada beberapa alternatif (mungkin tidak begitu berbeda) yang mungkin Anda ambil (termasuk yang sudah Anda sebutkan):
Perhatikan bahwa ada pertukaran antara seberapa mudah menggunakan kerangka / alat (misalnya semudah meletakkan definisi di atas kertas atau dalam Lateks) dan seberapa kuat mekanisme untuk memeriksa properti tentang bahasa tersebut (misalnya menyematkan bahasa dalam pepatah teorema dapat memungkinkan memeriksa properti yang sangat rumit).
[1] Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay A. McCarthy, Jon Rafkind, Sam Tobin-Hochstadt, dan Robert Bruce Findler. Jalankan Penelitian Anda: Tentang Efektivitas Mekanisasi Ringan. POPL, 2012.
[2] Daniel Jackson. Paduan: notasi pemodelan objek ringan. TOSEM, 2002.
[3] Greg Dennis, Felix Chang, Daniel Jackson. Verifikasi Modular Kode dengan SAT. ISSTA, 2006
[4] Coq sistem manajemen bukti formal
[5] Penalaran Formal Tentang Program. Adam Chlipala, 2016
[6] Leon sistem otomatis untuk memverifikasi, memperbaiki, dan mensintesis program Scala fungsional
sumber