Operational Semantics of Annotated Reflex Programs

Reflex is a process-oriented language that provides a design of easy-to-maintain control software for programmable logic controllers. The language has been successfully used in a several reliability critical control systems, e. g. control software for a silicon single crystal growth furnace and elec...

Full description

Saved in:
Bibliographic Details
Main Author: Igor S. Anureev
Format: Article
Language:English
Published: Yaroslavl State University 2019-12-01
Series:Моделирование и анализ информационных систем
Subjects:
Online Access:https://www.mais-journal.ru/jour/article/view/1271
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1849338835191726080
author Igor S. Anureev
author_facet Igor S. Anureev
author_sort Igor S. Anureev
collection DOAJ
description Reflex is a process-oriented language that provides a design of easy-to-maintain control software for programmable logic controllers. The language has been successfully used in a several reliability critical control systems, e. g. control software for a silicon single crystal growth furnace and electronic equipment control system. Currently, the main goal of the Reflex language project is to develop formal verification methods for Reflex programs in order to guarantee increased reliability of the software created on its basis. The paper presents the formal operational semantics of Reflex programs extended by annotations describing the formal specification of software requirements as a necessary basis for the application of such methods. A brief overview of the Reflex language is given and a simple example of its use – a control program for a hand dryer – is provided. The concepts of environment and variables shared with the environment are defined that allows to disengage from specific input/output ports. Types of annotations that specify restrictions on the values of the variables at program launch, restrictions on the environment (in particular, on the control object), invariants of the control cycle, pre- and postconditions of external functions used in Reflex programs are defined. Annotated Reflex also uses standard annotations assume, assert and havoc. The operational semantics of the annotated Reflex programs uses the global clock as well as the local clocks of separate processes, the time of which is measured in the number of iterations of the control cycle, to simulate time constraints on the execution of processes at certain states. It stores a complete history of changes of the values of shared variables for a more precise description of the time properties of the program and its environment. Semantics takes into account the infinity of the program execution cycle, the logic of process transition management from state to state and the interaction of processes with each other and with the environment. Extending the formal operational semantics of the Reflex language to annotations simplifies the proof of the correctness of the transformation approach to deductive verification of Reflex programs developed by the authors, transforming an annotated Reflex program to an annotated program in a very limited subset of the C language, by reducing a complex proof of preserving the truth of program requirements during the transformation to a simpler proof of equivalence of the original and the resulting annotated programs with respect to their operational semantics.
format Article
id doaj-art-8263e405de984b0892bcfd19894a28e6
institution Kabale University
issn 1818-1015
2313-5417
language English
publishDate 2019-12-01
publisher Yaroslavl State University
record_format Article
series Моделирование и анализ информационных систем
spelling doaj-art-8263e405de984b0892bcfd19894a28e62025-08-20T03:44:17ZengYaroslavl State UniversityМоделирование и анализ информационных систем1818-10152313-54172019-12-0126447548710.18255/1818-1015-2019-4-475-487948Operational Semantics of Annotated Reflex ProgramsIgor S. Anureev0A. P. Ershov Institute of Informatics Systems SB RAS, Institute of Automation and Electrometry SB RASReflex is a process-oriented language that provides a design of easy-to-maintain control software for programmable logic controllers. The language has been successfully used in a several reliability critical control systems, e. g. control software for a silicon single crystal growth furnace and electronic equipment control system. Currently, the main goal of the Reflex language project is to develop formal verification methods for Reflex programs in order to guarantee increased reliability of the software created on its basis. The paper presents the formal operational semantics of Reflex programs extended by annotations describing the formal specification of software requirements as a necessary basis for the application of such methods. A brief overview of the Reflex language is given and a simple example of its use – a control program for a hand dryer – is provided. The concepts of environment and variables shared with the environment are defined that allows to disengage from specific input/output ports. Types of annotations that specify restrictions on the values of the variables at program launch, restrictions on the environment (in particular, on the control object), invariants of the control cycle, pre- and postconditions of external functions used in Reflex programs are defined. Annotated Reflex also uses standard annotations assume, assert and havoc. The operational semantics of the annotated Reflex programs uses the global clock as well as the local clocks of separate processes, the time of which is measured in the number of iterations of the control cycle, to simulate time constraints on the execution of processes at certain states. It stores a complete history of changes of the values of shared variables for a more precise description of the time properties of the program and its environment. Semantics takes into account the infinity of the program execution cycle, the logic of process transition management from state to state and the interaction of processes with each other and with the environment. Extending the formal operational semantics of the Reflex language to annotations simplifies the proof of the correctness of the transformation approach to deductive verification of Reflex programs developed by the authors, transforming an annotated Reflex program to an annotated program in a very limited subset of the C language, by reducing a complex proof of preserving the truth of program requirements during the transformation to a simpler proof of equivalence of the original and the resulting annotated programs with respect to their operational semantics.https://www.mais-journal.ru/jour/article/view/1271operational semanticsreflex languagecontrol systemcontrol softwareprogrammable logic controllerannotationannotated program
spellingShingle Igor S. Anureev
Operational Semantics of Annotated Reflex Programs
Моделирование и анализ информационных систем
operational semantics
reflex language
control system
control software
programmable logic controller
annotation
annotated program
title Operational Semantics of Annotated Reflex Programs
title_full Operational Semantics of Annotated Reflex Programs
title_fullStr Operational Semantics of Annotated Reflex Programs
title_full_unstemmed Operational Semantics of Annotated Reflex Programs
title_short Operational Semantics of Annotated Reflex Programs
title_sort operational semantics of annotated reflex programs
topic operational semantics
reflex language
control system
control software
programmable logic controller
annotation
annotated program
url https://www.mais-journal.ru/jour/article/view/1271
work_keys_str_mv AT igorsanureev operationalsemanticsofannotatedreflexprograms