论文标题

Igloo:分布式系统验证的构图完善和分离逻辑的链接

Igloo: Soundly Linking Compositional Refinement and Separation Logic for Distributed System Verification

论文作者

Sprenger, Christoph, Klenze, Tobias, Eilers, Marco, Wolf, Felix A., Müller, Peter, Clochard, Martin, Basin, David

论文摘要

CompCert,Sel4,Ironfleet和DeepSpec等灯塔项目已经证明,通过在抽象系统规范和可执行执行的实现之间建立完善关系,可以完全验证整个系统。然而,由于其依赖次优码提取或过于表达的程序逻辑,现有方法由于其表现力有限或可执行的代码而对抽象系统规格施加严重限制。我们提出了一种新颖的方法,该方法结合了使用表达性分离逻辑的摘要,基于事件的分布式系统模型的构图完善,并验证完整的程序代码,该逻辑支持现实的编程语言的功能,例如可变的堆数据结构和一致性。我们工作的主要技术贡献是一个正式的框架,该框架将基于事件的系统模型与分离逻辑中的程序规范相关联,因此成功的验证建立了模型和代码之间的完善关系。我们在Isabelle/Hol中正式化了我们的框架Igloo。我们的框架可以通过现有程序验证符来开发协议开发工具的声音组合。我们报告了三个案例研究,一个领导者选举方案,复制协议和安全协议,为此我们将正式要求(以Isabelle/Hol)(在Java和Python中实施)提高了正式要求,并使用Verifast和Nagini工具证明了正确的。

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.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源