Reasoning about systems with many processes
Journal of the ACM (JACM)
Verification of Safety Properties Using IntegerProgramming: Beyond the State Equation
Formal Methods in System Design
Well-structured transition systems everywhere!
Theoretical Computer Science
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Towards the Automated Verification of Multithreaded Java Programs
TACAS '02 Proceedings of the 8th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Attacking Symbolic State Explosion
CAV '01 Proceedings of the 13th International Conference on Computer Aided Verification
General decidability theorems for infinite-state systems
LICS '96 Proceedings of the 11th Annual IEEE Symposium on Logic in Computer Science
On Model Checking for Non-Deterministic Infinite-State Systems
LICS '98 Proceedings of the 13th Annual IEEE Symposium on Logic in Computer Science
On the Verification of Broadcast Protocols
LICS '99 Proceedings of the 14th Annual IEEE Symposium on Logic in Computer Science
Exponential space complete problems for Petri nets and commutative semigroups (Preliminary Report)
STOC '76 Proceedings of the eighth annual ACM symposium on Theory of computing
SAT-Solving the Coverability Problem for Petri Nets
Formal Methods in System Design
Java Concurrency in Practice
Learning from mistakes: a comprehensive study on real world concurrency bug characteristics
Proceedings of the 13th international conference on Architectural support for programming languages and operating systems
Forward Analysis for WSTS, Part II: Complete WSTS
ICALP '09 Proceedings of the 36th Internatilonal Collogquium on Automata, Languages and Programming: Part II
Journal of Computer and System Sciences
Expand, Enlarge and Check: New algorithms for the coverability problem of WSTS
Journal of Computer and System Sciences
SPIN'03 Proceedings of the 10th international conference on Model checking software
From many places to few: automatic abstraction refinement for Petri nets
ICATPN'07 Proceedings of the 28th international conference on Applications and theory of Petri nets and other models of concurrency
On the efficient computation of the minimal coverability set for Petri nets
ATVA'07 Proceedings of the 5th international conference on Automated technology for verification and analysis
Revisiting Ackermann-hardness for lossy counter machines and reset Petri nets
MFCS'10 Proceedings of the 35th international conference on Mathematical foundations of computer science
Symmetry-aware predicate abstraction for shared-variable concurrent programs
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Threader: a constraint-based verifier for multi-threaded programs
CAV'11 Proceedings of the 23rd international conference on Computer aided verification
Thread-modular verification is cartesian abstract interpretation
ICTAC'06 Proceedings of the Third international conference on Theoretical Aspects of Computing
SATABS: SAT-Based predicate abstraction for ANSI-C
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
Petruchio: from dynamic networks to nets
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Dynamic cutoff detection in parameterized concurrent programs
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
A complete abstract interpretation framework for coverability properties of WSTS
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Ideal abstractions for well-structured transition systems
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
An Algorithmic Framework for Coverability in Well-Structured Systems
ACSD '12 Proceedings of the 2012 12th International Conference on Application of Concurrency to System Design
Soter: an automatic safety verifier for erlang
Proceedings of the 2nd edition on Programming systems, languages and applications based on actors, agents, and decentralized control abstractions
FOSSACS'13 Proceedings of the 16th international conference on Foundations of Software Science and Computation Structures
Incremental, inductive coverability
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Expand, enlarge, and check for branching vector addition systems
CONCUR'13 Proceedings of the 24th international conference on Concurrency Theory
Hi-index | 0.00 |
We consider multi-threaded programs with an unbounded number of threads executing a finite-state, non-recursive procedure. Safety properties of such programs can be checked via reduction to the coverability problem for well-structured transition systems (WSTS). In this paper, we present a novel, sound and complete yet empirically much improved solution to this problem. The key idea to achieve a compact search structure is to track uncoverability only for minimal uncoverable elements, even if these elements are not part of the original coverability query. To this end, our algorithm examines elements in the downward closure of elements backward-reachable from the initial queries. A downside is that the algorithm may unnecessarily explore elements that turn out coverable and thus fail to contribute to the proof minimization. We counter this effect using a forward search engine that simultaneously generates (a subset of all) coverable elements, e.g., a generalized Karp-Miller procedure. We demonstrate in extensive experiments on $\mathcal{C}$ programs that our approach targeting minimal uncoverability proofs outperforms existing techniques by orders of magnitude.