Abstract
We present HLola, an extensible Stream Runtime Verification (SRV) tool, that borrows from the functional language Haskell (1) rich types for data in events and verdicts; and (2) functional features for parametrization, libraries, high-order specification transformations, etc.
SRV is a formal dynamic analysis technique that generalizes Runtime Verification (RV) algorithms from temporal logics like LTL to stream monitoring, allowing the computation of verdicts richer than Booleans (quantitative values and beyond). The keystone of SRV is the clean separation between temporal dependencies and data computations. However, in spite of this theoretical separation previous engines include hardwired implementations of just a few datatypes, requiring complex changes in the tool chain to incorporate new data types. Additionally, when previous tools implement features like parametrization these are implemented in an ad-hoc way. In contrast, HLola is implemented as a Haskell embedded DSL, borrowing datatypes and functional aspects from Haskell, resulting in an extensible engine (The tool is available open-source at http://github.com/imdea-software/hlola). We illustrate HLola through several examples, including a UAV monitoring infrastructure with predictive characteristics that has been validated in online runtime verification in real mission planning.
This work was funded in part by the Madrid Regional Government under project “S2018/TCS-4339 (BLOQUES-CM)”, by Spanish National Project “BOSCO (PGC2018-102210-B-100)”.
Chapter PDF
Similar content being viewed by others
References
Howard Barringer, Allen Goldberg, Klaus Havelund, and Koushik Sen. Rule-based runtime verification. In Proc. of the 5th Int’l Conf. on Verification, Model Checking and Abstract Interpretation (VMCAI’04), volume 2937 of LNCS, pages 44–57. Springer, 2004.
Howard Barringer and Klaus Havelund. Tracecontract: A scala DSL for trace analysis. In Michael J. Butler and Wolfram Schulte, editors, FM 2011: Formal Methods - 17th International Symposium on Formal Methods, Limerick, Ireland, June 20-24, 2011. Proceedings, volume 6664 of Lecture Notes in Computer Science, pages 57–72. Springer, 2011.
Howard Barringer, David Rydeheard, and Klaus Havelund. Rule systems for run-time monitoring: From eagle to ruler. In Oleg Sokolsky and Serdar Taşıran, editors, Runtime Verification, pages 111–125, Berlin, Heidelberg, 2007. Springer Berlin Heidelberg.
Ezio Bartocci and Yliès Falcone, editors. Lectures on Runtime Verification - Introductory and Advanced Topics, volume 10457 of LNCS. Springer, 2018.
Andreas Bauer, Martin Leucker, and Chrisitan Schallhart. Runtime verification for LTL and TLTL. ACM Transactions on Software Engineering and Methodology, 20(4):14, 2011.
Marco Benedetti and Alessandro Cimatti. Bounded model checking for past LTL. In Proc. of TACAS’03, volume 2619 of LNCS, pages 18–33. Springer, 2003.
Martín Ceresa, Felipe Gorostiaga, and César Sánchez. Declarative stream runtime verification (hlola). In Bruno C. d. S. Oliveira, editor, Programming Languages and Systems, pages 25–43, Cham, 2020. Springer International Publishing.
Lukas Convent, Sebastian Hungerecker, Martin Leucker, Torben Scheffel, Malte Schmitz, and Daniel Thoma. TeSSLa: Temporal stream-based specification language. In Proc. of SBMF’18, volume 11254 of LNCS. Springer, 2018.
Ben D’Angelo, Sriram Sankaranarayanan, César Sánchez, Will Robinson, Bernd Finkbeiner, Henny B. Sipma, Sandeep Mehrotra, and Zohar Manna. LOLA: Runtime monitoring of synchronous systems. In Proc. of the 12th Int’l Symp. of Temporal Representation and Reasoning (TIME’05), pages 166–174. IEEE CS Press, 2005.
Cindy Eisner, Dana Fisman, John Havlicek, Yoad Lustig, Anthony McIsaac, and David Van Campenhout. Reasoning with temporal logic on truncated paths. In Proc. of the 15th Int’l Conf. on Computer Aided Verification (CAV’03), volume 2725 of LNCS, pages 27–39. Springer, 2003.
Peter Faymonville, Bernd Finkbeiner, Malte Schledjewski, Maximilian Schwenger, Marvin Stenger, Leander Tentrup, and Torfah Hazem. StreamLAB: Stream-based monitoring of cyber-physical systems. In Proc. of the 31st Int’l Conf. on Computer-Aided Verification (CAV’19), volume 11561 of LNCS, pages 421–431. Springer, 2019.
Felipe Gorostiaga and César Sánchez. Striver: Stream runtime verification for real-time event-streams. In Proc. of the 18th Int’l Conf. on Runtime Verification (RV’18), volume 11237 of LNCS, pages 282–298. Springer, 2018.
Klaus Havelund. Rule-based runtime verification revisited. Int. J. Softw. Tools Technol. Transf., 17(2):143–170, 2015.
Klaus Havelund and Allen Goldberg. Verify your runs. In Proc. of VSTTE’05, LNCS 4171, pages 374–383. Springer, 2005.
Klaus Havelund and Grigore Roşu. Synthesizing monitors for safety properties. In Proc. of the 8th Int’l Conf. on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’02), volume 2280 of LNCS, pages 342–356. Springer-Verlag, 2002.
Rudolph Emil Kalman. A new approach to linear filtering and prediction problems. Transactions of the ASME–Journal of Basic Engineering, 82(Series D):35–45, 1960.
Martin Leucker, César Sánchez, Torben Scheffel, Malte Schmitz, and Alexander Schramm. TeSSLa: Runtime verification of non-synchronized real-time streams. In Proc. of the 33rd Symposium on Applied Computing (SAC’18). ACM, 2018.
Martin Leucker and Christian Schallhart. A brief account of runtime verification. J. Logic Algebr. Progr., 78(5):293–303, 2009.
Zohar Manna and Amir Pnueli. Temporal Verification of Reactive Systems. Springer-Verlag, 1995.
Joël Ouaknine and James Worrell. Some recent results in metric temporal logic. In Proc. of FORMATS’08, volume 5215 of LNCS, pages 1–13. Springer, 2008.
Grigore Roşu and Klaus Havelund. Rewriting-based techniques for runtime verification. Automated Software Engineering, 12(2):151–197, 2005.
César Sánchez. Online and offline stream runtime verification of synchronous systems. In Proc. of the 18th Int’l Conf. on Runtime Verification (RV’18), volume 11237 of LNCS, pages 138–163. Springer, 2018.
Koushik Sen and Grigore Roşu. Generating optimal monitors for extended regular expressions. In Oleg Sokolsky and Mahesh Viswanathan, editors, Electronic Notes in Theoretical Computer Science, volume 89. Elsevier, 2003.
Volker Stolz and Frank Huch. Runtime verification of concurrent haskell programs. Electron. Notes Theor. Comput. Sci., 113:201–216, 2005.
Sebastián Zudaire, Felipe Gorostiaga, César Sánchez, Gerardo Schneider, and Sebastián Uchitel. Assumption monitoring using runtime verification for UAV temporal task plan executions. Under submission, 2020.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made.
The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
Copyright information
© 2021 The Author(s)
About this paper
Cite this paper
Gorostiaga, F., Sánchez, C. (2021). HLola: a Very Functional Tool for Extensible Stream Runtime Verification. In: Groote, J.F., Larsen, K.G. (eds) Tools and Algorithms for the Construction and Analysis of Systems. TACAS 2021. Lecture Notes in Computer Science(), vol 12652. Springer, Cham. https://doi.org/10.1007/978-3-030-72013-1_18
Download citation
DOI: https://doi.org/10.1007/978-3-030-72013-1_18
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-72012-4
Online ISBN: 978-3-030-72013-1
eBook Packages: Computer ScienceComputer Science (R0)