<?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-2015-4-578-589</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-274</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>Оригинальные статьи</subject></subj-group><subj-group subj-group-type="section-heading" xml:lang="en"><subject>Articles</subject></subj-group></article-categories><title-group><article-title>Автоматизация формальной верификации программ на языке Пифагор</article-title><trans-title-group xml:lang="en"><trans-title>Automation of Formal Veriﬁcation of Programs in the Pifagor Language</trans-title></trans-title-group></title-group><contrib-group><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Ушакова</surname><given-names>М. С.</given-names></name><name name-style="western" xml:lang="en"><surname>Ushakova</surname><given-names>M. S.</given-names></name></name-alternatives><bio xml:lang="ru"><p>аспирант</p><p>ул. Академика Киренского, 26, г. Красноярск, 660074 Россия</p></bio><bio xml:lang="en"><p> graduate student</p><p>26 Kirenskogo street, Krasnoyarsk, 660074, Russia</p></bio><email xlink:type="simple">ksv@akadem.ru</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><name-alternatives><name name-style="eastern" xml:lang="ru"><surname>Легалов</surname><given-names>А. И.</given-names></name><name name-style="western" xml:lang="en"><surname>Legalov</surname><given-names>A. I.</given-names></name></name-alternatives><bio xml:lang="ru"><p>д-р техн. наук, профессор, заведующий кафедрой вычислительной техники</p><p>ул. Академика Киренского, 26, г. Красноярск, 660074</p></bio><bio xml:lang="en"><p>PhD</p><p>26 Kirenskogo street, Krasnoyarsk, 660074, Russia</p></bio><email xlink:type="simple">legalov@mail.ru</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>Siberian Federal University, Institute of Space and Information Technology</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2015</year></pub-date><pub-date pub-type="epub"><day>20</day><month>08</month><year>2015</year></pub-date><volume>22</volume><issue>4</issue><fpage>578</fpage><lpage>589</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Ушакова М.С., Легалов А.И., 2015</copyright-statement><copyright-year>2015</copyright-year><copyright-holder xml:lang="ru">Ушакова М.С., Легалов А.И.</copyright-holder><copyright-holder xml:lang="en">Ushakova M.S., Legalov A.I.</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/274">https://www.mais-journal.ru/jour/article/view/274</self-uri><abstract><p>В связи с увеличением сложности программного обеспечения корректность программы всёчаще доказывается с помощью методов формальной верификации. Дедуктивный анализ на основе исчисления Хоара применим для произвольных языков программирования и допускает частичную автоматизацию процесса. Однако дедуктивный анализ не нашёл широкого применения для верификации параллельных программ из-за высокой сложности процесса. Использование функционально-потоковой парадигмы параллельного программирования позволяет снизить сложность доказательства. В работе рассматривается процесс доказательства корректности функционально-потоковых параллельных программ на языке Пифагор и предлагается архитектура инструментального средства для поддержки процесса доказательства. Процесс доказательства корректности программы представляется в виде дерева, каждый узел которого — информационный граф программы, в котором дуги размечены формулами на языке спецификации. Корнем дерева является информационный граф программы с предусловием и постусловием, которые описывают ограничения на входные переменные и условия корректности результата работы программы соответственно. Основные преобразования, применимые к информационному графу программы: разметка дуг, эквивалентное преобразование, расщепление, свертка программы. Посредством данных преобразований информационный граф модифицируется и, в конечном счете, сводится к набору формул на языке спецификации, истинность которых будет свидетельствовать о корректности программы. Предложена архитектура системы поддержки процесса доказательства, которая позволяет строить дерево доказательства. В системе выделено несколько основных модулей: «Модуль доказательства корректности программы», «Система управления библиотекой аксиом и теорем» и «Модуль анализа ошибок и выдачи информации об ошибках». Согласно описанной архитектуре, разработано инструментальное средство для поддержки формальной верификации, которая позволяет строить дерево доказательства. Описана основная функциональность реализации системы.</p></abstract><trans-abstract xml:lang="en"><p>Nowadays, due to software sophistication, programs correctness is more often proved by means of formal veriﬁcation. The method of deduction based on Hoare logic could be used for any programminglanguage and it has the capability of partial automation of the proof process. However, the method of deduction is not widely used for veriﬁcation of parallel programs because of high complexity of theprocess. The usage of the functional data-ﬂow paradigm of parallel programming allows to decrease the complexity of the proof process. In this article a proof process of correctness of functional data-ﬂow parallel programs in the Pifagor language is considered. The proof process of a program correctness is considered as a tree where each node is a program data-ﬂow graph, whose edges are marked with formulas in a speciﬁcation language. The tree root is the initial program data-ﬂow graph with a precondition and a postcondition, which describe restrictions on input variables and correctness conditions of the result of the program execution, respectively. Basic transformations of the data-ﬂow graph are edge marking, equivalent transformation, splitting, folding of the program. By means of these transformations the data-ﬂow graph is transformed and ﬁnally is reduced to a set of formulas in the speciﬁcation language. If all these formulas are identically true, the program is correct. Several modules is distinguished in the system: “Program correctness prover”, “Axioms and theorems library management system” and “Errors analysis and output of information about errors”. According to this architecture, the toolkit for supporting formal veriﬁcation was developed. The main functionality of the system implementation is considered.</p></trans-abstract><kwd-group xml:lang="ru"><kwd>функционально-потоковое параллельное программирование</kwd><kwd>язык программирования Пифагор</kwd><kwd>формальная верификация программ</kwd><kwd>инструментальные средства для поддержки формальной верификации</kwd></kwd-group><kwd-group xml:lang="en"><kwd>functional data-ﬂow parallel programming</kwd><kwd>Pifagor programming language</kwd><kwd>programs formal veriﬁcation</kwd><kwd>toolkit for supporting formal veriﬁcation</kwd></kwd-group></article-meta></front><back><ref-list><title>References</title><ref id="cit1"><label>1</label><citation-alternatives><mixed-citation xml:lang="ru">Nepomnyaschiy V. A., Ryakin O. M., Prikladnyie metodyi veriﬁkatsii programm, Radio i svyaz, Moscow, 1988, 255 pp., [in Russian].</mixed-citation><mixed-citation xml:lang="en">Nepomnyaschiy V. A., Ryakin O. M., Prikladnyie metodyi veriﬁkatsii programm, Radio i svyaz, Moscow, 1988, 255 pp., [in Russian].</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">Hoare C. A. R., “An Axiomatic Basis for Computer Programming”, Communications of the ACM, 10:12 (1969), 576–585.</mixed-citation><mixed-citation xml:lang="en">Hoare C. A. R., “An Axiomatic Basis for Computer Programming”, Communications of the ACM, 10:12 (1969), 576–585.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">Floyd R. W., “Assigning meaning to programs”, Mathematical Aspects of Computer Science, ed. J. T. Schwartz, 1967, 19–32.</mixed-citation><mixed-citation xml:lang="en">Floyd R. W., “Assigning meaning to programs”, Mathematical Aspects of Computer Science, ed. J. T. Schwartz, 1967, 19–32.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">Barnett M., Chang B. Y. E., Deline R., et al., “Boogie: A Modular Reusable Veriﬁer for Object-Oriented Programs”, LNCS, 4111, 2006, 364–387.</mixed-citation><mixed-citation xml:lang="en">Barnett M., Chang B. Y. E., Deline R., et al., “Boogie: A Modular Reusable Veriﬁer for Object-Oriented Programs”, LNCS, 4111, 2006, 364–387.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">Nepomniaschy V. A., Anureev I. S., Atuchin M. M., “C Program Veriﬁcation in SPECTRUM Multilanguage System”, Automatic Control and Computer Sciences, 45:7 (2011), 413–420.</mixed-citation><mixed-citation xml:lang="en">Nepomniaschy V. A., Anureev I. S., Atuchin M. M., “C Program Veriﬁcation in SPECTRUM Multilanguage System”, Automatic Control and Computer Sciences, 45:7 (2011), 413–420.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">Van den Berg J., Jacobs B., “The LOOP compiler for Java and JML”, LNCS, 2031, 2001, 299–312.</mixed-citation><mixed-citation xml:lang="en">Van den Berg J., Jacobs B., “The LOOP compiler for Java and JML”, LNCS, 2031, 2001, 299–312.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">Ahrendt W., Baar T., Beckert B., “The KeY Tool”, Software and System Modeling, 4:1 (2005), 32–54.</mixed-citation><mixed-citation xml:lang="en">Ahrendt W., Baar T., Beckert B., “The KeY Tool”, Software and System Modeling, 4:1 (2005), 32–54.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">Detlefs D., Nelson G., Saxe J. B., “Simplify: a theorem prover for program checking”, Journal of the ACM, 52:3 (2005), 365–473.</mixed-citation><mixed-citation xml:lang="en">Detlefs D., Nelson G., Saxe J. B., “Simplify: a theorem prover for program checking”, Journal of the ACM, 52:3 (2005), 365–473.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">Owre S., Rajan S., Rushby J. M., “PVS: Combining Speciﬁcation, Proof Checking, and Model Checking”, LNCS, 1102, 1996, 411–414.</mixed-citation><mixed-citation xml:lang="en">Owre S., Rajan S., Rushby J. M., “PVS: Combining Speciﬁcation, Proof Checking, and Model Checking”, LNCS, 1102, 1996, 411–414.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">Legalov A. I., “Funktsionalnyiy yazyik dlya sozdaniya arhitekturno-nezavisimyih parallelnyih programm”, Vyichislitelnyie tehnologii, 10:1 (2005), 71–89, [in Russian].</mixed-citation><mixed-citation xml:lang="en">Legalov A. I., “Funktsionalnyiy yazyik dlya sozdaniya arhitekturno-nezavisimyih parallelnyih programm”, Vyichislitelnyie tehnologii, 10:1 (2005), 71–89, [in Russian].</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">Legalov A. I., Kuzmin D. A., Kazakov F. A., “Na puti k perenosimyim parallelnyim programmam”, Otkryityie sistemyi, 5 (2003), 36–42, [in Russian].</mixed-citation><mixed-citation xml:lang="en">Legalov A. I., Kuzmin D. A., Kazakov F. A., “Na puti k perenosimyim parallelnyim programmam”, Otkryityie sistemyi, 5 (2003), 36–42, [in Russian].</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">Kropacheva M. S., Legalov A. I., “Formal Veriﬁcation of Programs in the Functional Data-Flow Parallel Language”, Automatic Control and Computer Sciences, 47:7 (2013), 373–384.</mixed-citation><mixed-citation xml:lang="en">Kropacheva M. S., Legalov A. I., “Formal Veriﬁcation of Programs in the Functional Data-Flow Parallel Language”, Automatic Control and Computer Sciences, 47:7 (2013), 373–384.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">Kropacheva M. S., Legalov A. I., “Formal Veriﬁcation of Programs in the Pifagor Language”, Parallel Computing Technologies (PaCT-2013), 12th International Conference (September 30 - October 4, 2013. Saint-Petersburg, Russia), LNCS, 7979, 2013, 80–89.</mixed-citation><mixed-citation xml:lang="en">Kropacheva M. S., Legalov A. I., “Formal Veriﬁcation of Programs in the Pifagor Language”, Parallel Computing Technologies (PaCT-2013), 12th International Conference (September 30 - October 4, 2013. Saint-Petersburg, Russia), LNCS, 7979, 2013, 80–89.</mixed-citation></citation-alternatives></ref><ref id="cit14"><label>14</label><citation-alternatives><mixed-citation xml:lang="ru">Kropacheva M. S., “Formalizatsiya semantiki funktsionalno-potokovogo yazyika parallelnogo programmirovaniya Pifagor”, Problemyi informatizatsii regiona (PIR-2011): Materialyi XII Vserossiyskoy nauchno-prakticheskoy konferentsii (Krasnoyarsk, 22 – 23 noyabrya 2011), Publishing of the Siberian Federal University, Krasnoyarsk, 2011, 144–148, [in Russian].</mixed-citation><mixed-citation xml:lang="en">Kropacheva M. S., “Formalizatsiya semantiki funktsionalno-potokovogo yazyika parallelnogo programmirovaniya Pifagor”, Problemyi informatizatsii regiona (PIR-2011): Materialyi XII Vserossiyskoy nauchno-prakticheskoy konferentsii (Krasnoyarsk, 22 – 23 noyabrya 2011), Publishing of the Siberian Federal University, Krasnoyarsk, 2011, 144–148, [in Russian].</mixed-citation></citation-alternatives></ref><ref id="cit15"><label>15</label><citation-alternatives><mixed-citation xml:lang="ru">The Seventeen Provers of the World, AI Systems, LNAI, 3600, ed. Wiedijk F., 2006, 169 pp.</mixed-citation><mixed-citation xml:lang="en">The Seventeen Provers of the World, AI Systems, LNAI, 3600, ed. Wiedijk F., 2006, 169 pp.</mixed-citation></citation-alternatives></ref><ref id="cit16"><label>16</label><citation-alternatives><mixed-citation xml:lang="ru">Gordon M., Melham T., Introduction to HOL: a theorem proving environment for higher order logic, Cambridge University Press, 1993.</mixed-citation><mixed-citation xml:lang="en">Gordon M., Melham T., Introduction to HOL: a theorem proving environment for higher order logic, Cambridge University Press, 1993.</mixed-citation></citation-alternatives></ref><ref id="cit17"><label>17</label><citation-alternatives><mixed-citation xml:lang="ru">Bertot Y., Casteran P., Interactive Theorem Proving and Program Development: Coq’Art: The Calculus of Inductive Constructions, Springer, 2004, 494 pp.</mixed-citation><mixed-citation xml:lang="en">Bertot Y., Casteran P., Interactive Theorem Proving and Program Development: Coq’Art: The Calculus of Inductive Constructions, Springer, 2004, 494 pp.</mixed-citation></citation-alternatives></ref><ref id="cit18"><label>18</label><citation-alternatives><mixed-citation xml:lang="ru">Nipkow T., Paulson L., Wenzel M., Isabelle/HOL — A Proof Assistant for Higher-Order Logic, LNCS, 2283, 2002, 205 pp.</mixed-citation><mixed-citation xml:lang="en">Nipkow T., Paulson L., Wenzel M., Isabelle/HOL — A Proof Assistant for Higher-Order Logic, LNCS, 2283, 2002, 205 pp.</mixed-citation></citation-alternatives></ref><ref id="cit19"><label>19</label><citation-alternatives><mixed-citation xml:lang="ru">Legalov A. I., Savchenko G. V., Vasilev V. S., “Sobyitiynaya model vyichisleniy, podderzhivayuschaya vyipolnenie funktsionalno-potokovyih parallelnyih programm”, Sistemyi. Metodyi. Tehnologii, 1:13 (2012), 113–119, [in Russian].</mixed-citation><mixed-citation xml:lang="en">Legalov A. I., Savchenko G. V., Vasilev V. S., “Sobyitiynaya model vyichisleniy, podderzhivayuschaya vyipolnenie funktsionalno-potokovyih parallelnyih programm”, Sistemyi. Metodyi. Tehnologii, 1:13 (2012), 113–119, [in Russian].</mixed-citation></citation-alternatives></ref><ref id="cit20"><label>20</label><citation-alternatives><mixed-citation xml:lang="ru">Matkovskiy I. V., “Parallelnaya sobyitiynaya mashina dlya funktsionalno-potokovogo yazyika “Pifagor””, Informatsionnyie i matematicheskie tehnologii v nauke i upravlenii: Sbornik trudov XVVII Baykalskoy Vserossiyskoy konferentsii s mezhdunarodnyim uchastiem (Irkutsk – Baykal, 30 iyunya – 9 iyulya 2012), 2, Publishing of the Melentiev Energy Systems Institute of Siberian Branch of the Russian Academy of Sciences, Irkutsk, 2012, 186–193, [in Russian]</mixed-citation><mixed-citation xml:lang="en">Matkovskiy I. V., “Parallelnaya sobyitiynaya mashina dlya funktsionalno-potokovogo yazyika “Pifagor””, Informatsionnyie i matematicheskie tehnologii v nauke i upravlenii: Sbornik trudov XVVII Baykalskoy Vserossiyskoy konferentsii s mezhdunarodnyim uchastiem (Irkutsk – Baykal, 30 iyunya – 9 iyulya 2012), 2, Publishing of the Melentiev Energy Systems Institute of Siberian Branch of the Russian Academy of Sciences, Irkutsk, 2012, 186–193, [in Russian]</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>
