Generic tools for verifying concurrent systems

Similar documents
Rance Cleaveland The Concurrency Factory is an integrated toolset for specication, simulation,

TIV: A Toolset for Interactive Verification of Basic LOTOS Specifications

MOCHA: Modularity in Model Checking??? Computing Science Research Center, Bell Laboratories.

Rule Formats for Nominal Modal Transition Systems

has developed a specication of portions of the IEEE 854 oating-point standard in PVS [7]. In PVS, the injective function space injection can be dened

Proc. XVIII Conf. Latinoamericana de Informatica, PANEL'92, pages , August Timed automata have been proposed in [1, 8] to model nite-s

Moby/plc { Graphical Development of. University of Oldenburg { Department of Computer Science. P.O.Box 2503, D Oldenburg, Germany

A Boolean Expression. Reachability Analysis or Bisimulation. Equation Solver. Boolean. equations.

when a process of the form if be then p else q is executed and also when an output action is performed. 1. Unnecessary substitution: Let p = c!25 c?x:

Substitution in Structural Operational Semantics and value-passing process calculi

Software Component Relationships. Stephen H. Edwards. Department of Computer Science. Virginia Polytechnic Institute and State University

NuSMV: a reimplementation of SMV. A. Cimatti, E. Clarke, F. Giunchiglia, M. Roveri

Natural Semantics [14] within the Centaur system [6], and the Typol formalism [8] which provides us with executable specications. The outcome of such

Formal Specification of Software Systems

Truth A verification platform for concurrent systems

A taxonomy of race. D. P. Helmbold, C. E. McDowell. September 28, University of California, Santa Cruz. Santa Cruz, CA

Linear-Time Model Checking: Automata Theory in Practice

System-Level Specication of Instruction Sets. Department of Electrical and Computer Engineering. Department of Computer Science

of m clauses, each containing the disjunction of boolean variables from a nite set V = fv 1 ; : : : ; vng of size n [8]. Each variable occurrence with

Available online at ScienceDirect. Procedia Computer Science 56 (2015 )

Compilation Issues for High Performance Computers: A Comparative. Overview of a General Model and the Unied Model. Brian J.

Model Checking: Back and Forth Between Hardware and Software

Abstract formula. Net formula

Application of Equivalence Checking in a Loan Origination Process in Banking Industry

Proving the Correctness of Distributed Algorithms using TLA

Parallel Model Checking of ω-automata

Timer DRAM DDD FM9001 DRAM

An Algebraic Framework for Optimizing Parallel Programs

COMP 763. Eugene Syriani. Ph.D. Student in the Modelling, Simulation and Design Lab School of Computer Science. McGill University

Dynamic Logic David Harel, The Weizmann Institute Dexter Kozen, Cornell University Jerzy Tiuryn, University of Warsaw The MIT Press, Cambridge, Massac

40 Behaviour Compatibility

On the Verification of Coordination

Scenario-based Synthesis of Annotated Class Diagrams in UML

erics: A Tool for Verifying Timed Automata and Estelle Specifications

the application rule M : x:a: B N : A M N : (x:a: B) N and the reduction rule (x: A: B) N! Bfx := Ng. Their algorithm is not fully satisfactory in the

The Maude LTL Model Checker and Its Implementation

A Parallel Intermediate Representation based on. Lambda Expressions. Timothy A. Budd. Oregon State University. Corvallis, Oregon.

Centre for Parallel Computing, University of Westminster, London, W1M 8JS

Liveness and Fairness Properties in Multi-Agent Systems

Solve the Data Flow Problem

To be or not programmable Dimitri Papadimitriou, Bernard Sales Alcatel-Lucent April 2013 COPYRIGHT 2011 ALCATEL-LUCENT. ALL RIGHTS RESERVED.

capture cumulative changes over an interval, while in the HIOA model, the evolution of the continuous state variables over time is modeled using traje

Lecture1: Symbolic Model Checking with BDDs. Edmund M. Clarke, Jr. Computer Science Department Carnegie Mellon University Pittsburgh, PA 15213

A Symbolic Model Checker for ACTL? Abstract. We present SAM, a symbolic model checker for ACTL, the

Distributed Systems Programming (F21DS1) Formal Verification

Model Checking VHDL with CV

hal , version 1-9 Apr 2009

Software Language Engineering of Architectural Viewpoints

Modelling and Verifying Web Service Orchestration by means of the Concurrency Workbench p.1/19

The Essence of Compiling with Continuations

Composability Test of BOM based models using Petri Nets

Chordal graphs and the characteristic polynomial

Enhancing Datalog with Epistemic Operators to Reason About Systems Knowledge in

Enhancing Integrated Layer Processing using Common Case. Anticipation and Data Dependence Analysis. Extended Abstract

perform. If more storage is required, more can be added without having to modify the processor (provided that the extra memory is still addressable).

XEVE, an ESTEREL Verification Environment

Equations for Asynchronous Message Passing

A Note on Fairness in I/O Automata. Judi Romijn and Frits Vaandrager CWI. Abstract

A Mini Challenge: Build a Verifiable Filesystem

! Use of formal notations. ! in software system descriptions. ! for a broad range of effects. ! and varying levels of use. !

Comparative Analysis of Architectural Views Based on UML

Autolink. A Tool for the Automatic and Semi-Automatic Test Generation

Leveraging DTrace for runtime verification

CS 242. Fundamentals. Reading: See last slide

7. Introduction to Denotational Semantics. Oscar Nierstrasz

Conclusions and further reading

On Latency Management in Time-Shared Operating Systems *

A Partial Correctness Proof for Programs with Decided Specifications

Synchronization Expressions: Characterization Results and. Implementation. Kai Salomaa y Sheng Yu y. Abstract

Course on Probabilistic Methods in Concurrency. (Concurrent Languages for Probabilistic Asynchronous Communication) Lecture 1

Group B Assignment 9. Code generation using DAG. Title of Assignment: Problem Definition: Code generation using DAG / labeled tree.

Category Theory in Ontology Research: Concrete Gain from an Abstract Approach

The Stepping Stones. to Object-Oriented Design and Programming. Karl J. Lieberherr. Northeastern University, College of Computer Science

Outline. Computer Science 331. Information Hiding. What This Lecture is About. Data Structures, Abstract Data Types, and Their Implementations

Tutorial on Model Checking Modelling and Verification in Computer Science

Transparent Access to Legacy Data in Java. Olivier Gruber. IBM Almaden Research Center. San Jose, CA Abstract

Server 1 Server 2 CPU. mem I/O. allocate rec n read elem. n*47.0. n*20.0. select. n*1.0. write elem. n*26.5 send. n*

An implementation model of rendezvous communication

On the Definition of Sequential Consistency

for the MADFA construction problem have typically been kept as trade secrets (due to their commercial success in applications such as spell-checking).

Binary Decision Diagrams and Symbolic Model Checking

A Commit Scheduler for XML Databases

Ecient on-the-y model-checking for regular alternation-free mu-calculus

Sérgio Campos, Edmund Clarke

The Method for Verifying Software Architecture with FSP Model

Transport protocols are of practical. login, le transfer, and remote procedure. calls. will operate on and therefore are generally

Control Flow Analysis with SAT Solvers

The Compositional C++ Language. Denition. Abstract. This document gives a concise denition of the syntax and semantics

Łabiak G., Miczulski P. (IIE, UZ, Zielona Góra, Poland)

2 Notation: A Functional Specification Language

Imperative Functional Programming

Thunks (continued) Olivier Danvy, John Hatcli. Department of Computing and Information Sciences. Kansas State University. Manhattan, Kansas 66506, USA

Siegfried Loer and Ahmed Serhrouchni. Abstract. SPIN is a tool to simulate and validate Protocols. PROMELA, its

Construction of Application Generators Using Eli. Uwe Kastens, University of Paderborn, FRG. Abstract

An Operational Semantics for Parallel Execution of Re-entrant PLEX

(b) extended UML state machine diagram. (a) UML state machine diagram. tr D2 tr D1 D2 D1 D2

Towards Verifying VHDL Descriptions of Processors.

RECONFIGURATION OF HIERARCHICAL TUPLE-SPACES: EXPERIMENTS WITH LINDA-POLYLITH. Computer Science Department and Institute. University of Maryland

[BGH+97c] R. Breu, R. Grosu, C. Hofmann, F. Huber, I. Krüger, B. Rumpe, M. Schmidt, W. Schwerin. Exemplary and Complete Object Interaction

Key Properties for Comparing Modeling Languages and Tools: Usability, Completeness and Scalability

Transcription:

Science of Computer Programming 42 (2002) 39 47 www.elsevier.com/locate/scico Generic tools for verifying concurrent systems Rance Cleaveland a;, Steven T. Sims b a Department of Computer Science, SUNY at Stony Brook, Stony Brook, NY 11794-4400, USA b Reactive Systems Inc., 120-B East Broad St., Falls Church, VA 22046, USA Abstract Despite the enormous strides made in automatic verication technology over the past decade and a half, tools such as model checkers remain relatively underused in the development of software. One reason for this is that the bewildering array of specication and verication formalisms complicates the development and adoption by users of relevant tool support. This paper proposes a remedy to this state of aairs in the case of nite-state concurrent systems by describing an approach to developing customizable yet ecient verication tools. c 2002 Elsevier Science B.V. All rights reserved. Keywords: Specication; Verication; Model checking; Operational semantics; Process algebra; Verication tools 1. Introduction The eld of automatic verication of nite-state concurrent systems has experienced tremendous advances over the past decade and a half, as ecient verication algorithms have been developed and associated tools built and applied to case studies of substantial complexity [16,21]. Within the hardware community, commercial interest in these tools has emerged, as companies such as Cadence, Intel, Motorola, National Semiconductor and Avant! have developed, or incorporated within their development processes the use of, automatic verication tools. Despite these developments, however, verication technology remains largely unused in the software community, even in areas, such as process control and communications protocols, that resemble hardware in that nitestate models form a natural basis for system implementations. One may identify several cultural and technical reasons for this lack of uptake within the software community: unavailability of training, uncertainty about how to deploy Research supported by ARO grant P-38682-MA, AFOSR grant F49620-95-1-0508, NSF Young Investigator Award CCR-9257963, NSF grant CCR-9505562, NSF grant CCR-9996086, and NSF grant INT-9603441. Corresponding author. E-mail addresses: rance@cs.sunysb.edu (R. Cleaveland), sims@reactive-systems.com (S.T. Sims). 0167-6423/02/$ - see front matter c 2002 Elsevier Science B.V. All rights reserved. PII: S 0167-6423(01)00033-8

40 R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 formal analysis in the software development process, skepticism about the benets versus the costs of formal analysis, etc. While it is beyond the scope of this paper to discuss all these concerns, we do note that even users who might be interested in formal approaches to the analysis of nite-state systems are confronted with the following issues. (1) Which design notation should be used for representing software artifacts? The literature contains a number of proposals, including UML [37], Esterel [2], Statecharts [29], SDL [12], LOTOS [34], and CSP [30], to name only a few of the best-known ones. (2) How should requirements for designs be formulated? Again, the literature contains numerous suggestions, including nite-state machines, Computation Tree Logic [15] and Linear Temporal Logic [32], to name a few. This bewildering array of choices has two negative consequences. The rst is that no specication formalism has yet achieved a critical mass of users. The second is that tool support (necessary for any serious use of formal analysis) remains fairly primitive from a user s perspective; the fact that no large market exists for any single formalism makes it dicult for tool builders to obtain the resources needed to build sophisticated, user-oriented tools. The lack of appropriate tool support has in turn retarded the uptake of automatic verication among software designers. In this paper, we propose a framework for developing generic and customizable verication tools and investigate its use as a basis for ecient automated analysis of nite-state systems. The framework is intended to ease the task of developing usable tools for (operationally based) verication formalisms, thereby removing, at least in principle, one obstacle to the increased adoption of verication technology in practice. 2. Fundamental concepts in the verication of nite-state systems This section sketches the concepts we believe fundamental for the analysis and verication of nite-state systems. The rst two involve approaches to establishing that nite-state systems satisfy their specications. In general, one may identify two schools of thought regarding the verication of systems: logic-based approaches and renementbased techniques. The former typically involve the use of a temporal logic for describing desired system properties; one then uses a model checker to determine whether or not the properties hold of a putative implementation. The latter uses abstract, highlevel systems as specications; one then proves an implementation correct by showing that it renes such a specication (i.e. is related to it by an appropriate behavioral equivalence or preorder). Both approaches have their uses, and a number of temporal logics and behavioral relations have been proposed for verication purposes. The interested reader is referred to the survey articles in [16,21] for a more complete overview of these topics.

R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 41 So what is fundamental to these approaches? In the case of model checking, we and others [4,26] have focused on the modal mu-calculus [31] as an expressive and ecient basis. This logic provides simple modalities and propositional constructs together with mechanisms for dening properties recursively. Ecient model-checking algorithms have been developed for fragments of this logic [3,22,25], and other temporal logics have ecient translations into these fragments [4,23,26]. For renementbased approaches, we argue that (bi)simulation is key. Ecient algorithms exist for determining whether systems are related by bisimulation equivalence (simulation preorder) [8,14,27,35], and other relations may be computed eciently by combining decision procedures for (bi)simulation with appropriate transformations on the underlying nite-state systems [13,19]. In addition, general theories of bisimulation-based diagnostic information that explain why a system fails to rene another have been developed [14]. The nal fundamental notion involves the denition of design notations for representing nite-state systems. In order to be usable as a basis for formal analysis, such notations must, in addition to having useful constructs, be equipped with a formal semantics that unambiguously denes an association between programs in the language and nite-state machines representing their behavior. To give such a semantics, we advocate the use of operational semantic in general, and structural operational semantics (SOS) [36] in particular, for their rigor and conceptual clarity. SOS presentations consist of collections of inference rules that specify the single-step transitions of systems in terms of the execution steps of their components. Languages such as CCS [33], LOTOS [34] and CSP [30] have such a semantics, and it has become the preferred style for dening the meaning of constructs in process algebra [7]. An additional virtue of operational semantics, and SOS in particular, involves its connection with simulation: an operational account of a language implicitly denes how to simulate programs in the language. 3. The concurrency workbench and analytical genericity The previous section outlined a proposed foundation for the automatic verication of nite-state systems. In order for this theory to be of practical as well as theoretical value, one must show that it can be used as a basis for the development of usable verication tools. This section and the one following explore this issue by describing our experience with two associated automatic verication tools: the Concurrency Workbench of the New Century (CWB-NC) 1 [1,20] and the Process Algebra Compiler of North Carolina (PAC-NC) [18]. The Concurrency Workbench (CWB) was originally conceived as a laboratory for experimenting with dierent techniques for verifying nite-state systems represented in 1 The tool has had other names in the past: the NCSU Concurrency Workbench and the Concurrency Workbench of North Carolina.

42 R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 Front End Design Language (Temporal) Logic Tool Kernel Simulator LTS/Automata Transformations Bisimulation Checker Prebisimulation Checker Mu-Calculus Model Checker Fig. 1. The Architecture of the CWB-NC. CCS [19]. The tool incorporated implementations of bisimulation, prebisimulation and mu-calculus model-checking algorithms and provided support for easily customizing these algorithms to calculate a variety of dierent behavioral relations and for introducing new temporal constructs. The original public release of the system suered from several performance bottlenecks, and consequently while it was easy to customize it could be frustratingly inecient. The tool was nevertheless used successfully in the analysis of several case studies [10]. The CWB-NC represents a completely re-implemented version of the original CWB. Our goal in this eort has been to show that the ineciencies of the CWB were due not to its genericity (as some have suggested) but rather to lower-level implementation issues that can be addressed in a design-language- and analysis-independent manner. Consequently, the CWB-NC retains the (pre)bisimulation=mu-calculus orientation of the original CWB, but it contains more ecient implementations of the low-level routines. It also cleanly separates routines that are design-language-specic (parsers, unparsers, transition calculation) from those that are independent of the design notation (bisimulation, model checking, simulator) in order to facilitate modications to the language that is supported. Fig. 1 contains a representation of the architecture of the CWB-NC. The CWB-NC has been publicly available since September of 1996 and can be retrieved from URL www.cs.sunysb.edu/~cwb/; it has been used in the analysis of several sophisticated case studies [5,17,24]. While a detailed comparison has not been conducted, preliminary evidence suggests that the CWB-NC is 2 3 orders of magnitude

R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 43 CWB-NC Language Description PAC-NC Design Language Logic Kernel Fig. 2. The PAC-NC architecture. faster than the earlier version of the CWB (specically, Version 6.0) upon which it was based. 4. The process algebra compiler and language genericity Our experience with the CWB and CWB-NC suggests that (pre)bisimulations and the modal mu-calculus form an ecient yet easily customizable basis for system verication. However, changing the design language supported by the CWB-NC requires substantial and delicate recoding in order for performance to be acceptable. In order to alleviate the diculty of this task, we have developed the Process Algebra Compiler (PAC) [18] in collaboration with Eric Madelaine of INRIA-Sophia Antipolis. The PAC aims to produce ecient front ends for verication tools from high-level descriptions of the syntax and semantics of the design language the front-end is intended to support. The PAC-NC constitutes the specialization of the PAC for the CWB-NC. The PAC-NC takes input les dening the abstract and concrete syntax of a design notation and its operational semantics as SOS rules and generates SML code (the implementation language of the CWB-NC) implementing parsers, unparsers and relevant semantic routines (primarily a transition calculator). A user may then insert these routines into the CWB-NC in order to change the design notation supported by the tool. Fig. 2 graphically depicts this process. It should be noted that all versions of the PAC, including the PAC-NC, use the same PAC front end; they dier only in the code they produce, since dierent verication tools expect routines in dierent languages and with dierent functionalities. Eciency issues. The CWB-NC makes extremely heavy use of the semantic routines for a design language; to construct an automaton from a design language program, for instance, the transitions function must be called for each state. Consequently, in order for the PAC-generated front ends to be usable, great care must be taken to ensure the eciency of the automatically-generated semantic routines. To achieve this, the PAC-NC combines a general pattern-matching-oriented approach with two low-level optimizations in the semantic routines it generates. We briey describe these here; the interested reader is referred to [18,38] for a more detailed account. To build a function for a semantic routine from an SOS specication, the PAC-NC rst analyzes the rules on the basis of the design language constructs they are applicable to. It then generates a function that, given a program in the design language,

44 R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 Table 1 Timings for PAC-generated front ends a TIME (CPU s) System Language Reachable states PM +C +CF 802-2 CCS 331 3.41 1.30 1.55 Mailer CCS 1616 9.53 5.02 5.56 ATM CCS 59614 723.54 189.44 83.56 Emitter LOTOS 5571 361.35 58.69 55.06 Railway LOTOS 19724 1244.61 363.05 171.74 Railway PCCS 11905 2081.37 385.53 319.23 a Note: PM = pattern matching ; +C = pattern matching and caching ; +CF = pattern matching, caching and tree attening. determines the applicable rules, recursively calculates the semantic information for appropriate subprograms, and then uses the rules to combine the results of the recursive calls appropriately. To make this process as ecient as possible, the produced routine also does the following. Call caching. The results of certain previous recursive calls are stored in a table in order to avoid duplication of eort. (Which call results are cached in this manner is presently left up to the user, although this information could also be determined by doing a ow analysis of the SOS rules.) Tree attening. Parse trees are represented via indices into a table, which stores the operator of the root of the tree and indices of the subtrees. This strategy enables the sharing of subtrees, and it also supports constant-time equality-checking and hashing functions on these trees. Tables 1 and 2 contain the time and space results of some experiments with dierent PAC-generated front ends for the CWB-NC. The experiments were conducted on a 180 MHz Pentium Pro machine with 64 MB of memory. The timing table records the time needed to construct an automaton from a given program, while the space table indicates the maximum heap size needed. The programs used include the following. 802-2: A simplied version of the IEEE 802-2 token ring protocol. Mailer: A version of the electronic mail protocol used by the Computer Science Department of the University of Edinburgh in the late 1980s [9]. ATM: An account of version 3.0 of the User=Network Interface in the ATM communications protocol [13]. Emitter: A sender in a communications protocol. Railway (LOTOS): A railway signaling scheme. Railway (PCCS): The same railway signaling scheme in the PCCS process algebra [17]. In general, caching and tree attening lead to signicant improvements in timing behavior. Somewhat surprisingly, they also induce improved memory performance on occasion. This seeming anomaly results from sharing in the parse tree representations

R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 45 Table 2 Space usage for PAC-generated front ends a SPACE (max process size in MB) System Language Reachable states PM +C +CF 802-2 CCS 331 8.848 8.000 9.040 Mailer CCS 1616 10.000 10.768 11.476 ATM CCS 59614 54.846 42.144 54.756 Emitter LOTOS 5571 15.256 14.932 15.128 Railway LOTOS 19724 38.368 34.016 38.880 Railway PCCS 11905 21.656 38.492 43.180 a Note: PM = pattern matching ; +C = pattern matching and caching ; +CF = pattern matching, caching and tree attening. that caching in particular supports. It should also be noted that the benets of tree attening grow as the syntactic complexity of designs increases. Thus, the improvement induced by tree attening in the ATM example and the LOTOS examples is much bigger than in the other, less syntactically elaborate examples. Finally, caution should be used in interpreting the space-usage results, owing to the well-known diculties in the space proling of garbage-collected languages such as SML. It should be noted that the original hand-written CWB semantic routines employed the same pattern-oriented approach to the calculation of semantic information, although neither call caching nor tree attening were used. 5. Conclusions and directions for future work This paper proposes a generic framework for the automatic verication of nitestate systems and shows how ecient tool support may be given for it. The framework consists of three basic concepts: (pre)bisimulations as a basis for renement, the modal mu-calculus as a basis for model checking, and structural operational semantics as a basis for dening the semantics of design notations. The Concurrency Workbench of North Carolina and the Process Algebra Compiler of North Carolina exploit this framework to provide ecient yet easily customizable tool support based on these notions. The motivations underlying the construction of the Caesar=Aldebaran Development Package (CADP) [28] are similar to ours; its developers also aim to give users an easy-to-customize yet ecient platform for automatic verication. As in our case, this tool s approach to analytical genericity features an emphasis on (bi)simulations for renement relations and a logic similar to the mu-calculus for model-checking. The tool also includes support for analyzing value-passing systems, which we have not paid attention to. For design-language customization, however, CADP favors the use of low-level intermediate representations; to develop a new front end a tool-builder

46 R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 must in essence write a compiler generating these representations. Our approach is based on the use of high-level descriptions of the semantics of design languages and consequently demands less eort on the part of the user interested in developing support for a new notation. In the future we would like to investigate techniques for improving the space utilization of PAC-generated front ends. Recent work [4] also points to an abstract basis for model checking that circumvents the need for dening translations in the mu-calculus, and we would like to investigate the development of a model-checker generator based on these ideas. It could also be fruitful to look into the provision of generic support for symbolic approaches, such as those oriented around Binary Decision Diagrams [11]; steps in this direction may be found in [6,28]. Finally, it would also be interesting to investigate what alterations would need to be made to our framework in order to support the generic analysis of other kinds of systems, including those that pass values, function in real-time settings, and have probabilistic aspects to their behavior. References [1] R. Alur, T. Henzinger (Eds.), in: Computer Aided Verication (CAV 96), New Brunswick, New Jersey, Lecture Notes in Computer Science, vol. 1102, Springer, Berlin, July 1996. [2] G. Berry, G. Gonthier, The ESTEREL synchronous programming language: design, semantics, implementation, Sci. Comput. Programming 19 (1992) 87 152. [3] G. Bhat, R. Cleaveland, Ecient local model checking for fragments of the modal -calculus, in: T. Margaria, B. Steen (Eds.), Tools and Algorithms for the Construction and Analysis of Systems (TACAS 96), Passau, Germany, Lecture Notes in Computer Science, vol. 1055, Springer, Berlin, March 1996, pp. 107 126. [4] G. Bhat, R. Cleaveland, Ecient model checking via the equational -calculus, in: Eleventh Ann. Symp. on Logic in Computer Science (LICS 96), New Brunswick, New Jersey, IEEE Computer Society Press, Silver Spring, MD, July 1996, pp. 304 312. [5] G. Bhat, R. Cleaveland, G. Luettgen, A practical approach to implementing real-time semantics, Ann. Software Eng. 7 (special issue on real-time software engineering) (1999) 127 155. [6] B. Bloom, A. Dsouza, Generating BDD models for process algebra terms, in: P. Wolper (Ed.), Computer Aided Verication (CAV 95), Liege, Belgium, Lecture Notes in Computer Science, vol. 939, Springer, Berlin, June 1995, pp. 16 30. [7] B. Bloom, S. Istrail, A. Meyer, Bisimulation can t be traced, in: Fifteenth Ann. ACM Symp. on Principles of Programming Languages (POPL 88), San Diego, ACM Press, New York, January 1988, pp. 229 239. [8] B. Bloom, R. Paige, Transformational design and implementation of a new ecient solution to the ready simulation problem, Sci. Comput. Programming 24 (3) (1995) 189 220. [9] G. Brebner, Private communication. [10] G. Bruns, Distributed Systems Analysis with CCS, Prentice-Hall, London, 1997. [11] J.R. Burch, E.M. Clarke, K.L. McMillan, D.L. Dill, L.J. Hwang, Symbolic model checking: 10 20 states and beyond, Inform. Comput. 98 (2) (1992) 142 170. [12] CCITT, CCITT recommendation Z.100: specication and description language SDL, Technical Report, ITU General Secretariat, 1988. [13] U. Celikkan, Semantic preorders in the automated verication of concurrent systems, Ph.D. Thesis, North Carolina State University, Raleigh, 1995. [14] U. Celikkan, R. Cleaveland, Generating diagnostic information for behavioral preorders, Distributed Comput. 9 (1995) 61 75. [15] E.M. Clarke, E.A. Emerson, A.P. Sistla, Automatic verication of nite-state concurrent systems using temporal logic specications, ACM Trans. Programming Languages Systems 8 (2) (1986) 244 263.

R. Cleaveland, S.T. Sims/ Science of Computer Programming 42 (2002) 39 47 47 [16] E.M. Clarke, J.M. Wing, Formal methods: state of the art and future directions, ACM Comput. Surveys 28 (4) (1996) 626 643. [17] R. Cleaveland, G. Luettgen, V. Natarajan, S. Sims, Modeling and verifying distributed systems using priorities: a case study, Software Concepts Tools 17 (2) (1996) 50 62. [18] R. Cleaveland, E. Madelaine, S. Sims, A front-end generator for verication tools, in: E. Brinksma, R. Cleaveland, K.G. Larsen, B. Steen (Eds.), Tools and Algorithms for the Construction and Analysis of Systems (TACAS 95), Aarhus, Denmark, Lecture Notes in Computer Science, vol. 1019, Springer, Berlin, May 1995, pp. 153 173. [19] R. Cleaveland, J. Parrow, B. Steen, The concurrency workbench: a semantics-based tool for the verication of nite-state systems, ACM Trans. Programming Languages Systems 15 (1) (1993) 36 72. [20] R. Cleaveland, S. Sims, The NCSU concurrency workbench, in: Alur, Henzinger (Eds.), Computer Aided Verication (CAV 96), New Brunswick, New Jersey, Lecture Notes in Computer Science, vol. 1102, Springer, Berlin, July 1996, pp. 394 397. [21] R. Cleaveland, S. Smolka, Strategic directions in concurrency research, ACM Comput. Surveys 28 (4) (1996) 607 625. [22] R. Cleaveland, B. Steen, A linear-time model-checking algorithm for the alternation-free modal mu-calculus, Formal Methods System Des. 2 (1993) 121 147. [23] M. Dam, CTL and ECTL as fragments of the modal mu-calculus, Theoret. Comput. Sci. 126 (1) (1994) 77 96. [24] W. Elseaidy, R. Cleaveland, J.W. Baugh Jr., Modeling and verifying active structural control systems, Sci. Comput. Programming 29 (1 2) (1997) 99 122. [25] E.A. Emerson, C. Jutla, A.P. Sistla, On model-checking for fragments of -calculus, in: C. Courcoubetis (Ed.), Computer Aided Verication (CAV 93), Elounda, Greece, Lecture Notes in Computer Science, vol. 697, Springer, Berlin, June=July 1993, pp. 385 396. [26] E.A. Emerson, C.-L. Lei, Ecient model checking in fragments of the propositional mu-calculus, in: Symp. on Logic in Computer Science (LICS 86), Cambridge, MA, IEEE Computer Society Press, Silver spring, MD, June 1986, pp. 267 278. [27] J.-C. Fernandez, An implementation of an ecient algorithm for bisimulation equivalence, Sci. Comput. Programming 13 (1989=1990) 219 236. [28] J.-C. Fernandez, H. Garavel, A. Kerbrat, R. Mateescu, L. Mounier, M. Sighireanu, CADP: a protocol validation and verication toolbox, in: Alur, Henzinger (Eds.), Computer Aided Verication (CAV 96), New Brunswick, New Jersey, Lecture Notes in Computer Science, vol. 1102, Springer, Berlin, July 1996, pp. 437 440. [29] D. Harel, Statecharts: a visual formalism for complex systems, Sci. Comput. Programming 8 (1987) 231 274. [30] C.A.R. Hoare, Communicating Sequential Processes, Prentice-Hall, London, 1985. [31] D. Kozen, Results on the propositional -calculus, Theoret. Comput. Sci. 27 (3) (1983) 333 354. [32] Z. Manna, A. Pnueli, The Temporal Logic of Reactive and Concurrent Systems, Springer, Berlin, 1992. [33] R. Milner, Communication and Concurrency, Prentice-Hall, London, 1989. [34] International Standards Organization, LOTOS a formal description technique based on the temporal ordering of observational behavior, Technical Report ISO=TC 97=SC 21 N 1573, ISO, February 1987. [35] R. Paige, R.E. Tarjan, Three partition renement algorithms, SIAM J. Comput. 16 (6) (1987) 973 989. [36] G.D. Plotkin, A structural approach to operational semantics, Technical Report DAIMI-FN-19, Computer Science Department, Aarhus University, Aarhus, Denmark, 1981. [37] J. Rumbaugh, I. Jacobson, G. Booch, The Unied Modeling Language Reference Manual, Addison-Wesley, Reading, MA, 1998. [38] S. Sims, Customizable tools for verifying concurrent systems, Ph.D. Thesis, North Carolina State University, Raleigh, 1997.