Rozbalování smyček programů v nástroji 2LS
Program Loop Unwinding in the 2LS Framework

Author
Advisor
Malík, ViktorReferee
Vojnar, TomášGrade
AAltmetrics
Metadata
Show full item recordAbstract
Cílem této práce je navrhnout vylepšený mechanismus rozbalování smyček pro analyzátor 2LS. 2LS je nástroj pro statickou analýzu C programů založený na usuzování o programech pomocí SMT solveru. Kombinuje několik běžných verifikačních technik do algoritmu zvaného k I k I. Jednou z klíčových součástí tohoto algoritmu je rozbalování smyček programu. Současné řešení bohužel neumožňuje správně rozbalovat smyčky obsahující operace s dynamicky alokovanou pamětí. Námi navrhované řešení je založeno na rozbalování smyček v GOTO programu namísto SSA formy, díky čemuž je možné správně pracovat s dynamickými objekty a operacemi s nimi. Navržené řešení bylo implementováno v nástroji 2LS a naše experimenty na sadě testů z mezinárodní soutěže ve verifikaci software (SV-COMP) ukazují, že zvyšuje korektnost analýzy programů pracujících s dynamickými objekty. The goal of this work is to propose an improved unwinding mechanism for the 2LS formal verification tool. 2LS is a static analysis framework for C programs based on reasoning about programs using an SMT solver. It combines multiple common verification techniques into an algorithm called k I k I. One of the crucial parts of the algorithm is loop unwinding. Unfortunately, the existing solution does not correctly support unwinding of loops containing operations with dynamically allocated memory. Our proposed solution is based on unwinding loops in a GOTO program rather than the SSA form, making it possible to correctly handle dynamic objects and operations over them. The proposed solution has been implemented in the 2LS framework and our experiments on a set of benchmarks from the International Competition on Software Verification (SV-COMP) show that it improves soundness of analysis of programs working with dynamic objects.
Keywords
analýza programů, formální verifikace, statická analýza, nástroj 2LS, rozbalování smyček, k -indukce, bounded model checking, SSA forma, GOTO programy, dynamická paměť, program analysis, formal verification, static analysis, 2LS Framework, loop unwinding, k -induction, bounded model checking, SSA form, GOTO programs, dynamic memoryLanguage
angličtina (English)Study brunch
Informační technologieComposition of Committee
prof. Ing. Tomáš Vojnar, Ph.D. (předseda) doc. Ing. Ondřej Ryšavý, Ph.D. (místopředseda) Ing. František Grézl, Ph.D. (člen) Ing. Tomáš Martínek, Ph.D. (člen) Dr. Ing. Petr Peringer (člen)Date of defence
2022-06-13Process of defence
Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm A. Otázky u obhajoby: Metoda kIkI implementovaná v nástroji 2LS staví, jak sám uvádíte, mj. na abstraktní interpretaci. Jednou z důležitých komponent abstraktní interpretace je také operátor pro tzv. "widening". Je tento operátor v 2LS rovněž nějakým způsobem využit?Result of the defence
práce byla úspěšně obhájenaPersistent identifier
http://hdl.handle.net/11012/207322Source
NEČAS, F. Rozbalování smyček programů v nástroji 2LS [online]. Brno: Vysoké učení technické v Brně. Fakulta informačních technologií. 2022.Collections
- 2022 [309]