Systematic study of variable roles and their use in software verification

Saved in:
Bibliographic Details
Title: Systematic study of variable roles and their use in software verification
Authors: Demyanova, Yulia
Contributors: Zuleger, Florian, TU Wien, Österreich
Publisher Information: Wien
Publication Year: 2020
Collection: TU Wien: reposiTUm
Subject Terms: Software verification, Code patterns, Datalog, Benchmarking, Program metrics, Heuristics
Description: A major challenge in software verification is choosing a suitable abstraction which yields a tractable yet still precise enough program model. However, automatically picking a suitable abstraction requires non-trivial insights and is usually implemented using heuristics. Though heuristics determine the efficiency of most verification tools, they are typically not formally described and hard-coded in the source code of tools. Furthermore, heuristics tight a verification tool to a restricted application domain. This causes another verification challenge - an optimal choice of a verifcation tool for a given task. We conjecture that the two challenges, namely automatically choosing program-specific abstraction and automatically picking an optimal tool for a verification task, can be solved by identifying in a program typical patterns of variable use. Examples of these patterns are bitvectors, counters, loop iterators, and so on. We formalise and study the concept of a variable role, which captures the implicit knowledge about these patterns. We identify most frequent variable roles in practical open source programs and define a framework for a formal specification of variable roles using Datalog. We explore the application of variable roles in software verification in two settings. First, we create a portfolio solver which chooses a tool for a given verification task, using variable-role-based program metrics. We evaluate our portfolio solver in the setting of the software verification competition SVCOMP. Second, we define a framework to systematically specify variable-rolebased heuristics to automatically generate program abstraction. We integrate our method in the model checker Eldarica to generate predicates for initial abstraction and to guide abstraction refinement through templates provided for Craig interpolation. We evaluate our approach on a subset of benchmarks from SV-COMP and verification benchmarks from the literature. ; 192
Document Type: thesis
File Description: xiii, 192 Seiten
Language: English
Relation: https://doi.org/10.34726/hss.2018.54905; http://hdl.handle.net/20.500.12708/3500; AC15012854; urn:nbn:at:at-ubtuw:1-109026
DOI: 10.34726/hss.2018.54905
Availability: https://doi.org/10.34726/hss.2018.54905
https://hdl.handle.net/20.500.12708/3500
Rights: open
Accession Number: edsbas.95BFE723
Database: BASE
Description
Abstract:A major challenge in software verification is choosing a suitable abstraction which yields a tractable yet still precise enough program model. However, automatically picking a suitable abstraction requires non-trivial insights and is usually implemented using heuristics. Though heuristics determine the efficiency of most verification tools, they are typically not formally described and hard-coded in the source code of tools. Furthermore, heuristics tight a verification tool to a restricted application domain. This causes another verification challenge - an optimal choice of a verifcation tool for a given task. We conjecture that the two challenges, namely automatically choosing program-specific abstraction and automatically picking an optimal tool for a verification task, can be solved by identifying in a program typical patterns of variable use. Examples of these patterns are bitvectors, counters, loop iterators, and so on. We formalise and study the concept of a variable role, which captures the implicit knowledge about these patterns. We identify most frequent variable roles in practical open source programs and define a framework for a formal specification of variable roles using Datalog. We explore the application of variable roles in software verification in two settings. First, we create a portfolio solver which chooses a tool for a given verification task, using variable-role-based program metrics. We evaluate our portfolio solver in the setting of the software verification competition SVCOMP. Second, we define a framework to systematically specify variable-rolebased heuristics to automatically generate program abstraction. We integrate our method in the model checker Eldarica to generate predicates for initial abstraction and to guide abstraction refinement through templates provided for Craig interpolation. We evaluate our approach on a subset of benchmarks from SV-COMP and verification benchmarks from the literature. ; 192
DOI:10.34726/hss.2018.54905