|
Эта публикация цитируется в 6 научных статьях (всего в 6 статьях)
Loop invariants elimination for definite iterations over unchangeable data structures in C programs
[Элиминация инвариантов циклов для финитной итерации над неизменяемыми структурами данных в Си программах]
I. V. Maryasov, V. A. Nepomniaschy A.P. Ershov Institute of Informatics Systems SB RAS,
Akademik Lavrentiev pr., 6, Novosibirsk, 630090, Russia
Аннотация:
Верификация С-программ является актуальной проблемой современного программирования. Для применения известных методов дедуктивной верификации необходимо аннотировать циклы посредством инвариантов, что во многих случаях является трудной задачей. В этой статье мы рассматриваем язык C-light, который является выразительным подмножеством языка C, соответствующего стандарту ISO. Для верификации C-light программ нами были предложены двухуровневый подход [19,20] и метод смешанной аксиоматической семантики [1,3,11]. На первой стадии этого подхода исходная C-light программа транслируется [17] в программу на языке C-kernel [19], который является подмножеством языка C-light. Теорема о корректности этой трансляции была доказана в [10,11]. По сравнению с C-light в языке C-kernel меньше операторов, что позволяет уменьшить число правил вывода при разработке аксиоматической семантики. На второй стадии этого подхода для программ на языке C-kernel порождаются условия корректности по правилам смешанной аксиоматической семантики [10,11], которая может содержать несколько правил вывода для одной и той же программной конструкции. В таких случаях правила вывода применяются однозначно в зависимости от контекста. Заметим, что во многих случаях использование смешанной аксиоматической семантики позволяет упростить условия корректности. В этой статье представлено расширение данного подхода, которое включает наш метод верификации для финитной итерации над неизменяемыми структурами данных без выхода из тела цикла в C-light программах. Данный метод содержит новое правило вывода для таких финитных итераций без инвариантов. Это правило было реализовано в генераторе условий корректности. На стадии доказательства используется SMT-решатель Z3 [12]. Рассмотрен пример, иллюстрирующий применение данного подхода.
Статья представляет собой расширенную версию доклада на VI Международном семинаре “Program Semantics, Specification and Verification: Theory and Applications”, Казань, 2015.
Статья публикуется в авторской редакции.
Ключевые слова:
Си, инварианты циклов, смешанная аксиоматическая семантика, финитная итерация, неизменяемые структуры данных, спецификация, верификация, логика Хоара.
Поступила в редакцию: 26.10.2015
Образец цитирования:
I. V. Maryasov, V. A. Nepomniaschy, “Loop invariants elimination for definite iterations over unchangeable data structures in C programs”, Модел. и анализ информ. систем, 22:6 (2015), 773–782
Образцы ссылок на эту страницу:
https://www.mathnet.ru/rus/mais473 https://www.mathnet.ru/rus/mais/v22/i6/p773
|
|