📣 Help Shape the Future of UKRI's Gateway to Research (GtR)

We're improving UKRI's Gateway to Research and are seeking your input! If you would be interested in being interviewed about the improvements we're making and to have your say about how we can make GtR more user-friendly, impactful, and effective for the Research and Innovation community, please email gateway@ukri.org.

Efficient Verification of Software with Replicated Components

Lead Research Organisation: University of Oxford
Department Name: Computer Science

Abstract

Concurrency is a model of computation that allows many units of executionto coexist. It is ubiquitous in computer science today: user processes in atime-sharing operating system execute concurrently, as do worker threads ina client-server environment. Parallel processing, once primarily ofinterest in high-performance computing, has emerged in recent years as anew way of increasing processing power, such as in multi-core concurrentsystems, even for the home personal computer.Concurrency poses new challenges for the quality assurance of software, fortwo reasons. First, concurrent programs have the potential for forms oferrors unknown in sequential computation, such as race conditions andmutual exclusion violations. Second, traditional reliability measures suchas simulation and testing fail in the presence of concurrency, due to thedifficulties of reproducing erroneous behavior. Model Checking is anautomated technique to reliably establish the correctness of software, orto reveal the existence of errors in a reproducible manner. A program isrepresented by a finite-state model, which is exhaustively searched forviolations of pre-specified properties.Exhaustive search, however, generally incurs a cost proportional to thenumber of model states that are reached during the search. This number isin turn worst-case exponential in the number of concurrent components. Thisstate space explosion problem has been a major obstacle to the widespreaduse of model checking.One avenue of our research is guided by the observation that concurrentsystems often consist of replicated components: instances of a singletemplate, generically describing the behavior of each component. Concurrentsystems of replicated components often exhibit a veryregular---symmetric---structure: their behavior is invariant underinterchanges of the components. This causes redundancy in the system modeland in the (naive) exploration of the model's state space.We propose to investigate the efficacy of symmetry reduction andparameterized verification to attack the state space explosion problem forsoftware with replicated components. Both techniques have shown to betremendously effective in principle, namely due to their potential ofreducing the size of a symmetric system by an exponential factor, or ofcollapsing the verification problem for an infinite family of systems toone for a single system or a small finite family, respectively.The applicability of these techniques to concurrent software was hampered,however, by the apparent incapability of model checking to deal withinteger variables over very large domains or even unbounded, dynamic datastructures. The situation changed dramatically with the advent of automatedabstraction-refinement techniques. Software is initially representedabstractly using coarse finite-state models, risking the possibility ofincorrect---spurious---verification results. The new paradigm came withways of detecting spuriousness, and of dealing with it by iterativelyrefining the abstract model until spurious behavior is removed.To sum up, concurrent software exhibits two sources of complexity: largevariable data domains and concurrency. Fortunately, these sources areorthogonal and can be attacked separately. This separation makes itpossible to apply symmetry reduction and parameterized techniques toconcurrent software, methods that target the concurrency aspect of statespace explosion. The ultimate goal of the proposed work is to combine thesemethods with iterative abstraction refinement to obtain verification toolsfor concurrent software that can seriously curb state space explosion atall levels.

Publications

10 25 50
publication icon
Donaldson A (2012) Counterexample-guided abstraction refinement for symmetric concurrent programs in Formal Methods in System Design

publication icon
Kroening D (2012) Loop summarization using state and transition invariants in Formal Methods in System Design

publication icon
Chockler H (2012) Computing Mutation Coverage in Interpolation-Based Model Checking in IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems

publication icon
Cook B (2013) Ranking function synthesis for bit-vector relations in Formal Methods in System Design

 
Description The goal of this research is to improve the quality of software programs that run on modern computers with multiple CPUs. In such software, parts of the program are often run multiple times at the same time. Such replicated components present a major challenge for exploratory verification techniques such as model checking. Symmetry reduction curbs this complexity by replacing the straight-forward system model by a behaviorally equivalent one that can be orders of magnitude smaller, exploiting the symmetry that the system exhibits. Parameterized verification replaces the verification problem for an unbounded system family by that for a small bounded family. Both techniques have proved to be powerful in supporting the analysis of domain-specific software such as communication protocols. We will investigate their use for general-purpose system-level software, running on standard computers with Windows or Linux, with applications ranging from concurrent device driver model checking to verifying parallel software written for modern multi-core architectures.
Exploitation Route The primary beneficiaries of the proposed work are practitioners who write concurrent software, as there is a strong toolbuilding component in this project. The tools will be available to the general public. In addition to that, there are numerous research groups world-wide that will directly be able to use our results. (As an illustration, in the 2007 edition of Computer-Aided Verification (CAV), the main venue in our research area, about 20% (9 out of 47) of the publications and tools were related to concurrent systems of the kind we are targeting in this proposal.) Prof. Marta Kwiatkowska at Oxford University has incorporated symmetry reduction into probabilistic model checking and has also expressed interest in verifying multiprocess networks. Other beneficiaries of our symmetry reduction research include the groups of Muffy Calder and Alice Miller at the University of Glasgow, and of Sharad Malik at Princeton University (one of the proposed work packages of this proposal attempts to improve Sharad Malik et. al.'s work on SAT-based symmetry reduction). Parameterized software verification is studied intensively by many research teams; they include the Model Checking group of Edmund Clarke at Carnegie Mellon University and the group of Helmut Veith at Darmstadt University of Technology and Munich University of Technology. Our goal is to apply verification techniques for systems with replicated components to general software, which only few people have done so far. Our work will likely establish a link between real concurrent software and methods operating on more abstract levels as developed by other groups; these groups will thus benefit by a better applicability of their solutions to real code. We collaborate with most of these groups, or are in the process of establishing a relationship that will allow us to disseminate our results to them. Finally, the computing industry will benefit from our work in their efforts to design reliable parallel software. Specifically, one goal of Microsoft Research's SLAM project is to increase the stability of the Windows operating system code. This includes concurrent, multi-threaded software and is particularly critical in device driver verification. Our work presented at TACAS 2008 marks the beginning of our efforts to apply symmetry reduction to system-level software and other concurrent C programs.
Sectors Digital/Communication/Information Technologies (including Software)

Electronics

Energy

Financial Services

and Management Consultancy

Healthcare

Manufacturing

including Industrial Biotechology

Security and Diplomacy

Transport

URL http://www.cprover.org/bfc/
 
Description There exists an extensive range of applications for CBMC, the software tool developed by this grant, for full details see http://www.cprover.org/cbmc/applications.shtml. CBMC has been used in the automotive industry for checking functionality of software, for verification of C code in pacemakers, for analysing driver interactions with semi-autonomous vehicles, and for runtime verification in ultra-critical systems used in aircraft.
First Year Of Impact 2010
Sector Digital/Communication/Information Technologies (including Software),Electronics,Energy,Healthcare,Manufacturing, including Industrial Biotechology,Security and Diplomacy,Transport
Impact Types Economic

 
Description European Research Council
Amount £1,098,069 (GBP)
Funding ID CPROVER 
Organisation European Research Council (ERC) 
Sector Public
Country Belgium
Start 09/2011 
End 11/2016