From Program Logics to Language Logics
arXiv:2408.01515
Abstract
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 where , 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 , a language logic that can be used to analyze language definitions on various aspects of language design. We illustrate to the analysis of some selected aspects of a programming language. We have also implemented an automated prover for , and we confirm that the tool repeats these analyses. Ultimately, 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.
This is a very close version of a paper under submission at SEFM 2024