Ученые из Университета Манчестера предлагают ESBMC-Python: первую BMC-проверку кода на Python для формальной верификации программ на Python

 Researchers at the University of Manchester Proposes ESBMC-Python: The First BMC-based Python-code Verifier for Formal Verification of Python Programs

“`html

Формальная верификация Python-программ: практическое применение и ценность

Формальная верификация является ключевым аспектом в инженерии программного обеспечения для обеспечения корректности программы с помощью математического доказательства. Одним из широко используемых методов для этой цели является ограниченная модельная проверка (BMC), которая включает в себя проверку корректности программы в заданных пределах. Python, язык программирования, предпочтительный из-за своей простоты и обширных библиотек, особенно в областях веб-разработки, обработки изображений и искусственного интеллекта, представляет уникальные вызовы для формальной верификации. Это в значительной степени связано с его динамическим характером и отсутствием явной информации о типах, которая является необходимой для традиционных инструментов верификации.

Проблема верификации Python-программ

Верификация программ на Python сопряжена с определенными трудностями из-за того, что Python определяет информацию о типах во время выполнения. Эта динамическая типизация затрудняет статическим анализаторам установление корректности программы. Без явных аннотаций типов обеспечение безопасности и корректности Python-программ, особенно в системах с критическими требованиями безопасности, становится сложной задачей. Эта проблема усугубляется в больших кодовых базах или приложениях, где безопасность и надежность имеют первостепенное значение.

ESBMC-Python: практическое решение

Исследователи из Университета Манчестера и TPV Technology представили инновационный инструмент ESBMC-Python, разработанный для верификации Python-программ. ESBMC-Python использует фреймворк ESBMC, эффективный ограниченный модельный проверщик на основе SMT, для формальной верификации Python-кода. Этот инструмент преобразует Python-программы в абстрактные синтаксические деревья (AST), затем аннотирует и форматирует их для интеграции в BMC-процесс. Это преобразование позволяет верифицировать Python-программы, преодолевая трудности, вызванные динамической типизацией Python.

Процесс, используемый ESBMC-Python, начинается с разбора исходного кода Python для создания AST. Затем этот AST аннотируется информацией о типах, которая является критической для последующих шагов. Аннотированное AST переводится в промежуточное представление, которое может обрабатывать фреймворк ESBMC. Это преобразование включает перевод выражений и операторов Python в символы, соответствующие структуре проверки модели ESBMC. Инструмент эффективно обрабатывает динамические особенности Python, преобразуя их в формат, подходящий для BMC-процесса, что позволяет проверять свойства, такие как корректность типов и логическая согласованность.

Практическая ценность ESBMC-Python

Производительность ESBMC-Python была тщательно оценена с использованием набора тестов, включающего 85 Python-программ. Результаты оценки были впечатляющими, среднее время верификации составило от 24,5 до 49,1 миллисекунд, а использование памяти – от 14,5 до 26,4 мегабайт. Эти показатели свидетельствуют о том, что ESBMC-Python эффективен и способен обрабатывать большие кодовые базы и обширные наборы программ за относительно короткие периоды.

Одним из значимых достижений ESBMC-Python стало обнаружение критической ошибки деления на ноль в спецификации консенсуса Ethereum. Эта ошибка могла привести к значительным прерываниям в обслуживании и потенциальным уязвимостям безопасности в сети блокчейна Ethereum. Успешная идентификация и последующее исправление этой ошибки подчеркивают практическую ценность и эффективность ESBMC-Python в реальных приложениях.

Заключение

Способность ESBMC-Python идентифицировать критические ошибки, такие как проблема деления на ноль в спецификации консенсуса Ethereum, подчеркивает его практическую актуальность и надежность. Этот инструмент обеспечивает безопасность и корректность Python-программ и представляет ценный ориентир для будущих инструментов верификации. Исследовательская группа планирует расширить возможности ESBMC-Python, включив в него больше функций и улучшив алгоритм вывода типов для обработки сложных потоков программы.

Подробнее о работе исследователей можно узнать в этой статье.

Если вам нужны советы по внедрению ИИ, пишите нам на нашем Телеграм-канале. Следите за новостями о ИИ в нашем Телеграм-канале itinainews или в Twitter @itinairu45358.

Попробуйте AI Sales Bot – это ИИ-ассистент в продажах, который помогает отвечать на вопросы клиентов, генерировать контент для отдела продаж и снижать нагрузку на первую линию.

Узнайте, как ИИ может изменить ваши процессы с решениями от AI Lab itinai.ru – будущее уже здесь!

“`

Полезные ссылки: