{"title":"从程序逻辑到语言逻辑","authors":"Matteo Cimini","doi":"arxiv-2408.01515","DOIUrl":null,"url":null,"abstract":"Program logics are a powerful formal method in the context of program\nverification. Can we develop a counterpart of program logics in the context of\nlanguage verification? This paper proposes language logics, which allow for\nstatements of the form $\\{P\\}\\ \\mathcal{X}\\ \\{Q\\}$ where $\\mathcal{X}$, the\nsubject of analysis, can be a language component such as a piece of grammar, a\ntyping rule, a reduction rule or other parts of a language definition. To\ndemonstrate our approach, we develop $\\mathbb{L}$, a language logic that can be\nused to analyze language definitions on various aspects of language design. We\nillustrate $\\mathbb{L}$ to the analysis of some selected aspects of a\nprogramming language. We have also implemented an automated prover for\n$\\mathbb{L}$, and we confirm that the tool repeats these analyses. Ultimately,\n$\\mathbb{L}$ cannot verify languages. Nonetheless, we believe that this paper\nprovides a strong first step towards adopting the methods of program logics for\nthe analysis of languages.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":"23 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-08-02","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"From Program Logics to Language Logics\",\"authors\":\"Matteo Cimini\",\"doi\":\"arxiv-2408.01515\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Program logics are a powerful formal method in the context of program\\nverification. Can we develop a counterpart of program logics in the context of\\nlanguage verification? This paper proposes language logics, which allow for\\nstatements of the form $\\\\{P\\\\}\\\\ \\\\mathcal{X}\\\\ \\\\{Q\\\\}$ where $\\\\mathcal{X}$, the\\nsubject of analysis, can be a language component such as a piece of grammar, a\\ntyping rule, a reduction rule or other parts of a language definition. To\\ndemonstrate our approach, we develop $\\\\mathbb{L}$, a language logic that can be\\nused to analyze language definitions on various aspects of language design. We\\nillustrate $\\\\mathbb{L}$ to the analysis of some selected aspects of a\\nprogramming language. We have also implemented an automated prover for\\n$\\\\mathbb{L}$, and we confirm that the tool repeats these analyses. Ultimately,\\n$\\\\mathbb{L}$ cannot verify languages. Nonetheless, we believe that this paper\\nprovides a strong first step towards adopting the methods of program logics for\\nthe analysis of languages.\",\"PeriodicalId\":501197,\"journal\":{\"name\":\"arXiv - CS - Programming Languages\",\"volume\":\"23 1\",\"pages\":\"\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-08-02\",\"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-2408.01515\",\"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-2408.01515","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Program logics are a powerful formal method in the context of program
verification. Can we develop a counterpart of program logics in the context of
language verification? This paper proposes language logics, which allow for
statements of the form $\{P\}\ \mathcal{X}\ \{Q\}$ where $\mathcal{X}$, the
subject of analysis, can be a language component such as a piece of grammar, a
typing rule, a reduction rule or other parts of a language definition. To
demonstrate our approach, we develop $\mathbb{L}$, a language logic that can be
used to analyze language definitions on various aspects of language design. We
illustrate $\mathbb{L}$ to the analysis of some selected aspects of a
programming language. We have also implemented an automated prover for
$\mathbb{L}$, and we confirm that the tool repeats these analyses. Ultimately,
$\mathbb{L}$ cannot verify languages. Nonetheless, we believe that this paper
provides a strong first step towards adopting the methods of program logics for
the analysis of languages.