Verifying relations between programs arises as a task in various verification contexts such as optimizing transformations, relating new versions of programs with older versions (regression verification), and noninterference. However, relational verification for programs acting on dynamically allocated mutable state is not well supported by existing tools, which provide a high level of automation at the cost of restricting the programs considered. Auto-active tools, on the other hand, require more user interaction but enable verification of a broader class of programs. This article presents WhyRel, a tool for the auto-active verification of relational properties of pointer programs based on relational region logic. WhyRel is evaluated through verification case studies, relying on SMT solvers orchestrated by the Why3 platform on which it builds. Case studies include establishing representation independence of ADTs, showing noninterference, and challenge problems from recent literature.
翻译:在各种验证环境中,程序之间的关系验证作为一项任务出现,例如优化转换、将程序的新版本与旧版本相关联(回归验证)和非干扰。然而,针对动态分配可变状态的程序的关系验证不受现有工具的很好支持,这些工具提供了高度自动化,但限制了所考虑的程序。另一方面,自动主动工具需要更多的用户交互,但能够验证更广泛的程序类。本文介绍了 WhyRel,这是一个基于关系区域逻辑的指针程序关系属性自动/交互式验证工具。使用Why3平台上编排的SMT求解器评估了WhyRel。案例研究包括建立ADTs的表示独立性,非干扰和来自最近文献的挑战性问题。