{"title":"Unifying Model Execution and Deductive Verification with Interaction Trees in Isabelle/HOL","authors":"Simon Foster, Chung-Kil Hur, Jim Woodcock","doi":"arxiv-2408.15817","DOIUrl":null,"url":null,"abstract":"Model execution allows us to prototype and analyse software engineering\nmodels by stepping through their possible behaviours, using techniques like\nanimation and simulation. On the other hand, deductive verification allows us\nto construct formal proofs demonstrating satisfaction of certain critical\nproperties in support of high-assurance software engineering. To ensure\ncoherent results between execution and proof, we need unifying semantics and\nautomation. In this paper, we mechanise Interaction Trees (ITrees) in\nIsabelle/HOL to produce an execution and verification framework. ITrees are\ncoinductive structures that allow us to encode infinite labelled transition\nsystems, yet they are inherently executable. We use ITrees to create\nverification tools for stateful imperative programs, concurrent programs with\nmessage passing in the form of the CSP and \\Circus languages, and abstract\nsystem models in the style of the Z and B methods. We demonstrate how ITrees\ncan account for diverse semantic presentations, such as structural operational\nsemantics, a relational program model, and CSP's failures-divergences trace\nmodel. Finally, we demonstrate how ITrees can be executed using the Isabelle\ncode generator to support the animation of models.","PeriodicalId":501208,"journal":{"name":"arXiv - CS - Logic in Computer Science","volume":"131 1","pages":""},"PeriodicalIF":0.0000,"publicationDate":"2024-08-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"0","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"arXiv - CS - Logic in Computer Science","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/arxiv-2408.15817","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 0
Abstract
Model execution allows us to prototype and analyse software engineering
models by stepping through their possible behaviours, using techniques like
animation and simulation. On the other hand, deductive verification allows us
to construct formal proofs demonstrating satisfaction of certain critical
properties in support of high-assurance software engineering. To ensure
coherent results between execution and proof, we need unifying semantics and
automation. In this paper, we mechanise Interaction Trees (ITrees) in
Isabelle/HOL to produce an execution and verification framework. ITrees are
coinductive structures that allow us to encode infinite labelled transition
systems, yet they are inherently executable. We use ITrees to create
verification tools for stateful imperative programs, concurrent programs with
message passing in the form of the CSP and \Circus languages, and abstract
system models in the style of the Z and B methods. We demonstrate how ITrees
can account for diverse semantic presentations, such as structural operational
semantics, a relational program model, and CSP's failures-divergences trace
model. Finally, we demonstrate how ITrees can be executed using the Isabelle
code generator to support the animation of models.