Reactive programs combine traditional sequential programming constructs with primitives to allow communication with other concurrent agents. They are ubiquitous in modern applications, ranging from components systems and web services, to cyber-physical systems and autonomous robots. In this paper, we present an algebraic verification strategy for concurrent reactive programs, with a large or infinite state space. We define novel operators to characterise interactions and state updates, and an associated equational theory. With this we can calculate a reactive program's denotational semantics, and thereby facilitate automated proof. Of note is our reasoning support for iterative programs with reactive invariants, based on Kleene algebra, and for parallel composition. We illustrate our strategy by verifying a reactive buffer. Our laws and strategy are mechanised in Isabelle/UTP, our implementation of Hoare and He's Unifying Theories of Programming (UTP) framework, to provide soundness guarantees and practical verification support.
翻译:重现程序将传统的连续编程结构与原始程序结合起来, 以便与其他同时的代理进行交流。 它们存在于现代应用中, 包括组件系统和网络服务、 网络物理系统和自主机器人。 我们在本文件中为同时反应程序提出了一个代数核查战略, 包括一个大或无限的状态空间。 我们定义了新操作员来描述互动和状态更新的特点, 以及相关的等式理论。 这样我们可以计算一个反应程序的非注释性语义学, 从而方便自动证明。 值得注意的是, 我们的推理支持基于 Kleene 代数和平行构成的反应性变异器的迭代程序。 我们通过核查反应性缓冲来说明我们的策略。 我们的法律和战略在伊莎贝尔/ 乌提普 、 我们的Hoare 和 他统一了编程框架的理论, 以提供稳健的保证和实际的核查支持。