<?xml version="1.0" encoding="UTF-8"?>
<article article-type="research-article" dtd-version="1.3" xml:lang="ru" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://metafora.rcsi.science/xsd_files/journal3.xsd">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">moitvivt</journal-id>
      <journal-title-group>
        <journal-title xml:lang="ru">Моделирование, оптимизация и информационные технологии</journal-title>
        <trans-title-group xml:lang="en">
          <trans-title>Modeling, Optimization and Information Technology</trans-title>
        </trans-title-group>
      </journal-title-group>
      <issn pub-type="epub">2310-6018</issn>
      <publisher>
        <publisher-name>Издательство</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.26102/2310-6018/2020.29.1.005</article-id>
      <article-id pub-id-type="custom" custom-type="elpub">773</article-id>
      <title-group>
        <article-title xml:lang="ru">Синтаксис и операционная семантика целевого языка в реализации технологии «предположи и допусти» при объединении циклов для верификации программ</article-title>
        <trans-title-group xml:lang="en">
          <trans-title>The syntax and operational semantics of the target language in the implementing the «assume and allow» technology when combining loops for program verification</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>Lysov</surname>
              <given-names>Dmitry Vyacheslavovich</given-names>
            </name>
          </name-alternatives>
          <email>csit@bk.ru</email>
          <xref ref-type="aff">aff-1</xref>
        </contrib>
      </contrib-group>
      <aff-alternatives id="aff-1">
        <aff xml:lang="ru">Воронежский государственный технический университет</aff>
        <aff xml:lang="en">Voronezh State Technical University</aff>
      </aff-alternatives>
      <pub-date pub-type="epub">
        <day>01</day>
        <month>01</month>
        <year>2026</year>
      </pub-date>
      <volume>1</volume>
      <issue>1</issue>
      <elocation-id>10.26102/2310-6018/2020.29.1.005</elocation-id>
      <permissions>
        <copyright-statement>Copyright © Авторы, 2026</copyright-statement>
        <copyright-year>2026</copyright-year>
        <license license-type="creative-commons-attribution" xlink:href="https://creativecommons.org/licenses/by/4.0/">
          <license-p>This work is licensed under a Creative Commons Attribution 4.0 International License</license-p>
        </license>
      </permissions>
      <self-uri xlink:href="https://moitvivt.ru/ru/journal/article?id=773"/>
      <abstract xml:lang="ru">
        <p>Loop Fusion – преобразование программы для объединения нескольких&#13;
последовательных петель в одну – было изучено в основном для оптимизации компилятора. В&#13;
работе предлагается новая стратегия объединения циклов, которая может объединить любые&#13;
петли, даже петли с зависимостью данных. Показано, что это полезно для программы проверки,&#13;
потому что может упростить инварианты цикла. Суть цикла слияния заключается в следующем:&#13;
если состояние после первого цикла было известно, два тела цикла могут быть вычислены&#13;
одновременно, независимо от данных путем переименования переменных программы. Loop&#13;
Fusion создает программу, которая угадывает неизвестное состояние после первого цикла,&#13;
недетерминированно выполняет слитый цикл, в котором переменные переименовываются,&#13;
сравнивает угаданное состояние и состояние, фактически вычисленное слитой петлей, и, если&#13;
они не совпадают, расходится. Последние два шага, сравнение и расхождение, имеют решающее&#13;
значение для сохранения частичной корректности. Подход «предположи и допусти» назван так&#13;
потому, что в дополнение к первому шагу (предположи), последние два шага могут быть&#13;
выражены псевдоинструкцией «допусти», которая используется в проверке программы.</p>
      </abstract>
      <trans-abstract xml:lang="en">
        <p>Loop Fusion – Converting a program to combine multiple consecutive loops into one – has&#13;
been studied mainly for compiler optimization. The paper proposes a new strategy for combining loops,&#13;
which can combine any loops even loops with data dependency. It is shown that this is useful for the&#13;
verification program, because it can simplify cycle invariants. The essence of the merge cycle is as&#13;
follows: if the state after the first cycle was known, two bodies of the cycle can be calculated&#13;
simultaneously, regardless of the data by renaming the program variables. Loop Fusion creates a&#13;
program that guesses an unknown state after the first cycle, non-deterministically executes a merged&#13;
cycle in which variables are renamed, compares the guessed state and the state actually calculated by&#13;
the merged loop, and, if they do not match, diverges. The last two steps of the comparison and the discrepancy are crucial for maintaining partial correctness. The «suppose and allow» approach is so&#13;
named because, in addition to the first step (suppose), the last two steps can be expressed by the «allow»&#13;
pseudo-instruction used in program verification.</p>
      </trans-abstract>
      <kwd-group xml:lang="ru">
        <kwd>преобразование циклов</kwd>
        <kwd>верификация программы</kwd>
        <kwd>инварианты циклов</kwd>
        <kwd>операционная семантика</kwd>
        <kwd>целевой язык</kwd>
      </kwd-group>
      <kwd-group xml:lang="en">
        <kwd>cycle transformation</kwd>
        <kwd>program verification</kwd>
        <kwd>cycle invariants</kwd>
        <kwd>operational semantics</kwd>
        <kwd>target language</kwd>
      </kwd-group>
      <funding-group>
        <funding-statement xml:lang="ru">Исследование выполнено без спонсорской поддержки.</funding-statement>
        <funding-statement xml:lang="en">The study was performed without external funding.</funding-statement>
      </funding-group>
    </article-meta>
  </front>
  <back>
    <ref-list>
      <title>References</title>
      <ref id="cit1">
        <label>1</label>
        <mixed-citation xml:lang="ru">Бэкон Д.Ф., Грэм С.Л., Шарп О.Дж. Преобразования компилятора для повышения производительности&#13;
Вычислительная техника. ACM Comput. Surv. 1994; 26 (4): 345-420.</mixed-citation>
      </ref>
      <ref id="cit2">
        <label>2</label>
        <mixed-citation xml:lang="ru">Бейер Д., Керемоглу М.Э. CPAchecker: инструмент для настраиваемой проверки программного обеспечения.&#13;
CAV 2011 (LNCS). Springer. 2011; 6806: 184-190.</mixed-citation>
      </ref>
      <ref id="cit3">
        <label>3</label>
        <mixed-citation xml:lang="ru">Коэн Э. Передача информации в вычислительных системах. ACM SIGOPS Operating&#13;
Systems Review. ACM. 1977; 11: 133-139.</mixed-citation>
      </ref>
      <ref id="cit4">
        <label>4</label>
        <mixed-citation xml:lang="ru">Ферранте Дж., Оттенштейн К.Дж., Уоррен Дж.Д. График зависимости программы и его использование в&#13;
оптимизации. ACM Trans. Program. Lang. Syst. 1987;9(3):319-349.</mixed-citation>
      </ref>
      <ref id="cit5">
        <label>5</label>
        <mixed-citation xml:lang="ru">&#13;
Гогуэн Дж., Месегер Дж. Политики безопасности и модели безопасности. 1982 Симпозиум IEEE&#13;
по безопасности и конфиденциальности, Окленд, Калифорния, США. 1982: 11-20.</mixed-citation>
      </ref>
      <ref id="cit6">
        <label>6</label>
        <mixed-citation xml:lang="ru">Гурфинкель А., Кахсай Т., Комуравелли А., Навас Дж. А. Схема проверки SeaHorn.&#13;
CAV 2015 (LNCS), Том. 9206. Springer. 2015: 343-361.</mixed-citation>
      </ref>
      <ref id="cit7">
        <label>7</label>
        <mixed-citation xml:lang="ru">Ли П., Зданцевич С. Политика понижения статуса и непринужденное невмешательство. Proc. 32-го&#13;
Симпозиум ACM SIGPLAN-SIGACT по принципам языков программирования, POPL&#13;
2005 г., Лонг-Бич, Калифорния, США. 2005: 158-170.</mixed-citation>
      </ref>
      <ref id="cit8">
        <label>8</label>
        <mixed-citation xml:lang="ru">Маклин Дж. Модели безопасности и информационный поток. Симпозиум IEEE по&#13;
безопасности и конфиденциальности, Окленд, Калифорния, США. 1990: 180-189.</mixed-citation>
      </ref>
      <ref id="cit9">
        <label>9</label>
        <mixed-citation xml:lang="ru">Тераучи Т., Айкен А. Защищенный информационный поток как проблема безопасности. Статический анализ, 12th&#13;
Int. Symposium, SAS 2005, Лондон, Великобритания. 2005: 352-367.</mixed-citation>
      </ref>
      <ref id="cit10">
        <label>10</label>
        <mixed-citation xml:lang="ru">&#13;
Винскель Г. Формальная семантика языков программирования: Введение. Массачусетский технологический институт&#13;
Пресса. 1993 г.</mixed-citation>
      </ref>
      <ref id="cit11">
        <label>11</label>
        <mixed-citation xml:lang="ru">Barnett M., Chang B.-Y.E., DeLine R., Jacobs B., Leino K.R.M. Boogie: Модульный&#13;
многоразовый верификатор для объектно-ориентированных программ. FMCO 2005 (LNCS). 2005; 4111: 364-&#13;
387.</mixed-citation>
      </ref>
      <ref id="cit12">
        <label>12</label>
        <mixed-citation xml:lang="ru">Рейнольдс Дж.К. Логика разделения: логика для общих изменяемых структур данных.&#13;
Симпозиум IEEE по логике в компьютерных науках (LICS’02). 2002 г.</mixed-citation>
      </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>