Abstract
We present HStriver, an extensible stream runtime verification tool for event streams. The tool consists of a runtime verification engine for (1) real-time events streams where individual observations and verdicts can occur at arbitrary times, and (2) rich data in the observations and verdicts. This rich setting allows, for example, encoding as HStriver specifications quantitative semantics of logics like STL, including different notions of robustness.
The keystone of stream runtime verification (SRV) is the clean separation between temporal dependencies and data computations. To encode the data values and computations involved in the monitoring process we borrow (almost) arbitrary data-types from Haskell. These types are transparently lifted to the specification language and incorporated in the engine, so they can be used as the types of the inputs (observations), outputs (verdicts), and intermediate streams. The resulting extensible language is then embedded, alongside the temporal evaluation engine (which is agnostic to the types) into Haskell as an embedded Domain Specific Langauge (eDSL). Morever, the availability of functional features in the specification language enables the direct implementation of desirable features in HStriver like parametrization (using functions that return stream specifications), etc. The resulting tool is a flexible and extensible stream runtime verification engine for real-time streams. We illustrate the use of the tool on many sophisticated real-time specifications, including realistic signal temporal logic (STL) properties of existing designs.
The tool is available open source at http://github.com/imdea-software/hstriver. 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)”.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
See the tool webpage https://software.imdea.org/hstriver to find example specifications along with input and output data.
- 2.
The full code or all examples and libraries in this section can be found in https://software.imdea.org/hstriver.
References
Barringer, H., Goldberg, A., Havelund, K., Sen, K.: Rule-based runtime verification. In: Proceedings of the 5th Int’l Conference on Verification, Model Checking and Abstract Interpretation (VMCAI’04). LNCS, vol. 2937, pp. 44–57. Springer (2004). https://doi.org/10.1007/978-3-540-24622-0_5
Barringer, H., Havelund, K.: Tracecontract: A scala DSL for trace analysis. In: Proceedings of the 17th Int’l Symposium on Formal Methods (FM’11). LNCS, vol. 6664, pp. 57–72. Springer (2011). https://doi.org/10.1007/978-3-642-21437-0_7
Barringer, H., Rydeheard, D., Havelund, K.: Rule systems for run-time monitoring: from eagle to ruleR. In: Proceedings of the 7th Int’l Workshop on Runtime Verification (RV’07). LNCS, vol. 4839, pp. 111–125. Springer (2007). https://doi.org/10.1007/978-3-540-77395-5_10
Bartocci, E., Falcone, Y. (eds.): Lectures on Runtime Verification. LNCS, vol. 10457. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-75632-5
Basin, D., Klaedtke, M.H.F., Zalinescu, E.: MONPOLY: monitoring usage-control policies. In: Proceedings of the 2nd Int’l Conference on Runtime Verification (RV’11). LNCS, vol. 7186, pp. 360–364. Springer (2011). https://doi.org/10.1007/978-3-642-29860-8_27
Basin, D.A., Klaedtke, F., Zalinescu, E.: The MonPoly monitoring tool. In: Proceedings of the Int’l Workshop on Competitions, Usability, Benchmarks, Evaluation, and Standardisation for Runtime Verification Tools (RV-CUBES), pp. 19–28. Kalpa Publications in Computing, EasyChair (2017). https://doi.org/10.29007/89hs
Bauer, A., Leucker, M., Schallhart, C.: Runtime verification for LTL and TLTL. ACM Trans. Softw. Eng. Methodol. 20(4), 14 (2011). https://doi.org/10.1145/2000799.2000800
Berry, G.: Proof, language, and interaction: essays in honour of Robin Milner, chap. The foundations of Esterel, pp. 425–454. MIT Press (2000). https://doi.org/10.7551/mitpress/5641.001.0001
Ceresa, M., Gorostiaga, F., Sánchez, C.: Declarative stream runtime verification (hLola). In: Proceedings of the 18th Asian Symposium on Programming Languages and Systems (APLAS’20). LNCS, vol. 12470, pp. 25–43. Springer (2020). https://doi.org/10.1007/978-3-030-64437-6_2
Convent, L., Hungerecker, S., Leucker, M., Scheffel, T., Schmitz, M., Thoma, D.: TeSSLa: temporal stream-based specification language. In: Proceedings of SBMF’18. LNCS, vol. 11254. Springer (2018). https://doi.org/10.1007/978-3-030-03044-5_10
Cumin, J., Lefebvre, G., Ramparany, F., Crowley, J.: A dataset of routine daily activities in an instrumented home. In: Ubiquitous Computing and Ambient Intelligence, pp. 413–425. Springer International Publishing, Cham (2017). https://doi.org/10.1007/978-3-319-67585-5_43
D’Angelo, B., Sankaranarayanan, S., Sánchez, C., Robinson, W., Finkbeiner, B., Sipma, H.B., Mehrotra, S., Manna, Z.: LOLA: runtime monitoring of synchronous systems. In: Proceedings of the 12th Int’l Symposium of Temporal Representation and Reasoning (TIME’05), pp. 166–174. IEEE CS Press (2005). https://doi.org/10.1109/TIME.2005.26
Eisner, C., Fisman, D., Havlicek, J., Lustig, Y., McIsaac, A., Campenhout, D.V.: Reasoning with temporal logic on truncated paths. In: Proceedings of the 15th Int’l Conference on Computer Aided Verification (CAV’03). LNCS, vol. 2725, pp. 27–39. Springer (2003). https://doi.org/10.1007/978-3-540-45069-6_3
Falcone, Y., Krstic, S., Reger, G., Traytel, D.: A taxonomy for classifying runtime verification tools. In: Proceedings of the 18th Int’l Conference on Runtime Verification (RV’18). LNCS, vol. 11237, pp. 241–262. Springer (2018). https://doi.org/10.1007/978-3-030-03769-7_14
Faymonville, P., Finkbeiner, B., Schledjewski, M., Schwenger, M., Stenger, M., Tentrup, L., Hazem, T.: StreamLAB: stream-based monitoring of cyber-physical systems. In: Proceedings of the 31st Int’l Conference on Computer-Aided Verification (CAV’19). LNCS, vol. 11561, pp. 421–431. Springer (2019). https://doi.org/10.1007/978-3-030-25540-4_24
Faymonville, P., Finkbeiner, B., Schwenger, M., Torfah, H.: Real-time stream-based monitoring. CoRR abs/1711.03829 (2017). arxiv.org/abs/1711.03829
Gorostiaga, F., Danielsson, L.M., Sánchez, C.: Unifying the time-event spectrum for stream runtime verification. In: Proceedings of 20th Int’l Conference on Runtime Verification (RV’20). LNCS, vol. 12399, pp. 462–481. Springer (2020). https://doi.org/10.1007/978-3-030-60508-7_26
Gorostiaga, F., Sánchez, C.: Striver: Stream runtime verification for real-time event-streams. In: Proceedings of the 18th Int’l Conference on Runtime Verification (RV’18). LNCS, vol. 11237, pp. 282–298. Springer (2018). https://doi.org/10.1007/978-3-030-03769-7_16
Gorostiaga, F., Sánchez, C.: HLola: a very functional tool for extensible stream runtime verification. In: Proceedings of the 27th Int’l Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’21). Part II, pp. 349–356. LNCS, Springer (2021). https://doi.org/10.1007/978-3-030-72013-1_18
Gorostiaga, F., Sánchez, C.: Stream runtime verification of real-time event streams with the Striver language. Int. J. Softw. Tools Technol. Transfer 23(2), 157–183 (2021). https://doi.org/10.1007/s10009-021-00605-3
Halbwachs, N., Caspi, P., Pilaud, D., Plaice, J.: Lustre: a declarative language for programming synchronous systems. In: Proceedings of the 14th ACM Symposium on Principles of Programming Languages, pp. 178–188. ACM Press (1987). https://doi.org/10.1145/41625.41641
Hallé, S.: When RV meets CEP. In: Proceedings of RV’16. LNCS, vol. 10012, pp. 68–91. Springer (2016). https://doi.org/10.1007/978-3-319-46982-9_6
Hallé, S., Khoury, R.: Event stream processing with BeepBeep 3. In: Proceedings of the Int’l Workshop on Competitions, Usability, Benchmarks, Evaluation, and Standardisation for Runtime Verification Tools (RV-CUBES), pp. 81–88. Kalpa Publications in Computing, EasyChair (2017). https://doi.org/10.29007/4cth
Havelund, K.: Rule-based runtime verification revisited. Int. J. Softw. Tools Technol. Transfer 17(2), 143–170 (2014). https://doi.org/10.1007/s10009-014-0309-2
Havelund, K., Goldberg, A.: Verify your runs. In: Proceedings of VSTTE’05, pp. 374–383. LNCS 4171, Springer (2005). https://doi.org/10.1007/978-3-540-69149-5_40
Havelund, K., Roşu, G.: Synthesizing monitors for safety properties. In: Proceedings of the 8th Int’l Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’02). LNCS, vol. 2280, pp. 342–356. Springer-Verlag (2002). https://doi.org/10.1007/3-540-46002-0_24
Jin, X., Deshmukh, J.V., Kapinski, J., Ueda, K., Butts, K.: Powertrain control verification benchmark. In: Proceedings of the 17th Int’l Conference on Hybrid systems: Computation and Control (HSCC’14), pp. 253–262. ACM (2014). https://doi.org/10.1145/2562059.2562140
Leucker, M., Sánchez, C., Scheffel, T., Schmitz, M., Schramm, A.: TeSSLa: runtime verification of non-synchronized real-time streams. In: Proceedings of the 33rd Symposium on Applied Computing (SAC’18). ACM (2018). https://doi.org/10.1145/3167132.3167338
Leucker, M., Schallhart, C.: A brief account of runtime verification. J. Logic Algebr. Progr. 78(5), 293–303 (2009). https://doi.org/10.1016/j.jlap.2008.08.004
Maler, O., Nickovic, D.: Monitoring temporal properties of continuous signals. In: Proceedings of FORMATS/FTRTFT 2004. LNCS, vol. 3253, pp. 152–166. Springer (2004). https://doi.org/10.1007/978-3-540-30206-3_12
Manna, Z., Pnueli, A.: Temporal Verification of Reactive Systems. Springer-Verlag (1995). https://doi.org/10.1007/978-1-4612-4222-2
Pike, L., Goodloe, A., Morisset, R., Niller, S.: Copilot: a hard real-time runtime monitor. In: Proceedings of the 1st Int’l Conference on Runtime Verification (RV’10). LNCS, vol. 6418, pp. 345–359. Springer (2010). https://doi.org/10.1007/978-3-642-16612-9_26
Reinbacher, T., Rozier, K.Y., Schumann, J.: Temporal-logic based runtime observer pairs for system health management of real-time systems. In: Proceedings 20th International Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS’14). LNCS, vol. 8413, pp. 357–372. Springer (2014). https://doi.org/10.1007/978-3-642-54862-8_24
Roşu, G., Havelund, K.: Rewriting-based techniques for runtime verification. Autom. Softw. Eng. 12(2), 151–197 (2005). https://doi.org/10.1007/s10515-005-6205-y
Sánchez, C.: Online and offline stream runtime verification of synchronous systems. In: Proceedings of the 18th Int’l Conference on Runtime Verification (RV’18). LNCS, vol. 11237, pp. 138–163. Springer (2018). https://doi.org/10.1007/978-3-030-03769-7_9
Sen, K., Roşu, G.: Generating optimal monitors for extended regular expressions. In: Electronic Notes in Theoretical Computer Science, vol. 89. Elsevier (2003). https://doi.org/10.1016/S1571-0661(04)81051-X
Stolz, V., Huch, F.: Runtime verification of concurrent Haskell programs. Electron. Notes Theor. Comput. Sci. 113, 201–216 (2005). https://doi.org/10.1016/j.entcs.2004.01.026
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Gorostiaga, F., Sánchez, C. (2021). HStriver: A Very Functional Extensible Tool for the Runtime Verification of Real-Time Event Streams. In: Huisman, M., Păsăreanu, C., Zhan, N. (eds) Formal Methods. FM 2021. Lecture Notes in Computer Science(), vol 13047. Springer, Cham. https://doi.org/10.1007/978-3-030-90870-6_30
Download citation
DOI: https://doi.org/10.1007/978-3-030-90870-6_30
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-90869-0
Online ISBN: 978-3-030-90870-6
eBook Packages: Computer ScienceComputer Science (R0)