Synthesizing Monitors for Safety Properties

  • Klaus Havelund
  • Grigore Roşu
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2280)


The problem of testing a linear temporal logic (LTL) formula on a finite execution trace of events, generated by an executing program, occurs naturally in runtime analysis of software. An algorithm which takes a past time LTL formula and generates an efficient dynamic programming algorithm is presented. The generated algorithm tests whether the formula is satisfied by a finite trace of events given as input and runs in linear time, its constant depending on the size of the LTL formula. The memory needed is constant, also depending on the size of the formula. Further optimizations of the algorithm are suggested. Past time operators suitable for writing succinct specifications are introduced and shown definitionally equivalent to the standard operators. This work is part of the PathExplorer project, the objective of which it is to construct a flexible framework for monitoring and analyzing program executions.


  1. 1.
    Manuel Clavel, Steven Eker, Patrick Lincoln, and José Meseguer. Principles of Maude. In José Meseguer, editor, Proceedings, First International Workshop on Rewriting Logic and its Applications. Elsevier Science, 1996. Volume 4, Electronic Notes in Theoretical Computer Science.Google Scholar
  2. 2.
    James Corbett, Matthew B. Dwyer, John Hatcliff, Corina S. Pasareanu, Robby, Shawn Laubach, and Hongjun Zheng. Bandera: Extracting Finite-state Models from Java Source Code. In Proceedings of the 22nd International Conference on Software Engineering, Limerick, Ireland, June 2000. ACM Press.Google Scholar
  3. 3.
    Claudio Demartini, Radu Iosif, and Riccardo Sisto. A Deadlock Detection Tool for Concurrent Java Programs. Software Practice and Experience, 29(7):577–603, July 1999.CrossRefGoogle Scholar
  4. 4.
    Doron Drusinsky. The Temporal Rover and the ATG Rover. In Klaus Havelund, John Penix, and Willem Visser, editors, SPIN Model Checking and Software Verification, volume 1885 of Lecture Notes in Computer Science, pages 323–330. Springer, 2000.CrossRefGoogle Scholar
  5. 5.
    Klaus Havelund, Scott Johnson, and Grigore Rosu. Specification and Error Pattern Based Program Monitoring. In European Space Agency Workshop on On-Board Autonomy, Noordwijk, The Netherlands, 2001.Google Scholar
  6. 6.
    Klaus Havelund, Michael Lowry, and John Penix. Formal Analysis of a Space Craft Controller using SPIN. IEEE Transactions on Software Engineering, 27(8):749–765, August 2001.CrossRefGoogle Scholar
  7. 7.
    Klaus Havelund and Thomas Pressburger. Model Checking Java Programs using Java PathFinder. International Journal on Software Tools for Technology Transfer, 2(4):366–381, April 2000. Special issue of STTT containing selected submissions to the 4th SPIN workshop, Paris, France, 1998.zbMATHCrossRefGoogle Scholar
  8. 8.
    Klaus Havelund and Grigore Rosu. Java PathExplorer-A Runtime Verification Tool. In The 6th International Symposium on Arti.cial Intelligence, Robotics and Automation in Space: A New Space Odyssey, Montreal, Canada, June 18–21, 2001.Google Scholar
  9. 9.
    Klaus Havelund and Grigore Rosu. Monitoring Java Programs with Java PathExplorer. In Klaus Havelund and Grigore Rosu, editors, Proceedings of Runtime Verification (RV’01), volume 55 of Electronic Notes in Theoretical Computer Science. Elsevier Science, 2001.Google Scholar
  10. 10.
    Klaus Havelund and Grigore Rosu. Monitoring Programs using Rewriting. In Proceedings, International Conference on Automated Software Engineering (ASE’01), pages 135–143. Institute of Electrical and Electronics Engineers, 2001. San Diego, California.Google Scholar
  11. 11.
    Klaus Havelund and Natarajan Shankar. Experiments in Theorem Proving and Model Checking for Protocol Veri.cation. In Marie Claude Gaudel and Jim Woodcock, editors, FME’96: Industrial Benefit and Advances in Formal Methods, volume 1051 of Lecture Notes in Computer Science, pages 662–681. Springer, 1996.Google Scholar
  12. 12.
    Gerard J. Holzmann and Margaret H. Smith. A Practical Method for Verifying Event-Driven Software. In Proceedings of ICSE’99, International Conference on Software Engineering, Los Angeles, California, USA, May 1999. IEEE/ACM.Google Scholar
  13. 13.
  14. 14.
  15. 15.
    Insup Lee, Sampath Kannan, Moonjoo Kim, Oleg Sokolsky, and Mahesh Viswanathan. Runtime Assurance Based on Formal Specifications. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, 1999.Google Scholar
  16. 16.
    Zohar Manna and Amir Pnueli. The Temporal Logic of Reactive and Concurrent Systems. Springer, New York, 1992.Google Scholar
  17. 17.
    David Y.W. Park, Ulrich Stern, and David L. Dill. Java Model Checking. In Proceedings of the First International Workshop on Automated Program Analysis, Testing and Verification, Limerick, Ireland, June 2000.Google Scholar
  18. 18.
    Amir Pnueli. The Temporal Logic of Programs. In Proceedings of the 18th IEEE Symposium on Foundations of Computer Science, pages 46–77, 1977.Google Scholar
  19. 19.
    Grigore Rosu and Klaus Havelund. Synthesizing Dynamic Programming Algorithms from Linear Temporal Logic Formulae. Technical Report TR 01-08, NASA—RIACS, May 2001.Google Scholar
  20. 20.
    Scott D. Stoller. Model-Checking Multi-threaded Distributed Java Programs. In Klaus Havelund, John Penix, and Willem Visser, editors, SPIN Model Checking and Software Verification, volume 1885 of Lecture Notes in Computer Science, pages 224–244. Springer, 2000.CrossRefGoogle Scholar
  21. 21.
    Willem Visser, Klaus Havelund, Guillaume Brat, and SeungJoon Park. Model Checking Programs. In Proceedings of ASE’2000: The 15th IEEE International Conference on Automated Software Engineering. IEEE CS Press, September 2000.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2002

Authors and Affiliations

  • Klaus Havelund
    • 1
  • Grigore Roşu
    • 2
  1. 1.Kestrel TechnologyCaliforniaUSA
  2. 2.Automated Software Engineering GroupResearch Institute for Advanced Computer Science NASA Ames Research CenterCaliforniaUSA

Personalised recommendations