Predicate Abstraction with Indexed Predicates
Shuvendu K. Lahiri, Randal E. Bryant

TL;DR
This paper introduces a predicate abstraction technique with indexed predicates for verifying infinite-state systems with first-order variables, including mutable functions and arrays, enabling the analysis of complex hardware and software models.
Contribution
It presents a novel form of predicate abstraction using universally quantified formulas to describe invariants in systems with first-order state variables, with formal soundness proof and practical verification applications.
Findings
Successfully verified hardware and software systems, including cache coherence protocols.
Formal proof of soundness for the proposed abstraction method.
Applicable to systems with arbitrarily large memories and arrays.
Abstract
Predicate abstraction provides a powerful tool for verifying properties of infinite-state systems using a combination of a decision procedure for a subset of first-order logic and symbolic methods originally developed for finite-state model checking. We consider models containing first-order state variables, where the system state includes mutable functions and predicates. Such a model can describe systems containing arbitrarily large memories, buffers, and arrays of identical processes. We describe a form of predicate abstraction that constructs a formula over a set of universally quantified variables to describe invariant properties of the first-order state variables. We provide a formal justification of the soundness of our approach and describe how it has been used to verify several hardware and software designs, including a directory-based cache coherence protocol.
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsFormal Methods in Verification · Logic, programming, and type systems · Logic, Reasoning, and Knowledge
