Understanding Bit-vector Arithmetic in Z3

Bachelor Thesis (2025)
Author(s)

V. Mitev (TU Delft - Electrical Engineering, Mathematics and Computer Science)

Contributor(s)

D.G. Sprokholt – Mentor (TU Delft - Programming Languages)

S.S. Chakraborty – Mentor (TU Delft - Programming Languages)

A.E. Zaidman – Graduation committee member (TU Delft - Software Technology)

More Info
expand_more
Publication Year
2025
Language
English
Graduation Date
24-06-2025
Awarding Institution
Project
CSE3000 Research Project
Programme
Computer Science and Engineering
Downloads counter
148
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Satisfiability modulo theories solvers serve as the backbone of software verifiers, static analyzers, and proof assistants; the versatile bit-vector arithmetic theory is particularly important for these applications. As solvers continue to be developed, they become more capable but also more difficult to configure optimally. The widely-used Z3 prover offers a multitude of configurable techniques for solving bit-vector problems, however, the pace of development has not allowed for a comprehensive comparative analysis of them. We study the available bit-vector algorithms and parallelization methods, on established sets of problems. Through an experimental evaluation, we find that properly configuring Z3 for a specific use case can have significant effects on performance. We offer guidance to developers on how to go about that, which should help to make formal verification tools more efficient.

Files

Paper.pdf
(pdf | 3.82 Mb)
License info not available