Abstract

The C-lightVer system is developed in IIS SB RAS for C-program deductive verification. C-kernel is an intermediate verification language in this system. Cloud parallel programming system (CPPS) is also developed in IIS SB RAS. Cloud Sisal is an input language of CPPS. The main feature of CPPS is implicit parallel execution based on automatic parallelization of Cloud Sisal loops. Cloud-Sisal-kernel is an intermediate verification language in the CPPS system. Our goal is automatic parallelization of such a superset of C that allows implementing automatic verification. Our solution is such a superset of C-kernel as C-Sisal-kernel. The first result presented in this paper is an extension of C-kernel by Cloud-Sisal-kernel loops. We have obtained the C-Sisal-kernel language. The second result is an extension of C-kernel axiomatic semantics by inference rule for Cloud-Sisal-kernel loops. The paper also presents our approach to the problem of deductive verification automation in the case of finite iterations over data structures. This kind of loops is referred to as definite iterations. Our solution is a composition of symbolic method of verification of definite iterations, verification condition metageneration and mixed axiomatic semantics method. Symbolic method of verification of definite iterations allows defining inference rules for these loops without invariants. Symbolic replacement of definite iterations by recursive functions is the base of this method. Obtained verification conditions with applications of recursive functions correspond to logical base of ACL2 prover. We use ACL2 system based on computable recursive functions. Verification condition metageneration allows simplifying implementation of new inference rules in a verification system. The use of mixed axiomatic semantics results to simpler verification conditions in some cases.

Highlights

  • Язык C-light и язык C-kernelВходным языком системы C-lightVer является язык C-light [10].

  • Этот язык является представительным подмножеством языка C.

  • Для языка C-light была разработана операционная семантика.

Read more

Summary

Язык C-light и язык C-kernel

Входным языком системы C-lightVer является язык C-light [10]. Этот язык является представительным подмножеством языка C. Для языка C-light была разработана операционная семантика. Является некоторым значением), то отображение ( , , ) отличается от заменой пары ). Если не принадлежит области определения , тогда отображение ( , , ) отличается от добавлением пары Язык C-kernel является очень ограниченным подмножеством языка C-light [11]. Трансляция из C-light в C-kernel является первой стадией исполнения системы C-lightVer. Эта трансляция основана на наборе правил. Правила трансляции выносят сложные подвыражения (не переменные и константы) из выражений и операторов, используя задание вспомогательных переменных со значениями этих подвыражений. Так как язык C-kernel является подмножеством языка C-light, то его операционная семантика является той же самой, что и семантика языка C-light. УК полученной C-kernel программы генерируются на втором этапе исполнения системы C-lightVer

Метагенератор условий корректности
Символический метод верификации финитных итераций
Метод смешанной аксиоматической семантики
Стратегии автоматизации доказательства УК
Краткое описание языка Cloud-Sisal-kernel
Выражения замещения элементов массивов
Семантика языка Cloud-Sisal-kernel
Трансляция базовых конструкций языка Cloud-Sisal-kernel на язык ACL
Трансляция циклов Cloud-Sisal-kernel на язык ACL
Трансляция выражений замещения элементов массивов на язык ACL
Аксиоматическая семантика языка Cloud-Sisal-kernel
Расширение языка C-kernel циклическими выражениями языка Cloud-Sisal-kernel
Произведение элементов матрицы
Изменение знака первого отрицательного элемента массива на противоположный
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call