972 research outputs found
Automatic verification of multi-threaded programs by inference of rely-guarantee specifications
Ministry of Education, Singapore under its Academic Research Funding Tier 2; National Research Foundation (NRF) Singapor
Lazy model checking for recursive state machines
Recursive state machines (RSMs) are state-based models for procedural programs with wide-ranging applications in program verification and interprocedural analysis. Model-checking algorithms for RSMs and related formalisms have been intensively studied in the literature. In this article, we devise a new model-checking algorithm for RSMs and requirements in computation tree logic (CTL) that exploits the compositional structure of RSMs by ternary model checking in combination with a lazy evaluation scheme. Specifically, a procedural component is only analyzed in those cases in which it might influence the satisfaction of the CTL requirement. We implemented our model-checking algorithms and evaluate them on randomized scalability benchmarks and on an interprocedural data-flow analysis of Java programs, showing both practical applicability and significant speedups in comparison to state-of-the-art model-checking tools for procedural programs.</p
Propagators and Solvers for the Algebra of Modular Systems
To appear in the proceedings of LPAR 21.
Solving complex problems can involve non-trivial combinations of distinct
knowledge bases and problem solvers. The Algebra of Modular Systems is a
knowledge representation framework that provides a method for formally
specifying such systems in purely semantic terms. Formally, an expression of
the algebra defines a class of structures. Many expressive formalism used in
practice solve the model expansion task, where a structure is given on the
input and an expansion of this structure in the defined class of structures is
searched (this practice overcomes the common undecidability problem for
expressive logics). In this paper, we construct a solver for the model
expansion task for a complex modular systems from an expression in the algebra
and black-box propagators or solvers for the primitive modules. To this end, we
define a general notion of propagators equipped with an explanation mechanism,
an extension of the alge- bra to propagators, and a lazy conflict-driven
learning algorithm. The result is a framework for seamlessly combining solving
technology from different domains to produce a solver for a combined system.Comment: To appear in the proceedings of LPAR 2
Automated Assume-Guarantee Reasoning by Abstraction Refinement
Current automated approaches for compositional model checking in the assume-guarantee style are based on learning of assumptions as deterministic automata. We propose an alternative approach based on abstraction refinement. Our new method computes the assumptions for the assume-guarantee rules as conservative and not necessarily deterministic abstractions of some of the components, and refines those abstractions using counter-examples obtained from model checking them together with the other components. Our approach also exploits the alphabets of the interfaces between components and performs iterative refinement of those alphabets as well as of the abstractions. We show experimentally that our preliminary implementation of the proposed alternative achieves similar or better performance than a previous learning-based implementation
Loop summarization using state and transition invariants
This paper presents algorithms for program abstraction based on the principle of loop summarization, which, unlike traditional program approximation approaches (e.g., abstract interpretation), does not employ iterative fixpoint computation, but instead computes symbolic abstract transformers with respect to a set of abstract domains. This allows for an effective exploitation of problem-specific abstract domains for summarization and, as a consequence, the precision of an abstract model may be tailored to specific verification needs. Furthermore, we extend the concept of loop summarization to incorporate relational abstract domains to enable the discovery of transition invariants, which are subsequently used to prove termination of programs. Well-foundedness of the discovered transition invariants is ensured either by a separate decision procedure call or by using abstract domains that are well-founded by construction. We experimentally evaluate several abstract domains related to memory operations to detect buffer overflow problems. Also, our light-weight termination analysis is demonstrated to be effective on a wide range of benchmarks, including OS device driver
- …