Застосування солверів z3 в системі верифікації python–програм - Костирко Василь Ступанович; Костенко Анатолій Васильович; Плеша Михайло Іванович (Гельветика, 2023)
У роботі описана остання версія системи верифікації програм VerPro на мові Python. Для перевірки тотожної істин- ності умов верифікації вона доповнена застосуванням засобів популярної системи Z3 доведення теорем. Метою стат- ті є опис нових можливостей системи VerPro, які їй надали солвери Z3. Наукова новизна. Система VerPro є сучасною системою верифікації анотованих Python–програм, яка генерує умови коректності методом символьного виконання. VerPro надає користувачу сучасний діалоговий графічний віконний інтерфейс, побудований з використанням бібліотеки PyQt5. Спрощення цих умов базується на еквівалентних перетвореннях, які реалізує бібліотека ExprLib. ExprLib – це наша власна бібліотека, яка побудована на мові Python і не має інших залежностей. Бібліотека перетворює вирази у внутрішнє представлення, побудоване на базі класів мови Python. Реалізовані в системі VerPro еквівалентні перетворення часто можуть самі встановити тотожну істинність умов верифікації. Якщо ні, тоді такі умови VerPro передає системі до- ведення теорем Z3, яка або встановлює їх тотожню істинність, або будує контрприклад для гіпотези про тотожню істинність такої умови. Наявність контрприкладу свідчить про те, що анотація невірно описує функціональні власти- вості програми. Аналізуючи знайдений системою контрприклад, користувач може знайти причину некоректності і ви- правити програму і/або її анотацію. Система Z3 підключається до VerPro через програмний інтерфейс Z3py. Висновок. Ідея побудови контрприкладів в системах верифікації програм реалізована вперше. Cистема доведення теорем Z3 раніше в таких системах не застосовувалася. Система VerPro надає приклад вдалого використання сучасної системи доведення теорем не лише для встановлення коректності анотованої програми, але й для пошуку рішення при невдалій верифікації. Дальший розвиток системи передбачає типізацію значень символьних параметрів та побудову інваріантів.
Application of z3 solvers in the verification system for python programs
Інформаційні технології та суспільство, Випуск 1 (7), 2023
Keywords: верифікація програми; умова коректності; символьне виконання; контрприклад; солвер Z3