{"title":"米努斯卡迈向正式验证的编程语言框架","authors":"Jan Tušil, Jan Obdržálek","doi":"arxiv-2409.11530","DOIUrl":null,"url":null,"abstract":"Programming language frameworks allow us to generate language tools (e.g.,\ninterpreters) just from a formal description of the syntax and semantics of a\nprogramming language. As these frameworks tend to be quite complex, an issue\narises whether we can trust the generated tools. To address this issue, we\nintroduce a practical formal programming language framework called Minuska,\nwhich always generates a provably correct interpreter given a valid language\ndefinition. This is achieved by (1) defining a language MinusLang for\nexpressing programming language definitions and giving it formal semantics and\n(2) using the Coq proof assistant to implement an interpreter parametric in a\nMinusLang definition and to prove it correct. Minuska provides strong\ncorrectness guarantees and can support nontrivial languages while performing\nwell. This is the extended version of the SEFM24 paper of the same name.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":"3 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-09-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Minuska: Towards a Formally Verified Programming Language Framework\",\"authors\":\"Jan Tušil, Jan Obdržálek\",\"doi\":\"arxiv-2409.11530\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Programming language frameworks allow us to generate language tools (e.g.,\\ninterpreters) just from a formal description of the syntax and semantics of a\\nprogramming language. As these frameworks tend to be quite complex, an issue\\narises whether we can trust the generated tools. To address this issue, we\\nintroduce a practical formal programming language framework called Minuska,\\nwhich always generates a provably correct interpreter given a valid language\\ndefinition. This is achieved by (1) defining a language MinusLang for\\nexpressing programming language definitions and giving it formal semantics and\\n(2) using the Coq proof assistant to implement an interpreter parametric in a\\nMinusLang definition and to prove it correct. Minuska provides strong\\ncorrectness guarantees and can support nontrivial languages while performing\\nwell. This is the extended version of the SEFM24 paper of the same name.\",\"PeriodicalId\":501197,\"journal\":{\"name\":\"arXiv - CS - Programming Languages\",\"volume\":\"3 1\",\"pages\":\"\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-09-17\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"arXiv - CS - Programming Languages\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/arxiv-2409.11530\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Programming Languages","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2409.11530","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Minuska: Towards a Formally Verified Programming Language Framework
Programming language frameworks allow us to generate language tools (e.g.,
interpreters) just from a formal description of the syntax and semantics of a
programming language. As these frameworks tend to be quite complex, an issue
arises whether we can trust the generated tools. To address this issue, we
introduce a practical formal programming language framework called Minuska,
which always generates a provably correct interpreter given a valid language
definition. This is achieved by (1) defining a language MinusLang for
expressing programming language definitions and giving it formal semantics and
(2) using the Coq proof assistant to implement an interpreter parametric in a
MinusLang definition and to prove it correct. Minuska provides strong
correctness guarantees and can support nontrivial languages while performing
well. This is the extended version of the SEFM24 paper of the same name.