Abstract

As opposed to traditional testing, the deductive verification represents a formal way to examine the program correctness. But what about the correctness of the verification system itself? The theoretical foundations of Hoare’s logic were examined in classical works, and some soundness/completeness theorems are well-known. However, we practically are not aware of implementations of those theoretical methods which were subjected to anything more than testing. In other words, our ultimate goal is a verification system which can be self-applicable (at least partially). In our recent studies we addressed ourselves to the metageneration approach in order to make such a task more feasible.

Highlights

  • In our recent studies we addressed ourselves to the metageneration approach in order to make such a task more feasible

  • As opposed to traditional testing, the deductive verification represents a formal way to examine the program correctness

Read more

Summary

Введение

Ответ на вопрос о надежности системы верификации может состоять из двух частей: 1. Так как методы верификации основаны на математических концепциях (множества, отношения, исчисления и т.д.), их свойства можно формально доказывать. Помня о важности корректности системы, мы формально установили соответствующие свойства для всех этапов нашего подхода [6]. Хотя он реализован на C++ с помощью API компилятора Clang, значительная часть его функционала вкладывается в C-light, что делает его хорошим тестовым примером. Для метода были установлены полнота и непротиворечивость, что гарантирует корректность порождаемого генератора относительно исходной аксиоматической семантики. Примером здесь может служить разработанная в лаборатории система вывода для программ линейной алгебры. Правила этой системы способны заменять некоторые вложенные циклы (характерные для обработки матриц) на логические конструкции, работать с которыми проще, чем с обычными инвариантами циклов. Хотя она работает только при наличии в программе фрагмента swap(..), ее применение может радикально упростить доказательство. Другое достоинство этого подхода состоит в том, что он позволил абстрагироваться от API Clang и реализовать метагенератор на языке C-light. Это позволяет более полно проводить его верификацию, что и является основной целью

Метагенерация условий корректности
Предварительные определения
Нормальная форма правил
Общая форма правил и ее перевод в нормальную
Язык шаблонов
Реализация и верификация метагенератора
Реализация метагенератора
Примеры верифицированных фрагментов
Заключение
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