Thibault DardinierETH Zurich, Michael SammlerETH Zurich, Gaurav ParthasarathyETH Zurich, Alexander J. SummersUniversity of British Columbia, Peter MüllerETH Zurich
{"title":"翻译分离逻辑验证器的形式基础(扩展版)","authors":"Thibault DardinierETH Zurich, Michael SammlerETH Zurich, Gaurav ParthasarathyETH Zurich, Alexander J. SummersUniversity of British Columbia, Peter MüllerETH Zurich","doi":"arxiv-2407.20002","DOIUrl":null,"url":null,"abstract":"Program verification tools are often implemented as front-end translations of\nan input program into an intermediate verification language (IVL) such as\nBoogie, GIL, Viper, or Why3. The resulting IVL program is then verified using\nan existing back-end verifier. A soundness proof for such a translational\nverifier needs to relate the input program and verification logic to the\nsemantics of the IVL, which in turn needs to be connected with the verification\nlogic implemented in the back-end verifiers. Performing such proofs is\nchallenging due to the large semantic gap between the input and output programs\nand logics, especially for complex verification logics such as separation\nlogic. This paper presents a formal framework for reasoning about translational\nseparation logic verifiers. At its center is a generic core IVL that captures\nthe essence of different separation logics. We define its operational semantics\nand formally connect it to two different back-end verifiers, which use symbolic\nexecution and verification condition generation, resp. Crucially, this\nsemantics uses angelic non-determinism to enable the application of different\nproof search algorithms and heuristics in the back-end verifiers. An axiomatic\nsemantics for the core IVL simplifies reasoning about the front-end translation\nby performing essential proof steps once and for all in the equivalence proof\nwith the operational semantics rather than for each concrete front-end\ntranslation. We illustrate the usefulness of our formal framework by instantiating our\ncore IVL with elements of Viper and connecting it to two Viper back-ends as\nwell as a front-end for concurrent separation logic. All our technical results\nhave been formalized in Isabelle/HOL, including the core IVL and its semantics,\nthe semantics of two back-ends for a subset of Viper, and all proofs.","PeriodicalId":501197,"journal":{"name":"arXiv - CS - Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0000,"publicationDate":"2024-07-29","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":"{\"title\":\"Formal Foundations for Translational Separation Logic Verifiers (extended version)\",\"authors\":\"Thibault DardinierETH Zurich, Michael SammlerETH Zurich, Gaurav ParthasarathyETH Zurich, Alexander J. SummersUniversity of British Columbia, Peter MüllerETH Zurich\",\"doi\":\"arxiv-2407.20002\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"Program verification tools are often implemented as front-end translations of\\nan input program into an intermediate verification language (IVL) such as\\nBoogie, GIL, Viper, or Why3. The resulting IVL program is then verified using\\nan existing back-end verifier. A soundness proof for such a translational\\nverifier needs to relate the input program and verification logic to the\\nsemantics of the IVL, which in turn needs to be connected with the verification\\nlogic implemented in the back-end verifiers. Performing such proofs is\\nchallenging due to the large semantic gap between the input and output programs\\nand logics, especially for complex verification logics such as separation\\nlogic. This paper presents a formal framework for reasoning about translational\\nseparation logic verifiers. At its center is a generic core IVL that captures\\nthe essence of different separation logics. We define its operational semantics\\nand formally connect it to two different back-end verifiers, which use symbolic\\nexecution and verification condition generation, resp. Crucially, this\\nsemantics uses angelic non-determinism to enable the application of different\\nproof search algorithms and heuristics in the back-end verifiers. An axiomatic\\nsemantics for the core IVL simplifies reasoning about the front-end translation\\nby performing essential proof steps once and for all in the equivalence proof\\nwith the operational semantics rather than for each concrete front-end\\ntranslation. We illustrate the usefulness of our formal framework by instantiating our\\ncore IVL with elements of Viper and connecting it to two Viper back-ends as\\nwell as a front-end for concurrent separation logic. All our technical results\\nhave been formalized in Isabelle/HOL, including the core IVL and its semantics,\\nthe semantics of two back-ends for a subset of Viper, and all proofs.\",\"PeriodicalId\":501197,\"journal\":{\"name\":\"arXiv - CS - Programming Languages\",\"volume\":null,\"pages\":null},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2024-07-29\",\"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-2407.20002\",\"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-2407.20002","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
Formal Foundations for Translational Separation Logic Verifiers (extended version)
Program verification tools are often implemented as front-end translations of
an input program into an intermediate verification language (IVL) such as
Boogie, GIL, Viper, or Why3. The resulting IVL program is then verified using
an existing back-end verifier. A soundness proof for such a translational
verifier needs to relate the input program and verification logic to the
semantics of the IVL, which in turn needs to be connected with the verification
logic implemented in the back-end verifiers. Performing such proofs is
challenging due to the large semantic gap between the input and output programs
and logics, especially for complex verification logics such as separation
logic. This paper presents a formal framework for reasoning about translational
separation logic verifiers. At its center is a generic core IVL that captures
the essence of different separation logics. We define its operational semantics
and formally connect it to two different back-end verifiers, which use symbolic
execution and verification condition generation, resp. Crucially, this
semantics uses angelic non-determinism to enable the application of different
proof search algorithms and heuristics in the back-end verifiers. An axiomatic
semantics for the core IVL simplifies reasoning about the front-end translation
by performing essential proof steps once and for all in the equivalence proof
with the operational semantics rather than for each concrete front-end
translation. We illustrate the usefulness of our formal framework by instantiating our
core IVL with elements of Viper and connecting it to two Viper back-ends as
well as a front-end for concurrent separation logic. All our technical results
have been formalized in Isabelle/HOL, including the core IVL and its semantics,
the semantics of two back-ends for a subset of Viper, and all proofs.