<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.3 20210610//EN" "JATS-journalpublishing1-3.dtd">
<article article-type="research-article" dtd-version="1.3" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xml:lang="ru"><front><journal-meta><journal-id journal-id-type="publisher-id">mais</journal-id><journal-title-group><journal-title xml:lang="ru">Моделирование и анализ информационных систем</journal-title><trans-title-group xml:lang="en"><trans-title>Modeling and Analysis of Information Systems</trans-title></trans-title-group></journal-title-group><issn pub-type="ppub">1818-1015</issn><issn pub-type="epub">2313-5417</issn><publisher><publisher-name>Yaroslavl State University</publisher-name></publisher></journal-meta><article-meta><article-id pub-id-type="doi">10.18255/1818-1015-2019-4-475-487</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-1271</article-id><article-categories><subj-group subj-group-type="heading"><subject>Research Article</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="ru"><subject>Computing Methodologies and Applications</subject></subj-group></article-categories><title-group><article-title>Операционная семантика аннотированных Reflex программ</article-title><trans-title-group xml:lang="en"><trans-title>Operational Semantics of Annotated Reflex Programs</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0001-9574-128X</contrib-id><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Ануреев</surname><given-names>Игорь Сергеевич</given-names></name><name name-style="western" xml:lang="en"><surname>Anureev</surname><given-names>Igor S.</given-names></name></name-alternatives><bio xml:lang="ru"><p>канд. физ.-мат. наук, с.н.с.</p></bio><bio xml:lang="en"><p>PhD</p></bio><email xlink:type="simple">anureev@iis.nsk.su</email><xref ref-type="aff" rid="aff-1"/></contrib></contrib-group><aff-alternatives id="aff-1"><aff xml:lang="ru"><institution>Институт систем информатики им. А.П. Ершова СО РАН, Институт автоматики и электрометрии СО РАН</institution><country>Россия</country></aff><aff xml:lang="en"><institution>A. P. Ershov Institute of Informatics Systems SB RAS, Institute of Automation and Electrometry SB RAS</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2019</year></pub-date><pub-date pub-type="epub"><day>13</day><month>12</month><year>2019</year></pub-date><volume>26</volume><issue>4</issue><fpage>475</fpage><lpage>487</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Ануреев И.С., 2019</copyright-statement><copyright-year>2019</copyright-year><copyright-holder xml:lang="ru">Ануреев И.С.</copyright-holder><copyright-holder xml:lang="en">Anureev I.S.</copyright-holder><license xml:lang="ru" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>Данная работа распространяется под лицензией Creative Commons Attribution 4.0.</license-p></license><license xml:lang="en" license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/" xlink:type="simple"><license-p>This work is licensed under a Creative Commons Attribution 4.0 License.</license-p></license></permissions><self-uri xlink:href="https://www.mais-journal.ru/jour/article/view/1271">https://www.mais-journal.ru/jour/article/view/1271</self-uri><abstract><p>Reflex — процесс-ориентированный язык, который обеспечивает разработку простого в обслуживании управляющего программного обеспечения для программируемых логических контроллеров. Язык был успешно использован в нескольких системах управления с повышенными требованиями к надежности, например, в системе управления печью для выращивания монокристаллов кремния и в комплексе контроля радиоэлектронной аппаратуры. В настоящее время основной целью языкового проекта Reflex является разработка методов формальной верификации для Reflex программ для того, чтобы гарантировать повышенную надежность создаваемого на его основе программного обеспечения. В статье представлена формальная операционная семантика Reflex программ, расширенных аннотациями, описывающими формальную спецификацию программных требований, как необходимый базис для применения таких методов. Дан краткий обзор языка Reflex и приведен простой пример его использования — управляющая программа для сушилки рук. Определены понятия окружения и переменных, разделяемых с окружением, позволяющие абстрагироваться от конкретных портов ввода/вывода. Определены типы аннотаций, задающие ограничения на значения переменных при запуске программы, ограничения на окружение (в частности, на объект управления), инварианты цикла управления, пред- и постусловия внешних функций, используемых в Reflex программах. Аннотированный Reflex также использует стандартные аннотации assume, assert и havoc. Операционная семантика аннотированных Reflex программ использует глобальные часы и локальные часы отдельных процессов, время которых измеряется в количестве итераций цикла управления, для моделирования временных ограничений на исполнение процессов в определенных состояниях. Она хранит полную историю изменений значений разделяемых переменных для более полного описания временных свойств программы и ее окружения. Семантика учитывает бесконечность цикла выполнения программы, логику управления переходами процессов из состояния в состояние и взаимодействие процессов между собой и с окружением. Расширение формальной операционной семантики языка Reflex на аннотации упрощает доказательство корректности разрабатываемого авторами трансформационного подхода к дедуктивной верификации Reflex программ, трансформирующего аннотированную Reflex программу к аннотированной программе на сильно ограниченном подмножестве языка C, за счет сведения сложного доказательства сохранения истинности требований к программе при трансформации к более простому доказательству эквивалентности исходной и результирующей аннотированных программ относительно их операционных семантик.</p></abstract><trans-abstract xml:lang="en"><p>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.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>операционная семантика</kwd><kwd>язык Reflex</kwd><kwd>система управления</kwd><kwd>управляющее программное обеспечение</kwd><kwd>программируемый логический контроллер</kwd><kwd>аннотация</kwd><kwd>аннотированная программа</kwd></kwd-group><kwd-group xml:lang="en"><kwd>operational semantics</kwd><kwd>Reflex language</kwd><kwd>control system</kwd><kwd>control software</kwd><kwd>programmable logic controller</kwd><kwd>annotation</kwd><kwd>annotated program</kwd></kwd-group><funding-group><funding-statement xml:lang="ru">Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта № 17-07-01600, а также в рамках темы госзадания ИАиЭ СО РАН (№ АААА-А17-11706061006-6).</funding-statement><funding-statement xml:lang="en">This work was funded by the RFBR according to the research № 17-07-01600 and Funding State budget of the Russian Federation (IA&amp;E project № АААА-А17-11706061006-6).</funding-statement></funding-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Iec, IEC, “61131-3: Programmable Controllers–Part 3: Programming Languages”, International Standard, Second Edition, International Electrotechnical Commission, Geneva, 1 (2003).</mixed-citation><mixed-citation xml:lang="en">Iec, IEC, “61131-3: Programmable Controllers–Part 3: Programming Languages”, International Standard, Second Edition, International Electrotechnical Commission, Geneva, 1 (2003).</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Basile F., Chiacchio P., Gerbasio D., “On the Implementation of Industrial Automation Systems Based on PLC”, IEEE Transactions on Automation Science and Engineering, 10:4 (2012), 990–1003.</mixed-citation><mixed-citation xml:lang="en">Basile F., Chiacchio P., Gerbasio D., “On the Implementation of Industrial Automation Systems Based on PLC”, IEEE Transactions on Automation Science and Engineering, 10:4 (2012), 990–1003.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Travis J., Kring J., LabVIEW for Everyone: Graphical Programming Made Easy and Fun, Third Edition, Prentice Hall PTR, Upper Saddle River, NJ, USA, 2006.</mixed-citation><mixed-citation xml:lang="en">Travis J., Kring J., LabVIEW for Everyone: Graphical Programming Made Easy and Fun, Third Edition, Prentice Hall PTR, Upper Saddle River, NJ, USA, 2006.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Zyubin V., “Using Process-Oriented Programming in LabVIEW”, Proceedings of the Second IASTED International Multi-Conference on ”Automation, Control, and Information technology“: Control, Diagnostics, and Automation. Novosibirsk, 2010, 35–41.</mixed-citation><mixed-citation xml:lang="en">Zyubin V., “Using Process-Oriented Programming in LabVIEW”, Proceedings of the Second IASTED International Multi-Conference on ”Automation, Control, and Information technology“: Control, Diagnostics, and Automation. Novosibirsk, 2010, 35–41.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Buxton J. N., Randell B., Software Engineering Techniques: Report on a Conference Sponsored by the NATO Science Committee, NATO Science Committee, Brussels, Scientific Affairs Division, NATO, Rome, Italy, 1970.</mixed-citation><mixed-citation xml:lang="en">Buxton J. N., Randell B., Software Engineering Techniques: Report on a Conference Sponsored by the NATO Science Committee, NATO Science Committee, Brussels, Scientific Affairs Division, NATO, Rome, Italy, 1970.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Anureev I. S., Garanina N. O., Liakh T. V., Rozov A. S., Zyubin V. E., Gorlatch S., “TwoStep Deductive Verification of Control Software Using Reflex”, Preliminary Proceedings of A. P. Ershov Informatics Conference (PSI-19). Novosibirsk, Russia, Akademgorodok, Russia, July 2–5, 2019, 17–30.</mixed-citation><mixed-citation xml:lang="en">Anureev I. S., Garanina N. O., Liakh T. V., Rozov A. S., Zyubin V. E., Gorlatch S., “TwoStep Deductive Verification of Control Software Using Reflex”, Preliminary Proceedings of A. P. Ershov Informatics Conference (PSI-19). Novosibirsk, Russia, Akademgorodok, Russia, July 2–5, 2019, 17–30.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Anureev I. S., Garanina N. O., Liakh T. V., Rozov A. S., Schulte H., Zyubin V. E., “Towards Safe Cyber-Physical Systems: the Reflex Language and its Transformational Semantics”, 14th International Siberian Conference on Control and Communications (SIBCON). Tomsk State University of Control Systems and Radioelectronics, Tomsk, April 18-20, 2019, 1–6.</mixed-citation><mixed-citation xml:lang="en">Anureev I. S., Garanina N. O., Liakh T. V., Rozov A. S., Schulte H., Zyubin V. E., “Towards Safe Cyber-Physical Systems: the Reflex Language and its Transformational Semantics”, 14th International Siberian Conference on Control and Communications (SIBCON). Tomsk State University of Control Systems and Radioelectronics, Tomsk, April 18-20, 2019, 1–6.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Zyubin V. E., Liakh T. V., Rozov A. S., “Reflex Language: a Practical Notation for CyberPhysical Systems”, System Informatics, 12 (2018), 85–104.</mixed-citation><mixed-citation xml:lang="en">Zyubin V. E., Liakh T. V., Rozov A. S., “Reflex Language: a Practical Notation for CyberPhysical Systems”, System Informatics, 12 (2018), 85–104.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Norrish M., “C Formalised in HOL”, Ph.D. thesis. University of Cambridge, Technical Report, UCAM-CL-TR-453, 1998.</mixed-citation><mixed-citation xml:lang="en">Norrish M., “C Formalised in HOL”, Ph.D. thesis. University of Cambridge, Technical Report, UCAM-CL-TR-453, 1998.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Gurevich Y., Huggins J., “The Semantics of the C Programming Language”, International Workshop on Computer Science Logic. Lecture Notes in Computer Science, 702 (1992), 274–308.</mixed-citation><mixed-citation xml:lang="en">Gurevich Y., Huggins J., “The Semantics of the C Programming Language”, International Workshop on Computer Science Logic. Lecture Notes in Computer Science, 702 (1992), 274–308.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Blazy S., Leroy X., “Mechanized Semantics for the Clight Subset of the C Language”, Journal of Automated Reasoning, 43:3 (2009), 263–288.</mixed-citation><mixed-citation xml:lang="en">Blazy S., Leroy X., “Mechanized Semantics for the Clight Subset of the C Language”, Journal of Automated Reasoning, 43:3 (2009), 263–288.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Nepomniaschy V. A., Anureev I. S., Mikhailov I. N., Promsky A. V., “Towards Verification of C Programs. C-light Language and its Formal Semantics”, Programming and Computer Science, 28:6 (2002), 314–323.</mixed-citation><mixed-citation xml:lang="en">Nepomniaschy V. A., Anureev I. S., Mikhailov I. N., Promsky A. V., “Towards Verification of C Programs. C-light Language and its Formal Semantics”, Programming and Computer Science, 28:6 (2002), 314–323.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Ellison C., Rosu G., “An Executable Formal Semantics of C with Applications”, Proc. of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages, 47:1 (2012), 533–544.</mixed-citation><mixed-citation xml:lang="en">Ellison C., Rosu G., “An Executable Formal Semantics of C with Applications”, Proc. of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of Programming Languages, 47:1 (2012), 533–544.</mixed-citation></citation-alternatives></ref></ref-list><fn-group><fn fn-type="conflict"><p>The authors declare that there are no conflicts of interest present.</p></fn></fn-group></back></article>
