Abstract
Predicate detection is an important problem in testing and debugging distributed programs. Cooper and Marzullo introduced two modalities possibly and definitely as a solution to this problem. Given a predicate p, a computation satisfies possibly:p if p is true for some global state in the computation. A computation satisfies definitely:p if all paths from the initial to the final global state go through some global state that satisfies p. In general, definitely modality is used to detect good conditions such as “a leader is eventually chosen by all processes”, or “a commit point is reached by every process”, whereas possibly modality is used to detect bad conditions such as violation of mutual exclusion. There are several efficient algorithms for possibly modality in the literature [10,14,1,2,30]. However, this is not the case for definitely modality. Cooper and Marzullo’s definitely:p algorithm for arbitrary p has a worst-case space and time complexity exponential in the number of processes. This is due to the state explosion problem. In this paper we present efficient algorithms for detecting definitely:p. In particular, we give a simple algorithm that uses polynomial space. Then, we present an algorithm that can significantly reduce the global state-space. We determine necessary conditions and sufficient conditions under which detecting definitely:p may be efficiently solved. We apply our algorithms to example protocols, achieving a speedup of over 100, compared to partial order reduction based technique of SPIN [13].
supported in part by the NSF Grants ECS-9907213, CCR-9988225, Texas Education Board Grant ARP-320, an Engineering Foundation Fellowship, and an IBM grant.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Charron-Bost, B., Delporte-Gallet, C., Fauconnier, H.: Local and Temporal Predicates in Distributed Systems. ACM Transactions on Programming Languages and Systems 17(1), 157–179 (January 1995)
Chase, C., Garg, V.K.: Detection of Global Predicates: Techniques and their Limitations. Distributed Computing 11(4), 191–201 (1998)
Clarke, E.M., Emerson, E.A.: Design and Synthesis of Synchronization Skeletons using Branching Time Temporal Logic. In: Kozen, D. (ed.) Logic of Programs 1981. LNCS, vol. 131. Springer, Heidelberg (1981)
Cooper, R., Marzullo, K.: Consistent Detection of Global Predicates. In: Proceedings of the ACM/ONR Workshop on Parallel and Distributed Debugging, Santa Cruz, California, pp. 163–173 (1991)
Davey, B.A., Priestley, H.A.: Introduction to Lattices and Order. Cambridge University Press, Cambridge (1990)
Drusinsky, D.: The Temporal Rover and the ATG Rover. In: Havelund, K., Penix, J., Visser, W. (eds.) SPIN 2000. LNCS, vol. 1885, pp. 323–330. Springer, Heidelberg (2000)
Fromentin, E., Raynal, M.: Inevitable global states: A concept to detect unstable properties of distributed computations in an observer independent way. In: Proceedings of the 6th IEEE Symposium on Parallel and Distributed Processing (SPDP), Los Alamitos, CA, pp. 242–248 (1994)
Garg, V.K.: Elements of Distributed Computing. John Wiley & Sons, Chichester (2002)
Garg, V.K., Mittal, N.: On Slicing a Distributed Computation. In: Proceedings of the 21st IEEE International Conference on Distributed Computing Systems (ICDCS), Phoenix, Arizona, April 2001, pp. 322–329 (2001)
Garg, V.K., Waldecker, B.: Detection of Weak Unstable Predicates in Distributed Programs. IEEE Transactions on Parallel and Distributed Systems 5(3), 299–307 (1994)
Hallal, H., Petrenko, A., Ulrich, A., Boroday, S.: Using SDL Tools to Test Properties of Distributed Systems. In: Proc. FATES 2001, Workshop on Formal Approaches to Testing of Software (August 2001)
Havelund, K., Rosu, G.: Monitoring Java Programs with Java PathExplorer. In: Runtime Verification 2001. ENTCS, vol. 55 (2001)
Holzmann, G.J.: The Model Checker Spin. IEEE Trans. on Software Engineering 23(5), 279–295 (1997)
Hurfin, M., Mizuno, M., Raynal, M., Singhal, M.: Efficient Distributed Detection of Conjunctions of Local Predicates in Asynchronous Computations. In: Proceedings of the 8th IEEE Symposium on Parallel and Distributed Processing (SPDP), New Orleans, October 1996, pp. 588–594 (1996)
Hurfin, M., Mizuno, M., Raynal, M., Singhal, M.: Efficient Detection of Conjuntions of Local Predicates. IEEE Transactions on Software Engineering 24(8), 664–677 (1998)
Kamel, M., Leue, S.: Formalization and Validation of the General Inter-ORB Protocol (GIOP) Using Promela and SPIN. Software Tools for Technology Transfer 2(4), 394–409 (2000)
Kim, M., Kannan, S., Lee, I., Sokolsky, O., Viswanathan, M.: Java-MaC: a Run-time Assurance Tool for Java Programs. In: Runtime Verification 2001. ENTCS, vol. 55 (2001)
Lamport, L.: Time, Clocks, and the Ordering of Events in a Distributed System. Communications of the ACM (CACM) 21(7), 558–565 (1978)
Mattern, F.: Virtual Time and Global States of Distributed Systems. In: Parallel and Distributed Algorithms: Proceedings of the Workshop on Distributed Algorithms (WDAG), pp. 215–226. Elsevier Science Publishers B. V., North-Holland (1989)
Mittal, N., Garg, V.K.: Computation Slicing: Techniques and Theory. In: Welch, J.L. (ed.) DISC 2001. LNCS, vol. 2180, pp. 78–92. Springer, Heidelberg (2001)
Preusse, G., Ruskey, F.: Generating Linear Extensions Fast. SIAM J. Comput. 23, 373–386 (1994)
Schwartz, R., Mattern, F.: Detecting Causal Relationships in Distributed Computations: In Search of the Holy Grail. Distributed Computing 7(3), 149–174 (1994)
Sen, A., Garg, V.K.: Partial Order Trace Analzyer (POTA), http://maple.ece.utexas.edu/~sen/POTA.html
Sen, A., Garg, V.K.: Detecting Temporal Logic Predicates on the Happened-Before Model. In: Proc. of the International Parallel and Distributed Processing Symposium (IPDPS), Fort Lauderdale, Florida (2002)
Sen, A., Garg, V.K.: Automatic Generation of Computation Slices for Detecting Temporal Logic Predicates. In: Papatriantafilou, M., Hunel, P. (eds.) OPODIS 2003. LNCS, vol. 3144, pp. 171–183. Springer, Heidelberg (2004)
Sen, A., Garg, V.K.: On Checking Whether a Predicate Definitely Holds. Technical Report TR-PDS-2003-003, PDSL, ECE Dept. Univ. of Texas at Austin (2003)
Sen, A., Garg, V.K.: Partial Order Trace Analyzer (POTA) for Distributed Programs. In: Runtime Verification 2003. ENTCS, vol. 89 (2003)
Tarafdar, A., Garg, V.K.: Predicate Control for Active Debugging of Distributed Programs. In: Proceedings of the 9th IEEE Symposium on Parallel and Distributed Processing (SPDP), Orlando, pp. 763–769 (1998)
Tarafdar, A., Garg, V.K.: Software Fault Tolerance of Concurrent Programs Using Controlled Re-execution. In: Jayanti, P. (ed.) DISC 1999. LNCS, vol. 1693, pp. 210–224. Springer, Heidelberg (1999)
Tomlinson, A.I., Garg, V.K.: Monitoring Functions on Global States of Distributed Programs. Journal of Parallel and Distributed Computing 41(2), 173–189 (1997)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2004 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Sen, A., Garg, V.K. (2004). On Checking Whether a Predicate Definitely Holds. In: Petrenko, A., Ulrich, A. (eds) Formal Approaches to Software Testing. FATES 2003. Lecture Notes in Computer Science, vol 2931. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-24617-6_2
Download citation
DOI: https://doi.org/10.1007/978-3-540-24617-6_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-20894-5
Online ISBN: 978-3-540-24617-6
eBook Packages: Springer Book Archive