Klaus Havelund

dblp:84/3029 · DBLP profile ↗
← Back
97ranked-venue papers
42as first author
18since 2021 · last 2025
0000-0001-7079-0472ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 75 · 33 first-author · 15 since 2021Theory of computation · 19 · 8 first-author · 3 since 2021Systems, architecture and hardware · 3Applied, interdisciplinary, general and emerging computing · 3 · 2 first-authorArtificial intelligence and machine learning · 2
YearPublicationVenuePosition
2025 Fuzz Testing with Temporal Constraints
Klaus Havelund, Tracy Clark, Vivek Reddy
ICTAC1
2025 The Power of Reframing: Using LLMs in Synthesizing RV Monitors
Itay Cohen 0001, Klaus Havelund, Doron A. Peled, Yoav Goldberg
RV2
2025 DSLs for Runtime Verification
Klaus Havelund, Moran Omer, Doron A. Peled
RV1
2025 Does Every Computer Scientist Need to Know Formal Methods?
abstract
We focus on the integration of Formal Methods as mandatory theme in any Computer Science University curriculum. In particular, when considering the ACM Curriculum for Computer Science, the inclusion of Formal Methods as a mandatory Knowledge Area needs arguing for why and how does every computer science graduate benefit from such knowledge. We do not agree with the sentence “While there is a belief that formal methods are important and they are growing in importance, we cannot state that every computer science graduate will need to use formal methods in their career.” We argue that formal methods are and have to be an integral part of every computer science curriculum. Just as not all graduates will need to know how to work with databases either, it is still important for students to have a basic understanding of how data is stored and managed efficiently. The same way, students have to understand why and how formal methods work, what their formal background is, and how they are justified. No engineer should be ignorant of the foundations of their subject and the formal methods based on these. In this article, we aim at highlighting why every computer scientist needs to be familiar with formal methods. We argue that education in formal methods plays a key role by shaping students' programming mindset, fostering an appreciation for underlying principles, and encouraging the practice of thoughtful program design and justification, rather than simply writing programs without reflection and deeper understanding. Since integrating formal methods into the computer science curriculum is not a straightforward process, we explore the additional question: what are the tradeoffs between one dedicated knowledge area of formal methods in a computer science curriculum versus having formal methods scattered across all knowledge areas? Solving problems while designing software and software-intensive systems demands an understanding of what is required, followed by a specification and formalizing a solution in a programming language. How to do this systematically and correctly on solid grounds is exactly supported by formal methods.
Manfred Broy, Achim D. Brucker, Alessandro Fantechi, Mario Gleirscher, Klaus Havelund, Markus Alexander Kuppe, Alexandra Mendes, André Platzer, Jan Oliver Ringert, Allison Sullivan
Formal Aspects Comput.5
2024 TP-DejaVu: Combining Operational and Declarative Runtime Verification
Klaus Havelund, Panagiotis Katsaros, Moran Omer, Doron A. Peled, Anastasios Temperekidis
VMCAI (2)1
2024 Programming event monitors
Klaus Havelund, Gerard J. Holzmann
Int. J. Softw. Tools Technol. Transf.1
2023 Monitorability for Runtime Verification
Klaus Havelund, Doron A. Peled
RV1
2023 Concurrent runtime verification of data rich events
Nastaran Shafiei, Klaus Havelund, Peter C. Mehlitz
Int. J. Softw. Tools Technol. Transf.2
2022 Runtime Verification as Documentation
Dennis Dams, Klaus Havelund, Sean Kauffman
ISoLA (2)2
2022 Specification-Based Monitoring in C++
Klaus Havelund
ISoLA (1)1
2022 Discussing the Future Role of Documentation in the Context of Modern Software Engineering (ISoLA 2022 Track Introduction)
Klaus Havelund, Tim Tegeler, Steven Smyth, Bernhard Steffen
ISoLA (2)1
2022 A Python Library for Trace Analysis
Dennis Dams, Klaus Havelund, Sean Kauffman
RV2
2022 On monitoring linear temporal properties
Klaus Havelund, Doron A. Peled
Formal Methods Syst. Des.1
2021 Integrated Modeling and Development of Component-Based Embedded Software in Scala
Klaus Havelund, Robert Bocchino
ISoLA1
2021 Programming - What is Next?
Klaus Havelund, Bernhard Steffen
ISoLA1
2021 Monitoring First-Order Interval Logic
Klaus Havelund, Moran Omer, Doron A. Peled
SEFM1
2021 An extension of first-order LTL with rules with application to runtime verification
Klaus Havelund, Doron A. Peled
Int. J. Softw. Tools Technol. Transf.1
2021 What can we monitor over unreliable channels?
Sean Kauffman, Klaus Havelund, Sebastian Fischmeister
Int. J. Softw. Tools Technol. Transf.2
2020 First-Order Timed Runtime Verification Using BDDs
Klaus Havelund, Doron A. Peled
ATVA1
2020 A Flight Rule Checker for the LADEE Lunar Spacecraft
Elif Kürklü, Klaus Havelund
ICTAC2
2020 BDDs for Representing Data in Runtime Verification
Klaus Havelund, Doron A. Peled
RV1
2020 Actor-Based Runtime Verification with MESA
Nastaran Shafiei, Klaus Havelund, Peter C. Mehlitz
RV2
2020 First-order temporal logic monitoring with BDDs
Klaus Havelund, Doron A. Peled, Dogan Ulus
Formal Methods Syst. Des.1
2019 An Extension of LTL with Rules and Its Application to Runtime Verification
Klaus Havelund, Doron A. Peled
RV1
2019 Monitorability over Unreliable Channels
Sean Kauffman, Klaus Havelund, Sebastian Fischmeister
RV2
2019 First international Competition on Runtime Verification: rules, benchmarks, tools, and final results of CRV 2014
abstract
The first international Competition on Runtime Verification (CRV) was held in September 2014, in Toronto, Canada, as a satellite event of the 14th international conference on Runtime Verification (RV’14). The event was organized in three tracks: (1) offline monitoring, (2) online monitoring of C programs, and (3) online monitoring of Java programs. In this paper, we report on the phases and rules, a description of the participating teams and their submitted benchmark, the (full) results, as well as the lessons learned from the competition.
Ezio Bartocci, Yliès Falcone, Borzoo Bonakdarpour, Christian Colombo 0001, Normann Decker, Klaus Havelund, Yogi Joshi, Felix Klaedtke, Reed Milewicz, Giles Reger, Grigore Rosu, Julien Signoles, Daniel Thoma, Eugen Zalinescu
Int. J. Softw. Tools Technol. Transf.6
2019 Introduction to Selected Papers from SPIN 2017
Hakan Erdogmus, Klaus Havelund
Int. J. Softw. Tools Technol. Transf.2
2018 Towards a Unified View of Modeling and Programming (ISoLA 2018 Track Introduction)
Manfred Broy, Klaus Havelund, Rahul Kumar 0001, Bernhard Steffen
ISoLA (1)2
2018 Modeling with Scala
Klaus Havelund, Rajeev Joshi
ISoLA (1)1
2018 BDDs on the Run
Klaus Havelund, Doron A. Peled
ISoLA (4)1
2018 Runtime Verification: From Propositional to First-Order Temporal Logic
Klaus Havelund, Doron A. Peled
RV1
2018 Runtime Verification - 17 Years Later
Klaus Havelund, Grigore Rosu
RV1
2018 Efficient Runtime Verification of First-Order Temporal Properties
Klaus Havelund, Doron A. Peled
SPIN1
2018 Inferring event stream abstractions
Sean Kauffman, Klaus Havelund, Rajeev Joshi, Sebastian Fischmeister
Formal Methods Syst. Des.2
2017 First order temporal logic monitoring with BDDs
abstract
Runtime verification is aimed at analyzing execution traces stemming from a running program or system. The traditional purpose is to detect the lack of conformance with respect to a formal specification. Numerous efforts in the field have focused on monitoring so-called parametric specifications, where events carry data, and formulas can refer to such. Since a monitor for such specifications has to store observed data, the challenge is to have an efficient representation and manipulation of Boolean operators, quantification, and lookup of data. The fundamental problem is that the actual values of the data are not necessarily bounded or provided in advance. In this work we explore the use of Binary Decision Diagrams (BDDs) for representing observed data. Our experiments show a substantial improvement in performance compared to related work.
Klaus Havelund, Doron A. Peled, Dogan Ulus
FMCAD1
2016 Towards a Unified View of Modeling and Programming
Manfred Broy, Klaus Havelund, Rahul Kumar 0001
ISoLA (2)2
2016 Towards a Unified View of Modeling and Programming (Track Summary)
Manfred Broy, Klaus Havelund, Rahul Kumar 0001, Bernhard Steffen
ISoLA (2)2
2016 Static and Runtime Verification, Competitors or Friends? (Track Summary)
Dilian Gurov, Klaus Havelund, Marieke Huisman, Rosemary Monahan
ISoLA (1)2
2016 Towards a Logic for Inferring Properties of Event Streams
Sean Kauffman, Rajeev Joshi, Klaus Havelund
ISoLA (2)3
2016 What Is a Trace? A Runtime Verification Perspective
Giles Reger, Klaus Havelund
ISoLA (2)2
2016 K: A Wide Spectrum Language for Modeling, Programming and Analysis
abstract
The formal methods community has over the years proposed various formally founded specification languages based on predicate logic and set theory, typically with textual notations. At the same time the model-based engineering community has proposed often less formally founded languages such as UML and SysML, typically with graphical notations. Although the graphical notations have become highly popular in industry, we argue that textual notations can be attractive in many situations. We report on an effort to provide a textual notation for SysML, realized in a language named K. K supports classes, multiple inheritance, predicate logic and set theory. K contains programming constructs, and can thus be considered as a wide-spectrum modeling and programming language. We further explain the translation of a subset of this language to the input language of the SMT-LIB standard, and the application of Z3 for analysis of the generated SMT-LIB formulas. The entire effort is part of a larger effort to develop a general purpose SysML development framework for designing systems, in support of NASA's proposed 2022 mission to Jupiter's moon Europa.
Klaus Havelund, Rahul Kumar 0001, Chris Delp, Bradley Clement
MODELSWARD1
2016 nfer - A Notation and System for Inferring Event Stream Abstractions
Sean Kauffman, Klaus Havelund, Rajeev Joshi
RV2
2016 Some recent advances in automated analysis
Erika Ábrahám, Klaus Havelund
Int. J. Softw. Tools Technol. Transf.2
2015 Domain-Specific Languages with Scala
Cyrille Artho, Klaus Havelund, Rahul Kumar 0001, Yoriyuki Yamagata
ICFEM2
2015 Rule-based runtime verification revisited
Klaus Havelund
Int. J. Softw. Tools Technol. Transf.1
2014 40 Years of Formal Methods - Some Obstacles and Some Possibilities?
Dines Bjørner, Klaus Havelund
FM2
2014 Comprehension of Spacecraft Telemetry Using Hierarchical Specifications of Behavior
Klaus Havelund, Rajeev Joshi
ICFEM1
2014 Monitoring with Data Automata
Klaus Havelund
ISoLA (2)1
2014 Data Automata in Scala
abstract
The field of runtime verification has during the last decade seen a multitude of systems for monitoring event sequences (traces) emitted by a running system. The objective is to ensure correctness of a system by checking its execution traces against formal specifications representing requirements. A special challenge is data parameterized events, where monitors have to keep track of the combination of control states as well as data constraints, relating events and the data they carry across time points. This poses a challenge wrt. efficiency of monitors, as well as expressiveness of logics. Data automata is a form of automata where states are parameterized with data, supporting monitoring of data parameterized events. We describe the full details of a very simple API in the Scala programming language, an internal DSL (Domain-Specific Language), implementing data automata. The small implementation suggests a design pattern. Data automata allow transition conditions to refer to other states than the source state, and allow target states of transitions to be inlined, offering a temporal logic flavored notation. An embedding of a logic in a high-level language like Scala in addition allows monitors to be programmed using all of Scala's language constructs, offering the full flexibility of a programming language. The framework is demonstrated on an XML processing scenario previously addressed in related work.
Klaus Havelund
TASE1
2014 Verification and validation meet planning and scheduling
Saddek Bensalem, Klaus Havelund, Andrea Orlandini
Int. J. Softw. Tools Technol. Transf.2
2013 A Scala DSL for Rete-Based Runtime Verification
Klaus Havelund
RV1
2012 Quantified Event Automata: Towards Expressive and Efficient Runtime Monitors
Howard Barringer, Yliès Falcone, Klaus Havelund, Giles Reger, David E. Rydeheard
FM3
2012 What Does AI Have to Do with RV? - (Extended Abstract)
Klaus Havelund
ISoLA (1)1
2012 Requirements-Driven Log Analysis (Extended Abstract)
Klaus Havelund
ICTSS1
2012 InterAspect: aspect-oriented instrumentation with GCC
Justin Seyster, Ketan Dixit, Xiaowan Huang, Radu Grosu, Klaus Havelund, Scott A. Smolka, Scott D. Stoller, Erez Zadok
Formal Methods Syst. Des.5
2012 Introduction to the special section on runtime verification
Oleg Sokolsky, Klaus Havelund, Insup Lee 0001
Int. J. Softw. Tools Technol. Transf.2
2011 Software certification: coding, code, and coders
abstract
We describe a certification approach for software development that has been adopted at our organization. JPL develops robotic spacecraft for the exploration of the solar system. The flight software that controls these spacecraft is considered to be mission critical. We argue that the goal of a software certification process cannot be the development of "perfect" software, i.e., software that can be formally proven to be correct under all imaginable and unimaginable circumstances. More realistically, the goal is to guarantee a software development process that is conducted by knowledgeable engineers, who follow generally accepted procedures to control known risks, while meeting agreed upon standards of workmanship. We target three specific issues that must be addressed in such a certification procedure: the coding process, the code that is developed, and the skills of the coders. The coding process is driven by standards. The code is mechanically checked against the standards with the help of state-of-the-art static source code analyzers. The coders, finally, are certified in on-site training courses that include formal exams.
Klaus Havelund, Gerard J. Holzmann
EMSOFT1
2011 TraceContract: A Scala DSL for Trace Analysis
Howard Barringer, Klaus Havelund
FM2
2011 Internal versus External DSLs for Trace Analysis - (Extended Abstract)
Howard Barringer, Klaus Havelund
RV2
2011 Runtime Verification with State Estimation
Scott D. Stoller, Ezio Bartocci, Justin Seyster, Radu Grosu, Klaus Havelund, Scott A. Smolka, Erez Zadok
RV5
2010 From scripts to specifications: the evolution of a flight software testing effort
abstract
This paper describes the evolution of a software testing effort during a critical period for the flagship Mars Science Laboratory rover project at the Jet Propulsion Laboratory. Formal specification for post-run analysis of log files, using a domain-specific language, LogScope, replaced scripted real-time analysis. Log analysis addresses the key problems of on-the-fly approaches and cleanly separates specification and execution. Mining the test repository suggested the inadequacy of the scripted approach, and encouraged a partly engineer-driven development. LogScope development should hold insights for others facing the tight deadlines and reactionary nature of testing for critical projects. LogScope received a JPL Mariner Award for "improving productivity and quality of the MSL Flight Software" and has been discussed as an approach for other flight missions. We note LogScope features that most contributed to ease of adoption and effectiveness. LogScope is general and can be applied to any software producing logs.
Alex Groce, Klaus Havelund, Margaret H. Smith
ICSE (2)2
2010 Aspect-Oriented Instrumentation with GCC
Justin Seyster, Ketan Dixit, Xiaowan Huang, Radu Grosu, Klaus Havelund, Scott A. Smolka, Scott D. Stoller, Erez Zadok
RV5
2010 Rule Systems for Run-time Monitoring: from Eagle to RuleR
abstract
In Barringer et al. (2004,Vol. 2937, LNCS), Eagle was introduced as a general purpose rule-based temporal logic for specifying run-time monitors. A novel interpretative trace-checking scheme via stepwise transformation of an Eagle monitoring formula was defined and implemented. However, even though Eagle presents an elegant formalism for the expression of complex trace properties, Eagle's interpretation scheme is complex and appears difficult to implement efficiently. In this article, we introduce RuleR, a primitive conditional rule-based system, which has a simple and easily implemented algorithm for effective run-time checking, and into which one can compile a wide range of temporal logics and other specification formalisms used for run-time verification. As a formal demonstration, we provide a translation scheme for linear-time propositional temporal logic with a proof of translation correctness. We then introduce a parameterized version of RuleR, in which rule names may have rule-expression or data parameters, which then coincides with the same expressivity as Eagle with data arguments. RuleR with just rule-expression parameters extend the expressiveness of RuleR strictly beyond the class of context-free languages. For the language classes expressible in propositional RuleR, the addition of rule-expression and data parameters enables more compact translations. Finally, we outline a few simple syntactic extensions of ‘core’ RuleR that can lead to further conciseness of specification but still enabling easy and efficient implementation.
Howard Barringer, David E. Rydeheard, Klaus Havelund
J. Log. Comput.3
2010 Aspect-Oriented Race Detection in Java
abstract
In the past, researchers have developed specialized programs to aid programmers in detecting concurrent programming errors such as deadlocks, livelocks, starvation, and data races. In this work, we propose a language extension to the aspect-oriented programming language AspectJ, in the form of three new pointcuts, lock(), unlock(), and maybeShared(). These pointcuts allow programmers to monitor program events where locks are granted or handed back, and where values are accessed that may be shared among multiple Java threads. We decide thread locality using a static thread-local-objects analysis developed by others. Using the three new primitive pointcuts, researchers can directly implement efficient monitoring algorithms to detect concurrent-programming errors online. As an example, we describe a new algorithm which we call RACER, an adaption of the well-known ERASER algorithm to the memory model of Java. We implemented the new pointcuts as an extension to the AspectBench Compiler, implemented the RACER algorithm using this language extension, and then applied the algorithm to the NASA K9 Rover Executive and two smaller programs. Our experiments demonstrate that our implementation is effective in finding subtle data races. In the Rover Executive, RACER finds 12 data races, with no false warnings. Only one of these races was previously known.
Eric Bodden, Klaus Havelund
IEEE Trans. Software Eng.2
2009 Rule Systems for Runtime Verification: A Short Tutorial
Howard Barringer, Klaus Havelund, David E. Rydeheard, Alex Groce
RV2
2008 Racer: effective race detection using aspectj
abstract
Programming errors occur frequently in large software systems, and even more so if these systems are concurrent. In the past researchers have developed specialized programs to aid programmers detecting concurrent programming errors such as deadlocks, livelocks, starvation and data races.
Eric Bodden, Klaus Havelund
ISSTA2
2008 Requirements Capture with RCAT
abstract
NASA spends millions designing and building spacecraft for its missions. The dependence on software is growing as spacecraft become more complex. With the increasing dependence on software comes the risk that bugs can lead to the loss of a mission. At NASApsilas Jet Propulsion Laboratory new tools are being developed to address this problem. Logic model checking and runtime verification can increase the confidence in a design or an implementation. A barrier to the application of such property-based checks is the difficulty in mastering the requirements notations that are currently available. For these techniques to be easily usable, a simple but expressive requirement specification method is essential. This paper describes a requirements capture notation and supporting tool that graphically captures formal requirements and converts them into automata that can be used in model checking and for runtime verification.
Margaret H. Smith, Klaus Havelund
RE2
2007 Visualization of Concurrent Program Executions
abstract
Various program analysis techniques are efficient at discovering failures and properties. However, it is often difficult to evaluate results, such as program traces. This calls for abstraction and visualization tools. We propose an approach based on UML sequence diagrams, addressing shortcomings of such diagrams for concurrency. The resulting visualization is expressive and provides all the necessary information at a glance.
Cyrille Artho, Klaus Havelund, Shinichi Honiden
COMPSAC (2)2
2007 Rule Systems for Run-Time Monitoring: From Eagleto RuleR
Howard Barringer, David E. Rydeheard, Klaus Havelund
RV3
2007 Towards a framework and a benchmark for testing tools for multi-threaded programs
abstract
Abstract Multi‐threaded code is becoming very common, both on the server side, and very recently for personal computers as well. Consequently, looking for intermittent bugs is a problem that is receiving more and more attention. As there is no silver bullet, research focuses on a variety of partial solutions. We outline a road map for combining the research within the different disciplines of testing multi‐threaded programs and for evaluating the quality of this research. We have three main goals. First, to create a benchmark that can be used to evaluate different solutions. Second, to create a framework with open application programming interfaces that enables the combination of techniques in the multi‐threading domain. Third, to create a focus for the research in this area around which a community of people who try to solve similar problems with different techniques can congregate. We have started creating such a benchmark and describe the lessons learned in the process. The framework will enable technology developers, for example, developers of race detection algorithms, to concentrate on their components and use other ready made components (e.g. an instrumentor) to create a testing solution. Copyright © 2006 John Wiley & Sons, Ltd.
Yaniv Eytani, Klaus Havelund, Scott D. Stoller, Shmuel Ur
Concurr. Comput. Pract. Exp.2
2005 Rewriting-Based Techniques for Runtime Verification
Grigore Rosu, Klaus Havelund
Autom. Softw. Eng.2
2005 Foreword
Klaus Havelund, Grigore Rosu
Formal Methods Syst. Des.1
2005 Combining test case generation and runtime verification
Cyrille Artho, Howard Barringer, Allen Goldberg, Klaus Havelund, Sarfraz Khurshid, Michael R. Lowry, Corina Pasareanu, Grigore Rosu, Koushik Sen, Willem Visser, Richard Washington
Theor. Comput. Sci.4
2004 Using Block-Local Atomicity to Detect Stale-Value Concurrency Errors
Cyrille Artho, Klaus Havelund, Armin Biere
ATVA2
2004 Program Monitoring with LTL in EAGLE
abstract
Summary form only given. We briefly present a rule-based framework, called EAGLE, shown to be capable of defining and implementing finite trace monitoring logics, including future and past time temporal logic, extended regular expressions, real-time and metric temporal logics (MTL), interval logics, forms of quantified temporal logics, and so on. In this paper we focus on a linear temporal logic (LTL) specialisation of EAGLE. For an initial formula of size m, we establish upper bounds of O(m/sup 2/2/sup m/logm) and O(m/sup 4/2/sup 2m/log/sup 2/m) for the space and time complexity, respectively, of single step evaluation over an input trace. EAGLE has been successfully used, in both LTL and metric LTL forms, to test a real-time controller of an experimental NASA planetary rover.
Howard Barringer, Allen Goldberg, Klaus Havelund, Koushik Sen
IPDPS3
2004 Applying Jlint to Space Exploration Software
Cyrille Artho, Klaus Havelund
VMCAI2
2004 Rule-Based Runtime Verification
Howard Barringer, Allen Goldberg, Klaus Havelund, Koushik Sen
VMCAI3
2004 Experimental Evaluation of Verification and Validation Tools on Martian Rover Software
Guillaume Brat, Doron Drusinsky, Dimitra Giannakopoulou, Allen Goldberg, Klaus Havelund, Michael R. Lowry, Corina Pasareanu, Arnaud Venet, Willem Visser, Richard Washington
Formal Methods Syst. Des.5
2004 Foreword - Selected Papers from the First International Workshop on Runtime Verification held in Paris, July 2001 (RV'01)
Klaus Havelund, Grigore Rosu
Formal Methods Syst. Des.1
2004 An Overview of the Runtime Verification Tool Java PathExplorer
Klaus Havelund, Grigore Rosu
Formal Methods Syst. Des.1
2004 Efficient monitoring of safety properties
Klaus Havelund, Grigore Rosu
Int. J. Softw. Tools Technol. Transf.1
2003 Model Checking Programs
Willem Visser, Klaus Havelund, Guillaume Brat, Seungjoon Park, Flavio Lerda
Autom. Softw. Eng.2
2003 High-level data races
abstract
Abstract Data races are a common problem in concurrent and multi‐threaded programming. Experience shows that the classical notion of a data race is not powerful enough to capture certain types of inconsistencies occurring in practice. This paper investigates data races on a higher abstraction layer. This enables detection of inconsistent uses of shared variables, even if no classical race condition occurs. For example, a data structure representing a coordinate pair may have to be treated atomically. By lifting the meaning of a data race to a higher level, such problems can now be covered. The paper defines the concepts ‘view’ and ‘view consistency’ to give a notation for this novel kind of property. It describes what kinds of errors can be detected with this new definition, and where its limitations are. It also gives a formal guideline for using data structures in a multi‐threaded environment. © US Government copyright
Cyrille Artho, Klaus Havelund, Armin Biere
Softw. Test. Verification Reliab.2
2002 Synthesizing Monitors for Safety Properties
Klaus Havelund, Grigore Rosu
TACAS1
2002 Program model checking as a new trend
Klaus Havelund, Willem Visser
Int. J. Softw. Tools Technol. Transf.1
2001 Automata-Based Verification of Temporal Properties on Running Programs
abstract
This paper presents an approach to checking a running program against Linear Temporal Logic (LTL) specifications. LTL is a widely used logic for expressing properties of programs viewed as sets of executions. Our approach consists of translating LTL formulae to finite-state automata, which are used as observers of the program behavior. The translation algorithm we propose modifies standard LTL to Buchi automata conversion techniques to generate automata that check finite program traces. The algorithm has been implemented in a tool, which has been integrated with the generic JPaX framework for runtime analysis of Java programs.
Dimitra Giannakopoulou, Klaus Havelund
ASE2
2001 Monitoring Programs Using Rewriting
abstract
We present a rewriting algorithm for efficiently testing future time Linear Temporal Logic (LTL) formulae on finite execution traces. The standard models of LTL are infinite traces, reflecting the behavior of reactive and concurrent systems which conceptually may be continuously alive. In most past applications of LTL, theorem provers and model checkers have been used to formally prove that down-scaled models satisfy such LTL specifications. Our goal is instead to use LTL for up-scaled testing of real software applications, corresponding to analyzing the conformance of finite traces against LTL formulae. We first describe what it means for a finite trace to satisfy an LTL formula and then suggest an optimized algorithm based on transforming LTL formulae. We use the Maude rewriting logic, which turns out to be a good notation and being supported by an efficient rewriting engine for performing these experiments. The work constitutes part of the Java PathExplorer (JPAX) project, the purpose of which is to develop a flexible tool for monitoring Java program executions.
Klaus Havelund, Grigore Rosu
ASE1
2001 Mapping Temporal Planning Constraints into Timed Automata
abstract
Planning and model checking are similar in concept. They both deal with reaching a goal state from an initial state by applying specified rules that allow for the transition from one state to another. Exploring the relationship between them is an interesting new research area. We are interested in planning frameworks that combine both planning and scheduling. For that, we focus our attention on real time model checking. As a first step, we developed a mapping from planning domain models into timed automata. Since timed automata are the representation structure of real-time model checkers, we are able to exploit what model checking has to offer for planning domains. We present the mapping algorithm, which involves translating temporal specifications into timed automata, and list some of the planning domain questions someone can answer by using model checking.
Lina Khatib, Nicola Muscettola, Klaus Havelund
TIME3
2001 Formal Analysis of a Space-Craft Controller Using SPIN
abstract
The paper documents an application of the finite state model checker SPIN to formally analyze a multithreaded plan execution module. The plan execution module is one component of NASA's New Millennium Remote Agent, an artificial intelligence-based spacecraft control system architecture which launched in October of 1998 as part of the DEEP SPACE 1 mission. The bottom layer of the plan execution module architecture is a domain specific language, named ESL (Executive Support Language), implemented as an extension to multithreaded COMMON LISP. ESL supports the construction of reactive control mechanisms for autonomous robots and spacecraft. For the case study, we translated the ESL services for managing interacting parallel goal-and-event driven processes into the PROMELA input language of SPIN. A total of five previously undiscovered concurrency errors were identified within the implementation of ESL. According to the Remote Agent programming team, the effort has had a major impact, locating errors that would not have been located otherwise and, in one case, identifying a major design flaw. In fact, in a different part of the system, a concurrency bug identical to one discovered by this study escaped testing and caused a deadlock during an in-flight experiment, 96 million kilometers from Earth. The work additionally motivated the introduction of procedural abstraction in terms of inline procedures into SPIN.
Klaus Havelund, Michael R. Lowry, John Penix
IEEE Trans. Software Eng.1
2000 Model Checking Programs
abstract
The majority of the work carried out in the formal methods community throughout the last three decades has (for good reasons) been devoted to special languages designed to make it easier to experiment with mechanized formal methods such as theorem provers and model checkers. In this paper, we give arguments for why we believe it is time for the formal methods community to shift some of its attention towards the analysis of programs written in modern programming languages. In keeping with this philosophy, we have developed a verification and testing environment for Java, called Java PathFinder (JPF), which integrates model checking, program analysis and testing. Part of this work has consisted of building a new Java Virtual Machine that interprets Java bytecode. JPF uses state compression to handle large states, and partial order reduction, slicing, abstraction and run-time analysis techniques to reduce the state space. JPF has been applied to a real-time avionics operating system developed at Honeywell, illustrating an intricate error, and to a model of a spacecraft controller, illustrating the combination of abstraction, run-time analysis and slicing with model checking.
Willem Visser, Klaus Havelund, Guillaume Brat, Seungjoon Park
ASE2
2000 Model Checking JAVA Programs using JAVA PathFinder
Klaus Havelund, Thomas Pressburger
Int. J. Softw. Tools Technol. Transf.1
1997 Verification and Validation of AI Systems that Control Deep-Space Spacecraft
Michael R. Lowry, Klaus Havelund, John Penix
ISMIS2
1997 Declarative Specification of Software Architectures
abstract
Scaling formal methods to large, complex systems requires methods of modeling systems at high levels of abstraction. In this paper, we describe such a method for specifying system requirements at the software architecture level. An architecture represents a way breaking down a system into a set of interconnected components. We use architecture theories to specify the behavior of a system in terms of the behavior of its components via a collection of axioms. The axioms describe the effects and limits of component variation and the assumptions a component can make about the environment provided by the architecture. As a result of the method the verification of the basic architecture can be separated from the verification of the individual component instantiations. We present an example of using architecture theories to model the task coordination architecture of a multi-threaded plan execution system.
John Penix, Perry Alexander, Klaus Havelund
ASE3
1997 Formal modeling and analysis of an audio/video protocol: an industrial case study using UPPAAL
abstract
A formal and automatic verification of a real-life protocol is presented. The protocol, about 2800 lines of assembler code, has been used in products from the audio/video company Bang & Olufsen throughout more than a decade, and its purpose is to control the transmission of messages between audio/video components over a single bus. Such communications may collide, and one essential purpose of the protocol is to detect such collisions. The functioning is highly dependent on real-time considerations. Though the protocol was known to be faulty in that messages were lost occasionally, the protocol was too complicated in order for Bang & Olufsen to locate the bug using normal testing. However using the real-time verification tool UPPAAL, an error trace was automatically generated, which caused the detection of "the error" in the implementation. The error was corrected and the correction was automatically proven correct, again using UPPAAL. A future, and more automated, version of the protocol, where this error is fatal, will incorporate the correction. Hence, this work is an elegant demonstration of how model checking has had an impact on practical software development. The effort of modeling this protocol has in addition generated a number of suggestions for enriching the UPPAAL language. Hence, it's also an excellent example of the reverse impact.
Klaus Havelund, Arne Skou, Kim G. Larsen, Kristian Lund
RTSS1
1993 The Fork Calculus
Klaus Havelund, Kim G. Larsen
ICALP1
1992 Formal, model-oriented software development methods: From VDM to ProCoS & from RAISE to LaCoS
Dines Bjørner, Anne E. Haxthausen, Klaus Havelund
Future Gener. Comput. Syst.3
1989 The RAISE Language, Method and Tools
abstract
Abstract This paper presents the RAISE 1 software development method, its associated specification language, and the tools supporting it. The RAISE method enables the stepwise development of both sequential and concurrent software from abstract specification through design to implementation. All stages of RAISE software development are expressed in the wide-spectrum RAISE specification language. The RAISE tools form an integrated tool environment supporting both language and method. The paper surveys RAISE and furthermore, more detailed presentations of major RAISE results are provided. The subjects of these are (a) an example of the use of the RAISE method and language, and (b) a presentation of the mathematical semantics of the RAISE specification language.
Mogens Nielsen, Klaus Havelund, Kim Ritter Wagner, Chris George
Formal Aspects Comput.2