Eingereicht von Dipl.-Ing. Mathias Preiner, Bsc Angefertigt am Institut fu¨r Formale Mo- delle und Verifikation Erstbeurteiler Univ.-Prof. Dr. Armin Biere Zweitbeurteiler Univ.-Prof. Ph.D. Roderick Bloem Februar 2017 Lambdas, Arrays and Quantifiers Dissertation zur Erlangung des akademischen Grades Doktor der Technischen Wissenschaften im Doktoratsstudium der Technischen Wissenschaften JOHANNES KEPLER UNIVERSITA¨T LINZ Altenbergerstraße 69 4040 Linz, O¨sterreich www.jku.at DVR 0093696 Abstract SatisfiabilityModuloTheories(SMT)referstotheproblemofdecidingthesatis- fiability of a first-order formula with respect to one or more first-order theories. In many applications of hardware and software verification, SMT solvers are employed as back-end engine to solve complex verification tasks that usually combine multiple theories, such as the theory of fixed-size bit-vectors and the theory of arrays. This thesis presents several advances in the design and imple- mentation of theory solvers for the theory of arrays, uninterpreted functions and quantified bit-vectors. Weintroduceadecisionprocedurefornon-recursivenon-extensionalfirst-order lambda terms, which is implemented in our SMT solver Boolector to handle the theoryofarraysanduninterpretedfunctions. Wediscussvariousimplementation aspects and algorithms as well as the advantage of using lambda terms for array reasoning. We provide an extension of the lemmas on demand for lambdas approachtohandleextensionalarraysanddiscussanoptimizationthatimproves the overall performance of Boolector. We further investigate common array patterns in existing SMT benchmarks that can be represented by means of more compact and succinct lambda terms. We show that exploiting lambda terms for certain array patterns is beneficial for lemma generation since it allows us to produce stronger and more succinct lemmas, which improve the overall performance, particularly on instances from symbolic execution. Our results suggest that a more expressive theory of arrays might be desirable for users of SMT solvers in order to allow more succinct encodings of common array operations. We further propose a new approach for solving quantified SMT problems, with a particular focus on the theory of fixed-size bit-vectors. Our approach combines counterexample-guided quantifier instantiation with a syntax-guided synthesis approach to synthesize interpretations for Skolem functions and terms forquantifierinstantiations. Wediscussasimpleyeteffectiveapproachthatdoes not rely on heuristic quantifier instantiation techniques, which are commonly employed by current state-of-the-art SMT procedures for handling quantified formulas. Weshowthatourtechniquesarecompetitivecomparedtothestate-of- the-artinsolvingquantifiedbit-vectorsanddiscussextensionsandoptimizations that improve the overall performance of our approach. iii Zusammenfassung Das“SatisfiabilityModuloTheories(SMT)” ProblembeschäftigtsichmitderEr- füllbarkeit von Formeln in Prädikatenlogik erster Stufe unter Berücksichtigung einer oder mehrerer Theorien. In vielen Anwendungen im Bereich der Hardware und Software Verifikation werden SMT Prozeduren (auch SMT Solver genannt) alsBackendverwendetumkomplexeVerifikationsproblemezulösen,dieüblicher- weise mehrere Theorien kombinieren, wie z.B. die Theorie der Bitvektoren mit der Theorie der Arrays. Diese Dissertation beschäftigt sich mit Entscheidungs- prozedurenfürdieTheoriederArrayskombiniertmitnicht-interpretiertenFunk- tionen und für Bitvektoren in Kombination mit Quantoren. Wir stellen eine Entscheidungsprozedur für nicht-rekursive, nicht-extensionale Lambdaterme erster Stufe vor, welche in unserem SMT Solver Boolector für die Theorie der Arrays kombiniert mit nicht-interpretierten Funktionen zum Ein- satz kommt. Wir beschreiben unterschiedliche Implementierungsaspekte und Algorithmen und diskutieren die Vorteile von Lambdatermen in Bezug auf die Darstellung von Arrays. Zusätzlich stellen wir eine Erweiterung für unsere Entscheidungsprozedur vor, die uns ermöglicht mit Gleichheit von Arrays, die als Lambdaterme dargestellt werden, umzugehen und beschreiben eine Opti- mierung, die im Allgemeinen die Laufzeit von Boolector verbessert. Weiters beschäftigen wir uns mit unterschiedlichen Array Strukturen, die in existierenden SMT Benchmarks zum Einsatz kommen und die mit Lambdater- men kompakter dargestellt werden können. Wir zeigen, dass die alternative Darstellungsform mit Lambdatermen die Erzeugung von besseren und stärkeren Lemmas in unserer Entscheidungsprozedur ermöglicht. Dies hat zur Folge, dass diePerformanzbesondersaufBenchmarks,diedurchsymbolischeProgrammaus- führung erzeugt wurden, wesentlich gesteigert werden kann. Im letzten Teil dieser Dissertation beschäftigten wir uns mit einem neuen Ansatz zum Lösen von quantifizierten SMT Problemen mit Fokus auf quan- tifizierten Bitvektoren. Unser Ansatz kombiniert eine Technik namens “counter- example-guided quantifier instantiation” mit einer Technik aus dem Bereich der Synthese um Interpretationen für Skolemfunktionen und Terme für die Instan- tiierung von Quantoren zu synthetisieren. Unsere Ergebnisse zeigen, dass unser Ansatz zum Lösen von quantifizierten Bitvektoren im Vergleich zum aktuellen StandderTechnikkompetitivist. WeitersbeschreibenwireineErweiterungund einige Optimierung für unseren neuen Ansatz, der im Allgemeinen die Perfor- manz wesentlich verbessert. v Eidesstattliche Erklärung IcherkläreanEidesstatt,dassichdievorliegendeDissertationselbstständigund ohne fremde Hilfe verfasst, andere als die angegebenen Quellen und Hilfsmittel nicht benutzt bzw. die wörtlich oder sinngemäß entnommenen Stellen als solche kenntlich gemacht habe. Die vorliegende Dissertation ist mit dem elektronisch übermittelten Textdoku- ment identisch. vii Acknowledgements I would like to thank my advisor Armin Biere for his guidance and continuous support throughout my PhD. I am truly grateful for his time, experience and ideas he shared with me. Working together with him was always a pleasure and an invaluable experience. Thank you Armin! I would like to thank my friends and family for their patience and continuous support, especially in the last couple of years. I would also like to thank my colleagues and co-authors – it was a pleasure to work with you. The biggest thanks I can think of goes to the most important person in my life. Thank you for your unconditional support, patience and being part of my life. ix
Description: