Abstract
In this paper, we introduce a new verification method for control software. The novelty of the method consists in reducing the verification of temporal properties of a control software algorithm to the Hoare-like deductive verification of an imperative program that explicitly models time and the history of the execution of the algorithm. The method is applied to control software specified in Reflex—a domain-specific extension of the C language developed as an alternative to IEC 61131-3 languages. As a process-oriented language, Reflex enables control software description in terms of interacting processes, event-driven operations, and operations with discrete time intervals. The first step of our method rewrites an annotated Reflex program into an equivalent annotated C program. The second step is deductive verification of this C program. We illustrate our method with deductive verification of a Reflex program for a hand dryer device: we provide the source Reflex program, the set of requirements, the resulting annotated C program, the generated verification conditions, and the results of proving these conditions in Z3py – a Python-based front-end to the SMT solver Z3.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Blanke, M., Kinnaert, M., Lunze, J., Staroswiecki, M.: Diagnosis and Fault-Tolerant Control, 2nd edn. Springer, Heidelberg (2006). https://doi.org/10.1007/978-3-540-35653-0
IEC 61131–3: Programmable controllers Part 3: Programming languages. Rev. 2.0. International Electrotechnical Commission Standard (2003)
Basile, F., Chiacchio, P., Gerbasio, D.: On the Implementation of industrial automation systems based on PLC. IEEE Trans. Autom. Sci. Eng. 4(10), 990–1003 (2013)
Thramboulidis, K., Frey, G.: An MDD process for IEC 61131-based industrial automation systems. In: 16th IEEE International Conference on Emerging Technologies and Factory Automation (ETFA11), Toulouse, France, pp. 1–8 (2011)
IEC 61499: Function Blocks for Industrial Process Measurement andControl Systems. Parts 1–4. Rev. 1.0. International Electrotechnical Commission Standard (2004/2005)
Wagner, F., Schmuki, R., Wagner, T., Wolstenholme, P.: Modeling Software with Finite State Machines. Auerbach Publications, Boston (2006)
Samek, M.: Practical UML Statecharts in C/C++: Event-driven Programming for Embedded Systems, 2nd edn. Newnes, Oxford (2009)
Control Technology Corporation. QuickBuilder™Reference Guide (2018). https://controltechnologycorp.com/docs/QuickBuilder_Ref.pdf. Accessed 20 Jan 2019
Zyubin, V.E.: Hyper-automaton: a model of control algorithms. In: Proceedings of the IEEE International Siberian Conference on Control and Communications (SIBCON-2007), pp. 51–57. The Tomsk IEEE Chapter & Student Branch, Tomsk (2007)
Hoare, C.A.R.: Communicating Sequential Processes. Prentice-Hall Int., Upper Saddle River (1985)
Harel, D.: Statecharts: a visual formalism for complex systems. Sci. Comput. Program. 8(3), 231–274 (1987)
Lynch, N., Tuttle, M.: An introduction to input/output automata. CWI Q. 2(3), 219–246 (1989)
Berry, G.: The foundations of Esterel. In: Proof, Language and Interaction: Essays in Honour of Robin Milner. Foundations of Computing Series, pp. 425–454. MIT Press (2000)
Henzinger, T.A.: The theory of hybrid automata. In: Inan, M.K., Kurshan, R.P. (eds.) Verification of Digital and Hybrid Systems. NATO ASI Series (Series F: Computer and Systems Sciences), vol. 170, pp. 265–292. Springer, Heidelberg (2000). https://doi.org/10.1007/978-3-642-59615-5_13
Milner, R.: Communication and Concurrency. Series in Computer Science. Prentice Hall, New Jersey (1989)
Kaynar, D.K., Lynch, N., Segala, R., Vaandrager, F.: Timed I/O automata: a mathematical framework for modeling and analyzing real-time systems. In: 24th IEEE International Real-Time Systems Symposium (RTSS 2003), pp. 166–177. IEEE Computer Society Cancun, Mexico (2003)
Kof, L., Schätz, B.: Combining aspects of reactive systems. In: Broy, M., Zamulin, A.V. (eds.) PSI 2003. LNCS, vol. 2890, pp. 344–349. Springer, Heidelberg (2004). https://doi.org/10.1007/978-3-540-39866-0_34
Zyubin, V.: SPARM language as a means for programming microcontrollers. Optoelectron. Instr. Data Process. 2(7), 36–44 (1996)
Liakh, T.V., Rozov, A.S., Zyubin, V.E.: Reflex language: a practical notation for cyber-physical systems. Syst. Inform. 12(6), 85–104 (2018)
Rozov A.S., Zyubin V.E.: Process-oriented programming language for MCU-based automation. In: Proceedings of the IEEE International Siberian Conference on Control and Communications, pp. 1–4. The Tomsk IEEE Chapter Student Branch, Tomsk (2013)
Bulavskij, D., Zyubin, V., Karlson, N., Krivoruchko, V., Mironov, V.: An automated control system for a silicon single-crystal growth furnace. Optoelectron. Instr. Data Process. 2(5), 25–30 (1996)
Travis, J., Kring, J.: LabVIEW for Everyone: Graphical Programming Made Easy and Fun, 3rd edn. Prentice Hall PTR, Upper Saddle River (2006)
Zyubin, V.: Using process-oriented programming in LabVIEW. In: Proceedings of the Second IASTED Intern. Multi-Conference on “Automation, control, and information technology”: Control, Diagnostics, and Automation, Novosibirsk, pp. 35–41 (2010)
Randell, B.: Software engineering techniques. Report on a conference sponsored by the NATO Science Committee, p. 16. Brussels, Scientific Affairs Division, NATO, Rome, Italy (1970)
Z3 API in Python. https://ericpony.github.io/z3py-tutorial/guide-examples.htm. Accessed 20 Jan 2019
de Moura, L., Bjørner, N.: Z3: an efficient SMT solver. In: Ramakrishnan, C.R., Rehof, J. (eds.) TACAS 2008. LNCS, vol. 4963, pp. 337–340. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-78800-3_24
Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: a modular reusable verifier for object-oriented programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006). https://doi.org/10.1007/11804192_17
FramaC Homepage. https://frama-c.com/
Spark Pro Homepage. https://www.adacore.com/sparkpro
The KeY project Homepage https://www.key-project.org/
Dafny Homepage. https://www.microsoft.com/en-us/research/project/dafny-a-language-and-program-verifier-for-functional-correctness/
Dijkstra, E.W., Scholten, C.S.: Predicate Calculus and Program Semantics. Springer, Heidelberg (1990). https://doi.org/10.1007/978-1-4612-3228-5
Garanina, N., Zyubin, V., Lyakh, V., Gorlatch, S.: An ontology of specification patterns for verification of concurrent systems. In: New Trends in Intelligent Software Methodologies, Tools and Techniques. Proceedings of the 17th International Conference on SoMeT-18. Series: Frontiers in Artificial Intelligence and Applications, pp. 515–528. IOS Press, Amsterdam (2018)
ACL2 Homepage. http://www.cs.utexas.edu/users/moore/acl2/
Acknowledgement
The reported study was funded by the Russian Ministry of Education and Science; RFBR, project number 17-07-01600; RFBR, project number 20-01-00541; and RFBR, project number 20-07-00927.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this paper
Cite this paper
Anureev, I., Garanina, N., Liakh, T., Rozov, A., Zyubin, V., Gorlatch, S. (2019). Two-Step Deductive Verification of Control Software Using Reflex. In: Bjørner, N., Virbitskaite, I., Voronkov, A. (eds) Perspectives of System Informatics. PSI 2019. Lecture Notes in Computer Science(), vol 11964. Springer, Cham. https://doi.org/10.1007/978-3-030-37487-7_5
Download citation
DOI: https://doi.org/10.1007/978-3-030-37487-7_5
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-37486-0
Online ISBN: 978-3-030-37487-7
eBook Packages: Computer ScienceComputer Science (R0)