ABSTRACT
The importance of monitoring groups of devices working together towards shared global objectives is growing, for instance when they are used for crucial purposes like search and rescue operations during emergencies. Effective approaches in this context include expressing global properties of a swarm as logical formulas in a spatial or temporal logic, which can be automatically translated into executable distributed run-time monitors. This can be accomplished leveraging frameworks such as Aggregate Computing (AC), and proving non-trivial "translation correctness" results, in which subtle bugs may easily hide if relying on hand-made proofs.
In this paper, we present an implementation of AC in Coq, which allows to automatically verify monitor correctness, further raising the security level of the monitored system. This implementation may also allow to integrate static analysis of program correctness properties with run-time monitors for properties too difficult to prove in Coq. We showcase the usefulness of our implementation by means of a paradigmatic example, proving the correctness of an AC monitor for a past-CTL formula in Coq.
- Giorgio Audrito, Roberto Casadei, Ferruccio Damiani, Guido Salvaneschi, and Mirko Viroli. 2022. Functional Programming for Distributed Systems with XC. In ECOOP (LIPIcs, Vol. 222). https://doi.org/10.4230/LIPIcs.ECOOP.2022.20 Google ScholarCross Ref
- Giorgio Audrito, Roberto Casadei, and Gianluca Torta. 2021. Fostering resilient execution of multi-agent plans through self-organisation. In ACSOS 2021, Companion Volume. IEEE, 81–86. https://doi.org/10.1109/ACSOS-C52956.2021.00076 Google ScholarCross Ref
- Giorgio Audrito, Ferruccio Damiani, Volker Stolz, Gianluca Torta, and Mirko Viroli. 2022. Distributed runtime verification by past-CTL and the field calculus. J. Syst. Softw., 187 (2022), 111251. https://doi.org/10.1016/j.jss.2022.111251 Google ScholarDigital Library
- Giorgio Audrito and Gianluca Torta. 2021. Towards aggregate monitoring of spatio-temporal properties. In VORTEX 2021. ACM, 26–29. https://doi.org/10.1145/3464974.3468448 Google ScholarDigital Library
- Giorgio Audrito, Mirko Viroli, Ferruccio Damiani, Danilo Pianini, and Jacob Beal. 2019. A Higher-Order Calculus of Computational Fields. ACM Trans. on Computational Logic, 20, 1 (2019), issn:1529-3785 https://doi.org/10.1145/3285956 Google ScholarDigital Library
- Jacob Beal, Danilo Pianini, and Mirko Viroli. 2015. Aggregate Programming for the Internet of Things. IEEE Computer, 48, 9 (2015), 22–30. isbn:1471-2962 issn:1364-503X https://doi.org/10.1109/MC.2015.261 Google ScholarDigital Library
- Giorgio Audrito et al. 2021. RM for users’ safety and security in the built environment. In VORTEX 2021. ACM, 13–16. https://doi.org/10.1145/3464974.3468445 Google ScholarDigital Library
- Adrian Francalanza, Jorge A. Pérez, and César Sánchez. 2018. Runtime Verification for Decentralised and Distributed Systems. Lecture Notes in Computer Science, Vol. 10457. Springer, 176–210. https://doi.org/10.1007/978-3-319-75632-5_6 Google ScholarCross Ref
- Adrian Francalanza and Aldrin Seychell. 2015. Synthesising correct concurrent runtime monitors. Formal Methods Syst. Des., 46, 3 (2015), 226–261. https://doi.org/10.1007/s10703-014-0217-9 Google ScholarDigital Library
- Nicola Gigante, Angelo Montanari, and Mark Reynolds. 2017. A One-Pass Tree-Shaped Tableau for LTL+Past. In LPAR (EPiC Series in Computing, Vol. 46). 456–473. http://www.easychair.org/publications/paper/340363 Google Scholar
- Leslie Lamport. 1978. Time, Clocks, and the Ordering of Events in a Distributed System. Commun. ACM, 21, 7 (1978), https://doi.org/10.1145/359545.359563 Google ScholarDigital Library
- François Laroussinie and Philippe Schnoebelen. 1995. A Hierarchy of Temporal Logics with Past. Theor. Comput. Sci., 148, 2 (1995), 303–324. https://doi.org/10.1016/0304-3975(95)00035-U Google ScholarDigital Library
- Philip Wadler. 2015. Propositions as types. Commun. ACM, 58, 12 (2015), 75–84. https://doi.org/10.1145/2699407 Google ScholarDigital Library
Index Terms
- Combining Static and Runtime Verification with AC and Coq
Recommendations
Verifying data- and control-oriented properties combining static and runtime verification: theory and tools
Static verification techniques are used to analyse and prove properties about programs before they are executed. Many of these techniques work directly on the source code and are used to verify data-oriented properties over all possible executions. The ...
Expressing and Verifying Business Contracts with Abductive Logic Programming
SCIFF is a declarative language, based on abductive logic programming, that accommodates forward rules, predicate definitions, and constraints over finite domain variables. Its abductive declarative semantics can be related to that of deontic operators; ...
Runtime verification of cryptographic protocols
There has been a significant amount of work devoted to the static verification of security protocol designs. Virtually all of these results, when applied to an actual implementation of a security protocol, rely on certain implicit assumptions on the ...
Comments