Lighthouse projects such as CompCert, seL4, IronFleet, and DeepSpec have demonstrated that full verification of entire systems is feasible by establishing a refinement relation between an abstract system specification and an executable implementation. Existing approaches however impose severe restrictions on either the abstract system specifications due to their limited expressiveness or versatility, or on the executable code due to their reliance on suboptimal code extraction or inexpressive program logics. We propose a novel methodology that combines the compositional refinement of abstract, event-based models of distributed systems with the verification of full-fledged program code using expressive separation logics, which support features of realistic programming languages like mutable heap data structures and concurrency. The main technical contribution of our work is a formal framework that soundly relates event-based system models to program specifications in separation logics, such that successful verification establishes a refinement relation between the model and the code. We formalized our framework, Igloo, in Isabelle/HOL. Our framework enables the sound combination of tools for protocol development with existing program verifiers. We report on three case studies, a leader election protocol, a replication protocol, and a security protocol, for which we refine formal requirements into program specifications (in Isabelle/HOL) that we implement in Java and Python and prove correct using the VeriFast and Nagini tools.
翻译:CompCert, seL4, EronFleet, and DeepSpec等灯塔项目表明,通过在抽象系统规格和可执行的执行之间建立一种完善的关系,充分核查整个系统是可行的。然而,现有办法对抽象系统规格的精细性或多功能性加以严格限制,对抽象系统规格加以严格限制,或对可执行代码加以严格限制,因为它们依赖亚优的代码提取或表达式程序逻辑。我们提出了一种新颖的方法,将抽象的、基于事件的分布式系统模型的构成完善与使用明确分离逻辑的完整程序编码的核查结合起来,这种逻辑支持现实的编程语言的特征,如可变式数据结构及可执行性。我们工作的主要技术贡献是一个正式框架,将基于事件的系统模型与分离逻辑的方案规格妥善联系起来,这样成功的核查将模型和代码之间建立了一种完善的关系。我们在伊莎贝尔/HOstst中将我们的程序开发框架的工具与现有的程序校准者进行合理结合。我们报告了三个案例研究,一个领导人选举程序要求,一个用来改进我们的安全性协议和标准。