Automatic verification of finite-state concurrent systems using temporal logic specifications
ACM Transactions on Programming Languages and Systems (TOPLAS)
Advances in Petri nets 1986, part II on Petri nets: applications and relationships to other models of concurrency
A general-purpose algorithm for analyzing concurrent programs
Communications of the ACM
Design and validation of computer protocols
Design and validation of computer protocols
STOC '91 Proceedings of the twenty-third annual ACM symposium on Theory of computing
Stubborn sets for reduced state generation
APN 90 Proceedings on Advances in Petri nets 1990
Techniques for debugging parallel programs with flowback analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data flow analysis of concurrent systems that use the rendezvous model of synchronization
TAV4 Proceedings of the symposium on Testing, analysis, and verification
The temporal logic of reactive and concurrent systems
The temporal logic of reactive and concurrent systems
Symbolic Boolean manipulation with ordered binary-decision diagrams
ACM Computing Surveys (CSUR)
Defining conditional independence using collapses
Theoretical Computer Science - Selected papers of the International BCS-FACS Workshop on Semantics for Concurrency, Leicester, UK, July 1990
A toolbox for the verification of LOTOS programs
ICSE '92 Proceedings of the 14th international conference on Software engineering
Model checking and abstraction
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The concurrency workbench: a semantics-based tool for the verification of concurrent systems
ACM Transactions on Programming Languages and Systems (TOPLAS)
PPOPP '93 Proceedings of the fourth ACM SIGPLAN symposium on Principles and practice of parallel programming
Using partial orders for the efficient verification of deadlock freedom and safety properties
Formal Methods in System Design - Special issue on computer-aided verification: special methods II
TAOS: Testing with Analysis and Oracle Support
ISSTA '94 Proceedings of the 1994 ACM SIGSOFT international symposium on Software testing and analysis
Oracles for checking temporal properties of concurrent systems
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Analyzing the communication topology of concurrent programs
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Semantic analysis of shared-memory concurrent languages using abstract model-checking
PEPM '95 Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Formal Methods in System Design
Structural specification-based testing with ADL
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Constructing abstract models of concurrent real-time software
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Specification-based testing of reactive software: tools and experiments: experience report
ICSE '97 Proceedings of the 19th international conference on Software engineering
Model checking for programming languages using VeriSoft
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 1998 ACM SIGSOFT international symposium on Software testing and analysis
Automatically closing open reactive programs
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
A practical method for verifying event-driven software
Proceedings of the 21st international conference on Software engineering
Checking that finite state concurrent programs satisfy their linear specification
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Bandera: extracting finite-state models from Java source code
Proceedings of the 22nd international conference on Software engineering
Automated systematic testing for constraint-based interactive services
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
Ensuring privacy in presence awareness: an automated verification approach
CSCW '00 Proceedings of the 2000 ACM conference on Computer supported cooperative work
Symbolic Model Checking
Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Software model checking in practice: an industrial case study
Proceedings of the 24th International Conference on Software Engineering
Protocol Verification as a Hardware Design Aid
ICCD '92 Proceedings of the 1991 IEEE International Conference on Computer Design on VLSI in Computer & Processors
Validating SDL Specifications: an Experiment
Proceedings of the IFIP WG6.1 Ninth International Symposium on Protocol Specification, Testing and Verification IX
Model-Checking Multi-threaded Distributed Java Programs
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
The Temporal Rover and the ATG Rover
Proceedings of the 7th International SPIN Workshop on SPIN Model Checking and Software Verification
Exploiting Symmetry when Model-Checking Software
FORTE XII / PSTV XIX '99 Proceedings of the IFIP TC6 WG6.1 Joint International Conference on Formal Description Techniques for Distributed Systems and Communication Protocols (FORTE XII) and Protocol Specification, Testing and Verification (PSTV XIX)
Automatic Synthesis of Specifications from the Dynamic Observation of Reactive Programs
TACAS '97 Proceedings of the Third International Workshop on Tools and Algorithms for Construction and Analysis of Systems
Exploring Very Large State Spaces Using Genetic Algorithms
TACAS '02 Proceedings of the 8th International Conference on Tools and Algorithms for the Construction and Analysis of Systems
Abstract Interpretation of the pi-Calculus
Selected papers from the 5th LOMAPS Workshop on Analysis and Verification of Multiple-Agent Languages
Model Checking in Practice: An Analysis of the ACCESS.bus Protocol using SPIN
FME '96 Proceedings of the Third International Symposium of Formal Methods Europe on Industrial Benefit and Advances in Formal Methods
Using Partial Orders to Improve Automatic Verification Methods
CAV '90 Proceedings of the 2nd International Workshop on Computer Aided Verification
Bounded-memory Algorithms for Verification On-the-fly
CAV '91 Proceedings of the 3rd International Workshop on Computer Aided Verification
All from One, One for All: on Model Checking Using Representatives
CAV '93 Proceedings of the 5th International Conference on Computer Aided Verification
Refining Dependencies Improves Partial-Order Verification Methods (Extended Abstract)
CAV '93 Proceedings of the 5th International Conference on Computer Aided Verification
Using On-The-Fly Verification Techniques for the Generation of test Suites
CAV '96 Proceedings of the 8th International Conference on Computer Aided Verification
Verification of the Futurebus+ Cache Coherence Protocol
CHDL '93 Proceedings of the 11th IFIP WG10.2 International Conference sponsored by IFIP WG10.2 and in cooperation with IEEE COMPSOC on Computer Hardware Description Languages and their Applications
Protocol Development Success Stories: Part 1
Proceedings of the IFIP TC6/WG6.1 Twelth International Symposium on Protocol Specification, Testing and Verification XII
ASE '00 Proceedings of the 15th IEEE international conference on Automated software engineering
Formal validation of virtual finite state machines
WIFT '95 Proceedings of the 1st Workshop on Industrial-Strength Formal Specification Techniques
Verification of concurrent systems: function and timing
Verification of concurrent systems: function and timing
Dynamic partial-order reduction for model checking software
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Random testing of formal software models and induced coverage
Proceedings of the 1st international workshop on Random testing
DEGAS: discrete event Gnu advanced scheduler
Proceedings of the 2006 annual ACM SIGAda international conference on Ada
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 2007 ACM international conference on SIGAda annual international conference
Model checking concurrent linux device drivers
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Distributed Verification of Multi-threaded C++ Programs
Electronic Notes in Theoretical Computer Science (ENTCS)
Experience applying the SPIN model checker to an industrial telecommunications system
Proceedings of the 30th international conference on Software engineering
Transforming sources to petri nets: a way to analyze execution of parallel programs
Proceedings of the 1st international conference on Simulation tools and techniques for communications, networks and systems & workshops
Dynamic Model Checking with Property Driven Pruning to Detect Race Conditions
ATVA '08 Proceedings of the 6th International Symposium on Automated Technology for Verification and Analysis
Race analysis for SystemC using model checking
Proceedings of the 2008 IEEE/ACM International Conference on Computer-Aided Design
Model Checking Dynamic Memory Allocation in Operating Systems
Journal of Automated Reasoning
Developing parallel programs: A design-oriented perspective
IWMSE '09 Proceedings of the 2009 ICSE Workshop on Multicore Software Engineering
Symbolic pruning of concurrent program executions
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Model-based Kernel Testing for Concurrency Bugs through Counter Example Replay
Electronic Notes in Theoretical Computer Science (ENTCS)
Automatic Inference of Frame Axioms Using Static Analysis
ASE '08 Proceedings of the 2008 23rd IEEE/ACM International Conference on Automated Software Engineering
Full simulation coverage for SystemC transaction-level models of systems-on-a-chip
Formal Methods in System Design
Symbolic Predictive Analysis for Concurrent Programs
FM '09 Proceedings of the 2nd World Congress on Formal Methods
Race analysis for systemc using model checking
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Static detection of Livelocks in Ada multitasking programs
Ada-Europe'07 Proceedings of the 12th international conference on Reliable software technologies
An automatic method for the dynamic construction of abstractions of states of a formal model
Cybernetics and Systems Analysis
Coverage guided systematic concurrency testing
Proceedings of the 33rd International Conference on Software Engineering
Boosting lazy abstraction for systemc with partial order reduction
TACAS'11/ETAPS'11 Proceedings of the 17th international conference on Tools and algorithms for the construction and analysis of systems: part of the joint European conferences on theory and practice of software
Verifying SystemC: a software model checking approach
Proceedings of the 2010 Conference on Formal Methods in Computer-Aided Design
Checking models, proving programs, and testing systems
TAP'11 Proceedings of the 5th international conference on Tests and proofs
Depth bounded explicit-state model checking
Proceedings of the 18th international SPIN conference on Model checking software
A hoare calculus for the verification of synchronous languages
PLPV '12 Proceedings of the sixth workshop on Programming languages meets program verification
CONTESSA: concurrency testing augmented with symbolic analysis
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Concrete model checking with abstract matching and refinement
CAV'05 Proceedings of the 17th international conference on Computer Aided Verification
A livelock freedom analysis for infinite state asynchronous reactive systems
CONCUR'06 Proceedings of the 17th international conference on Concurrency Theory
A uniform classification of common concurrency errors
EUROCAST'11 Proceedings of the 13th international conference on Computer Aided Systems Theory - Volume Part I
Model checking distributed systems by combining caching and process checkpointing
ASE '11 Proceedings of the 2011 26th IEEE/ACM International Conference on Automated Software Engineering
Predicting concurrency failures in the generalized execution traces of x86 executables
RV'11 Proceedings of the Second international conference on Runtime verification
CONCURRIT: a domain specific language for reproducing concurrency bugs
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
Optimal dynamic partial order reduction
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.00 |
Verification by state-space exploration, also often referred to as model checking, is an effective method for analyzing the correctness of concurrent reactive systems (for instance, communication protocols). Unfortunately, traditional model checking is restricted to the verification of properties of models, i.e., abstractions, of concurrent systems.We discuss in this paper how model checking can be extended to analyze arbitrary software, such as implementations of communication protocols written in programming languages like C or C++. We then introduce a search technique that is suitable for exploring the state spaces of such systems. This algorithm has been implemented in VeriSoft, a tool for systematically exploring the state spaces of systems composed of several concurrent processes executing arbitrary code.During the past five years, VeriSoft has been applied successfully for analyzing several software products developed in Lucent Technologies, and has also been licensed to hundreds of users in industry and academia. We discuss applications, strengths and limitations of VeriSoft, and compare it to other approaches to software model checking, analysis and testing.