Skip to main content

Two-Step Deductive Verification of Control Software Using Reflex

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 11964))

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

References

  1. 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

    Book  MATH  Google Scholar 

  2. IEC 61131–3: Programmable controllers Part 3: Programming languages. Rev. 2.0. International Electrotechnical Commission Standard (2003)

    Google Scholar 

  3. 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)

    Article  Google Scholar 

  4. 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)

    Google Scholar 

  5. IEC 61499: Function Blocks for Industrial Process Measurement andControl Systems. Parts 1–4. Rev. 1.0. International Electrotechnical Commission Standard (2004/2005)

    Google Scholar 

  6. Wagner, F., Schmuki, R., Wagner, T., Wolstenholme, P.: Modeling Software with Finite State Machines. Auerbach Publications, Boston (2006)

    Book  Google Scholar 

  7. Samek, M.: Practical UML Statecharts in C/C++: Event-driven Programming for Embedded Systems, 2nd edn. Newnes, Oxford (2009)

    Google Scholar 

  8. Control Technology Corporation. QuickBuilder™Reference Guide (2018). https://controltechnologycorp.com/docs/QuickBuilder_Ref.pdf. Accessed 20 Jan 2019

  9. 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)

    Google Scholar 

  10. Hoare, C.A.R.: Communicating Sequential Processes. Prentice-Hall Int., Upper Saddle River (1985)

    MATH  Google Scholar 

  11. Harel, D.: Statecharts: a visual formalism for complex systems. Sci. Comput. Program. 8(3), 231–274 (1987)

    Article  MathSciNet  Google Scholar 

  12. Lynch, N., Tuttle, M.: An introduction to input/output automata. CWI Q. 2(3), 219–246 (1989)

    MathSciNet  MATH  Google Scholar 

  13. 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)

    Google Scholar 

  14. 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

    Chapter  Google Scholar 

  15. Milner, R.: Communication and Concurrency. Series in Computer Science. Prentice Hall, New Jersey (1989)

    MATH  Google Scholar 

  16. 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)

    Google Scholar 

  17. 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

    Chapter  MATH  Google Scholar 

  18. Zyubin, V.: SPARM language as a means for programming microcontrollers. Optoelectron. Instr. Data Process. 2(7), 36–44 (1996)

    Google Scholar 

  19. 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)

    Google Scholar 

  20. 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)

    Google Scholar 

  21. 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)

    Google Scholar 

  22. Travis, J., Kring, J.: LabVIEW for Everyone: Graphical Programming Made Easy and Fun, 3rd edn. Prentice Hall PTR, Upper Saddle River (2006)

    Google Scholar 

  23. 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)

    Google Scholar 

  24. 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)

    Google Scholar 

  25. Z3 API in Python. https://ericpony.github.io/z3py-tutorial/guide-examples.htm. Accessed 20 Jan 2019

  26. 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

    Chapter  Google Scholar 

  27. 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

    Chapter  Google Scholar 

  28. FramaC Homepage. https://frama-c.com/

  29. Spark Pro Homepage. https://www.adacore.com/sparkpro

  30. The KeY project Homepage https://www.key-project.org/

  31. Dafny Homepage. https://www.microsoft.com/en-us/research/project/dafny-a-language-and-program-verifier-for-functional-correctness/

  32. Dijkstra, E.W., Scholten, C.S.: Predicate Calculus and Program Semantics. Springer, Heidelberg (1990). https://doi.org/10.1007/978-1-4612-3228-5

    Book  MATH  Google Scholar 

  33. 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)

    Google Scholar 

  34. ACL2 Homepage. http://www.cs.utexas.edu/users/moore/acl2/

Download references

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

Authors

Corresponding author

Correspondence to Igor Anureev .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics