<?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-2017-6-743-754</article-id><article-id custom-type="elpub" pub-id-type="custom">mais-611</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>Invariant Elimination of Definite Iterations over Arrays in C Programs Verification</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-0002-2497-6484</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>Maryasov</surname><given-names>Ilya V.</given-names></name></name-alternatives><bio xml:lang="ru"><p>канд. физ.-мат. наук</p></bio><bio xml:lang="en"><p>PhD</p></bio><email xlink:type="simple">ivm@iis.nsk.su</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0003-1364-5281</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>Nepomniaschy</surname><given-names>Valery A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>канд. физ.-мат. наук</p></bio><bio xml:lang="en"><p>PhD</p></bio><email xlink:type="simple">vnep@iis.nsk.su</email><xref ref-type="aff" rid="aff-1"/></contrib><contrib contrib-type="author" corresp="yes"><contrib-id contrib-id-type="orcid">https://orcid.org/0000-0002-9387-6735</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>Kondratyev</surname><given-names>Dmitry A.</given-names></name></name-alternatives><bio xml:lang="ru"><p>аспирант</p></bio><bio xml:lang="en"><p>postgraduate student</p></bio><email xlink:type="simple">apple-66@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>A. P. Ershov Institute of Informatics Systems SB RAS</institution><country>Russian Federation</country></aff></aff-alternatives><pub-date pub-type="collection"><year>2017</year></pub-date><pub-date pub-type="epub"><day>18</day><month>12</month><year>2017</year></pub-date><volume>24</volume><issue>6</issue><fpage>743</fpage><lpage>745</lpage><permissions><copyright-statement>Copyright &amp;#x00A9; Марьясов И.В., Непомнящий В.А., Кондратьев Д.А., 2017</copyright-statement><copyright-year>2017</copyright-year><copyright-holder xml:lang="ru">Марьясов И.В., Непомнящий В.А., Кондратьев Д.А.</copyright-holder><copyright-holder xml:lang="en">Maryasov I.V., Nepomniaschy V.A., Kondratyev D.A.</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/611">https://www.mais-journal.ru/jour/article/view/611</self-uri><abstract><p>Данная работа представляет дальнейшее развитие метода верификации финитной итерации [<xref ref-type="bibr" rid="cit7">7</xref>]. Он расширяет метод смешанной аксиоматической семантики [<xref ref-type="bibr" rid="cit1">1</xref>], предложенный для верификации C-light программ. Это расширение включает метод верификации для финитной итерации над неизменяемыми массивами с выходом из цикла в C-light программах. Метод содержит правило вывода для итерации без инвариантов, которое использует специальную функцию, выражающую действие тела цикла. Данное правило было реализовано в генераторе условий корректности, являющемся частью нашей системы верификации C-light программ. Для доказательства порождённых условий корректности применяется метод математической индукции, вызывающий сложности у SMT-решателей. В нашей системе верификации на стадии доказательства используется SMT-решатель CVC4. Для преодоления упомянутой трудности применяется стратегия переписывания условий корректности. Для доказательства условий корректности предложен метод, основанный на расширении теории новыми теоремами. Рассмотрен пример, иллюстрирующий применение данных методов. Статья публикуется в авторской редакции.</p><p> </p></abstract><trans-abstract xml:lang="en"><p>This work represents the further development of the method for definite iteration verification [<xref ref-type="bibr" rid="cit7">7</xref>]. It extends the mixed axiomatic semantics method [<xref ref-type="bibr" rid="cit1">1</xref>] suggested for C-light program verification. This extension includes a verification method for definite iteration over unchangeable arrays with a loop exit in C-light programs. The method includes an inference rule for the iteration without invariants, which uses a special function that expresses loop body. This rule was implemented in verification conditions generator, which is the part of our C-light verification system. To prove generated verification conditions an induction is applied which is a challenge for SMT-solvers. At proof stage the SMT-solver CVC4 is used in our verification system. To overcome mentioned difficulty a rewriting strategy for verification conditions is suggested. A method based on theory extension by new theorems to prove verification conditions is suggested. An example, which illustrates the application of these methods, is considered. The article is published in the authors’ wording.</p><p> </p></trans-abstract><kwd-group xml:lang="ru"><kwd>C-light</kwd><kwd>Си</kwd><kwd>инварианты циклов</kwd><kwd>смешанная аксиоматическая семантика</kwd><kwd>финитная итерация</kwd><kwd>массивы</kwd><kwd>CVC4</kwd><kwd>спецификация</kwd><kwd>верификация</kwd><kwd>логика Хоара</kwd></kwd-group><kwd-group xml:lang="en"><kwd>C-light</kwd><kwd>loop invariants</kwd><kwd>mixed axiomatic semantics</kwd><kwd>definite iteration</kwd><kwd>arrays</kwd><kwd>CVC4</kwd><kwd>specification</kwd><kwd>verification</kwd><kwd>Hoare logic</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">I. S. Anureev, I. V. Maryasov, V. A. Nepomniaschy, “C-programs Veriﬁcation Based on Mixed Axiomatic Semantics”, Automatic Control and Computer Sciences, 45:7 (2011), 485–500.</mixed-citation><mixed-citation xml:lang="en">I. S. Anureev, I. V. Maryasov, V. A. Nepomniaschy, “C-programs Veriﬁcation Based on Mixed Axiomatic Semantics”, Automatic Control and Computer Sciences, 45:7 (2011), 485–500.</mixed-citation></citation-alternatives></ref><ref id="cit2"><label>2</label><citation-alternatives><mixed-citation xml:lang="ru">C. Barrett, C. L., Conway, M. Deters, L. Hadarean, D. Jovanovi´c, T. King, A. Reynolds, C. Tinelli, “CVC4”, 23rd Int. Conf. CAV, Lecture Notes in Computer Science, 6806 (2011), 171–177.</mixed-citation><mixed-citation xml:lang="en">C. Barrett, C. L., Conway, M. Deters, L. Hadarean, D. Jovanovi´c, T. King, A. Reynolds, C. Tinelli, “CVC4”, 23rd Int. Conf. CAV, Lecture Notes in Computer Science, 6806 (2011), 171–177.</mixed-citation></citation-alternatives></ref><ref id="cit3"><label>3</label><citation-alternatives><mixed-citation xml:lang="ru">E. Cohen, M. Dahlweid, M. Hillebrand, D. Leinenbach, M. Moskal, T. Santen, W. Schulte,S. Tobies, “VCC: A Practical System for Verifying Concurrent C”, 22nd Int. Conf.TPHOLs, Lecture Notes in Computer Science, 5674 (2009), 23–42.</mixed-citation><mixed-citation xml:lang="en">E. Cohen, M. Dahlweid, M. Hillebrand, D. Leinenbach, M. Moskal, T. Santen, W. Schulte,S. Tobies, “VCC: A Practical System for Verifying Concurrent C”, 22nd Int. Conf.TPHOLs, Lecture Notes in Computer Science, 5674 (2009), 23–42.</mixed-citation></citation-alternatives></ref><ref id="cit4"><label>4</label><citation-alternatives><mixed-citation xml:lang="ru">J.-C. Filli˄atre, C. March´e, “Multi-prover Veriﬁcation of C Programs”, 6th ICFEM, Lecture Notes in Computer Science, 3308 (2004), 15–29.</mixed-citation><mixed-citation xml:lang="en">J.-C. Filli˄atre, C. March´e, “Multi-prover Veriﬁcation of C Programs”, 6th ICFEM, Lecture Notes in Computer Science, 3308 (2004), 15–29.</mixed-citation></citation-alternatives></ref><ref id="cit5"><label>5</label><citation-alternatives><mixed-citation xml:lang="ru">D. A. Kondratyev, “The Extension of the MetaVCG Approach by Semantic Mark-up Concept”, Int. Workshop-conf. ”Tools &amp; Methods of Program Analysis”, St. Petersburg, 2015, 107–118.</mixed-citation><mixed-citation xml:lang="en">D. A. Kondratyev, “The Extension of the MetaVCG Approach by Semantic Mark-up Concept”, Int. Workshop-conf. ”Tools &amp; Methods of Program Analysis”, St. Petersburg, 2015, 107–118.</mixed-citation></citation-alternatives></ref><ref id="cit6"><label>6</label><citation-alternatives><mixed-citation xml:lang="ru">K. R. M. Leino, “Automating Induction with an SMT Solver”, 13th Int. Conf. VMCAI, Lecture Notes in Computer Science, 7148 (2012), 315–331.</mixed-citation><mixed-citation xml:lang="en">K. R. M. Leino, “Automating Induction with an SMT Solver”, 13th Int. Conf. VMCAI, Lecture Notes in Computer Science, 7148 (2012), 315–331.</mixed-citation></citation-alternatives></ref><ref id="cit7"><label>7</label><citation-alternatives><mixed-citation xml:lang="ru">I. V. Maryasov, V. A. Nepomniaschy, “Loop Invariants Elimination for Deﬁnite Iterations over Unchangeable Data Structures in C Programs”, Modeling and Analysis of Information Systems, 22:6 (2015), 773–782.</mixed-citation><mixed-citation xml:lang="en">I. V. Maryasov, V. A. Nepomniaschy, “Loop Invariants Elimination for Deﬁnite Iterations over Unchangeable Data Structures in C Programs”, Modeling and Analysis of Information Systems, 22:6 (2015), 773–782.</mixed-citation></citation-alternatives></ref><ref id="cit8"><label>8</label><citation-alternatives><mixed-citation xml:lang="ru">I. V. Maryasov, V. A. Nepomniaschy, D. A. Kondratyev, “Veriﬁcation of Deﬁnite Iteration over Arrays with a Loop Exit in C Programs”, System Informatics, 2017, š 10, 57–66.</mixed-citation><mixed-citation xml:lang="en">I. V. Maryasov, V. A. Nepomniaschy, D. A. Kondratyev, “Veriﬁcation of Deﬁnite Iteration over Arrays with a Loop Exit in C Programs”, System Informatics, 2017, š 10, 57–66.</mixed-citation></citation-alternatives></ref><ref id="cit9"><label>9</label><citation-alternatives><mixed-citation xml:lang="ru">I. V. Maryasov, V. A. Nepomniaschy, A. V. Promsky, D. A. Kondratyev, “Automatic C Program Veriﬁcation Based on Mixed Axiomatic Semantics”, Automatic Control and Computer Sciences, 48:7 (2014), 407–414.</mixed-citation><mixed-citation xml:lang="en">I. V. Maryasov, V. A. Nepomniaschy, A. V. Promsky, D. A. Kondratyev, “Automatic C Program Veriﬁcation Based on Mixed Axiomatic Semantics”, Automatic Control and Computer Sciences, 48:7 (2014), 407–414.</mixed-citation></citation-alternatives></ref><ref id="cit10"><label>10</label><citation-alternatives><mixed-citation xml:lang="ru">M. Moriconi, R. L. Schwarts, “Automatic Construction of Veriﬁcation Condition Generators From Hoare Logics”, Automata, Languages and Programming, Lecture Notes in Computer Science, 115 (1981), 363–377.</mixed-citation><mixed-citation xml:lang="en">M. Moriconi, R. L. Schwarts, “Automatic Construction of Veriﬁcation Condition Generators From Hoare Logics”, Automata, Languages and Programming, Lecture Notes in Computer Science, 115 (1981), 363–377.</mixed-citation></citation-alternatives></ref><ref id="cit11"><label>11</label><citation-alternatives><mixed-citation xml:lang="ru">V. A. Nepomniaschy, “Veriﬁcation of Deﬁnite Iteration over Hierarchical Data Structures”, FASE/ ETAPS, Lecture Notes in Computer Science, 1577 (1999), 176–187.</mixed-citation><mixed-citation xml:lang="en">V. A. Nepomniaschy, “Veriﬁcation of Deﬁnite Iteration over Hierarchical Data Structures”, FASE/ ETAPS, Lecture Notes in Computer Science, 1577 (1999), 176–187.</mixed-citation></citation-alternatives></ref><ref id="cit12"><label>12</label><citation-alternatives><mixed-citation xml:lang="ru">A. Reynolds, V. Kuncak, “Induction for SMT solvers”, 16th Int. Conf. VMCAI, Lecture Notes in Computer Science, 8931 (2015), 80–98.</mixed-citation><mixed-citation xml:lang="en">A. Reynolds, V. Kuncak, “Induction for SMT solvers”, 16th Int. Conf. VMCAI, Lecture Notes in Computer Science, 8931 (2015), 80–98.</mixed-citation></citation-alternatives></ref><ref id="cit13"><label>13</label><citation-alternatives><mixed-citation xml:lang="ru">T. Tuerk, “Local Reasoning about While-Loops”, VSTTE, 2010, 29–39.</mixed-citation><mixed-citation xml:lang="en">T. Tuerk, “Local Reasoning about While-Loops”, VSTTE, 2010, 29–39.</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>
