Abstract

The development of the C-light project led to the application of new formalisms and method implementations that facilitate the verification of C programs. The mixed axiomatic semantics provides a choice between simplified and general inference rules of verification conditions (VC) depending on the program objects and their properties. The LLVM infrastructure greatly simplifies the implementation of the analyzer and translator of C-light programs. The semantic labeling method proposed earlier can now be safely used in verification conditions during their proving. A program from well-known verification competition is considered in order to illustrate the applicability of the system.

Highlights

  • Ключевые слова: верификация, операционная семантика, аксиоматическая семантика, язык C, язык C-light, язык C-kernel, частичная корректность, ACSL, LLVM, Simplify

  • Оно может быть доказано с помощью Simplify с использованием только стандартной семантики выбора элементов массива

  • Ершова СО РАН, научный сотрудник; Кондратьев Дмитрий Александрович, Новосибирский государственный университет, студент

Read more

Summary

Введение

В настоящее время верификация C-программ является актуальной проблемой, поскольку язык C широко применяется в системном программировании. В действительности WHY это платформа, подходящая для верификации многих императивных языков. Однако трансляция в другой язык является определенным недостатком подхода, так как не представлено доказательство корректности такой трансляции (это же справедливо и для проекта WHY). Для верификации Clight программ ранее был предложен двухуровневый подход [3] и метод смешанной аксиоматической семантики [4]. На второй стадии генерируются условия корректности по правилам смешанной аксиоматической семантики. Были доказаны теоремы о корректности трансляции из C-light в Ckernel и о корректности смешанной аксиоматической семантики C-kernel [4]. Для преодоления этой проблемы используется метод смешанной аксиоматической семантики [4], который является комбинацией двухуровневого метода верификации C-программ и смешанной аксиоматической семантики языка C-kernel. 1 иллюстрирует схему системы верификации C-light программ. В противном случае пользователь должен исправить программу или ее спецификацию и повторить процесс верификации в системе

Трансляция из C-light в C-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