Hindawi Publishing Corporation Advances in Software Engineering Volume 2011, Article ID 869182, 13 pages doi:10.1155/2011/869182 Research Article Towards Support for Software Model Checking: Improving the Efficiency of Formal Specifications Salamah Salamah, 1 Ann Q. Gates, 2 Steve Roach, 2 and Matthew Engskow 1 1 Department of Electrical, Computer, Software, and Systems Engineering, Embry-Riddle Aeronautical University (ERAU), Daytona Beach, FL 32114, USA 2 Department of Computer Science, University of Texas at El Paso (UTEP), El Paso, TX 79968, USA Correspondence should be addressed to Salamah Salamah, salamahs@erau.edu Received 10 December 2010; Accepted 3 March 2011 Academic Editor: Phillip Laplante Copyright © 2011 Salamah Salamah et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited. The Property Specification (Prospec) tool uses patterns and scopes defined by Dwyer et al., to generate formal specifications in Linear Temporal Logic (LTL) and other languages. The work presented in this paper provides improved LTL specifications for patterns and scopes over those originally provided by Prospec. This improvement comes in the eciency of the LTL formulas as measured in terms of the number of states in the B¨ uchi automaton generated for the formula. Minimizing the size of the B¨ uchi automata for an LTL specification provides a significant improvement for model checking software systems using such tools as the highly acclaimed Spin model checker. 1. Introduction The process of model checking a system consists of devel- oping a model of the system to be verified and writing specifications in a temporal logic such as Linear Temporal Logic (LTL) [1] or Computational Tree Logic (CTL) [2]. In automata-based model checking, both the model M and the complement of the temporal specification S are represented by a special type of state machine called a B¨ uchi Automaton (BA) [3]. To check the consistency of M with S, the model checker calculates the intersection of M and S where S is the complement of S. If the intersection is empty, then M is consistent with S. In other words, if M and S each represent a set of specifications and if M S =∅, then the system satisfies the specification; otherwise, the system is inconsistent with the specification and a counter-example is returned. The process of writing formal specifications is not easy because of the required mathematical sophistication and depth of knowledge in the specification language. For this reason, tools that simplify the creation of formal specifi- cations in logics such as LTL are of interest to the model checking community and others. In the case of automata- based model checkers such as Spin [4], it is important that these tools generate ecient formulas, since the model checker complements the formulas, translates the result into a BA, and intersects the BA with the automaton of the system. The size of the automaton that results from the intersection of two automata has as its upper bound the product of the number of states in each of the two. One way to avoid the classical problem of state space explosion is to minimize the number of states generated by the negation of the specification. This will reduce the number of states generated by the automaton of the intersection, and as a result, it will reduce the time required to model check a software system. The Property Specification (Prospec) [57] builds on the Property Specification Patterns system (SPS) [8, 9], and it uses property pattern and scope to assist in the specification of formal properties in LTL as well as other languages. Patterns are high-level abstractions that provide descriptions of common properties, and scopes describe the extent of program execution over which the property holds. Prospec also introduces the notion of composite propositions to allow