Proving that an unbounded distributed protocol satisfies a given safety property amounts to finding a quantified inductive invariant that implies the property for all possible instance sizes of the protocol. Existing methods for solving this problem can be described as search procedures for an invariant whose quantification prefix fits a particular template. We propose an alternative constructive approach that does not prescribe, a priori, a specific quantifier prefix. Instead, the required prefix is automatically inferred without any search by carefully analyzing the structural symmetries of the protocol. The key insight underlying this approach is that symmetry and quantification are closely related concepts that express protocol invariance under different re-arrangements of its components. We propose symmetric incremental induction, an extension of the finite-domain IC3/PDR algorithm, that automatically derives the required quantified inductive invariant by exploiting the connection between symmetry and quantification. While various attempts have been made to exploit symmetry in verification applications, to our knowledge, this is the first demonstration of a direct link between symmetry and quantification in the context of clause learning during incremental induction. We also describe a procedure to automatically find a minimal finite size, the cutoff, that yields a quantified invariant proving safety for any size. Our approach is implemented in IC3PO, a new verifier for distributed protocols that significantly outperforms the state-of-the-art, scales orders of magnitude faster, and robustly derives compact inductive invariants fully automatically.
翻译:证明一个未划定的分布式协议符合特定的安全属性,等于找到一个量化的进化变异物,意味着所有可能的协议大小的属性。 解决这一问题的现有方法可以被描述为一个变量的搜索程序,其量化前缀符合一个特定模板。 我们建议了一种替代的建设性方法,该方法没有事先规定一个特定的量化前缀。 相反,所需的前缀是不经任何搜索而自动推断的,方法是仔细分析协议的结构对称性。 这种方法的关键洞察力是,对称性和量化是密切相关的概念,在协议各组成部分的不同重新布局下显示协议的不一致性。 我们提出对称性递增性上传,即IC3/PDR算法的扩展,通过利用对称性和量化之间的联系,自动推断所需的量化内隐含的内涵性。 尽管已经作出各种尝试,通过仔细分析协议结构对称性应用的对称性,对我们的了解,但这是在对等称性和量化后序中,在条款范围内的自动递增量性排序中,我们在递增前程中找到一个量化的量化程序。