<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">A Bit-vector to Integer Translation with bv2nat and nat2bv ⋆</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Max</forename><surname>Barth</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">LMU Munich</orgName>
								<address>
									<settlement>Munich</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Matthias</forename><surname>Heizmann</surname></persName>
							<affiliation key="aff1">
								<orgName type="institution">University of Stuttgart</orgName>
								<address>
									<settlement>Stuttgart</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">A Bit-vector to Integer Translation with bv2nat and nat2bv ⋆</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">B3E699CC86917DFB1CD7DC147EF72CCD</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T17:21+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Int-blasting</term>
					<term>Bit-vectors</term>
					<term>Translation from bit-vectors to integers</term>
					<term>bv2nat and nat2bv</term>
					<term>Translation of quantified formulas and arrays</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In this paper we present a translation from bit-vector formulas to integer formulas. The translation uses the function symbols bv2nat and nat2bv 𝑘 which are both utilized in the theory of fixed-width bit-vectors of the SMT-LIB [1] language to define the semantics of bit-vector operations. Our translation replaces bit-vector operations with their semantic definition. This facilitates a more modular application as bit-vector operations and their semantic definition have the same sort. As a postprocessing our translation replaces the composition bv2nat ∘ nat2bv 𝑘 with a modulo operation, and removes redundant modulo operations from the translation result. The evaluation of our translation shows that we are able to solve 9% more tasks, 10% faster and with 23% less memory usage compared to a closely related, up-to-date translation approach. Additionally, our translation supports the translation of quantified formulas and arrays over bit-vectors.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>In many program languages, integer data types represent only a fixed number of values. A sequence of bits is utilized to represent an integer via two's complement or a binary encoding. We call such a sequence of bits a bit-vector. The SMT-LIB <ref type="bibr" target="#b0">[1]</ref> theory of "FixedSizeBitVectors" 1 is well-suited for modeling such programming languages since it offers many function symbols that capture precisely the semantics operations that occur in programming languages.</p><p>However, the expressiveness of the bit-vector theory comes at a certain price. Due to their complex semantics, formulas of this theory are rather intractable and there are only few algorithms that handle these formulas directly. Typically, algorithms that work on bit-vector formulas first do a translation, either to propositional logic or to integer arithmetic. The translation to propositional logic is called bit-blasting <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3]</ref>. Bit-blasting translates each bit of a bit-vector into a propositional logical variable and translates each bit-vector operation into a propositional logical formula that captures exactly the semantics of that operation. The strength of bit-blasting is that we can utilize powerful SAT solvers for deciding statisfiability of the resulting formulas. The alternative to bit-blasting is the translation to integer arithmetic. A recent publication coined the term int-blasting <ref type="bibr" target="#b3">[4]</ref> for this translation. Here, bit-vector variables are translated to integer variables and a comprehensive application of modulo operations makes sure that we can establish a connection between models for the bit-vector formulas and models for the integer formulas. In order to model bit-precise bit-vector operations, int-blasting can access individual bits via a combination of integer division (div) and modulo (mod) operations. E.g., if we translate a bit-vector variable x into an integer variable x' such that x is the binary encoding of x', we can access the third least-significant bit as follows: We divide x' by 4 and take the result modulo two. The result is one iff this bit was set to true. In order to improve the performance, int-blasting-based translations often work with approximations and increase their precision later if required.</p><p>Even though the state of the art to decide the satisfiability of bit-vector formulas is bit-blasting <ref type="bibr" target="#b1">[2]</ref>, there exist applications that need a translation from bit-vector formulas to formulas over integers. For example in software model checking many techniques only work on integers: loop acceleration <ref type="bibr" target="#b4">[5,</ref><ref type="bibr" target="#b5">6]</ref>, invariant syntheses <ref type="bibr" target="#b6">[7,</ref><ref type="bibr" target="#b7">8]</ref> and syntheses of ranking functions <ref type="bibr" target="#b8">[9,</ref><ref type="bibr" target="#b9">10,</ref><ref type="bibr" target="#b11">11]</ref>. While other techniques perform better on integers, especially Craig interpolation.</p><p>In this paper we present a translation from bit-vectors to integers that is closely related to the translation of <ref type="bibr" target="#b3">[4]</ref>. In order to explain our translation and conceptual differences to <ref type="bibr" target="#b3">[4]</ref> we use the functions nat2bv 𝑘 and bv2nat (see Section 3) which implement the binary encoding of natural numbers and its inverse function, respectively. The translation of <ref type="bibr" target="#b3">[4]</ref> ensures the following relation between models of bit-vector formulas and the models of the resulting integer formulas: If the bit-vector model maps a term 𝑡 to a bitvector value 𝑣 then the integer model maps the translation result of 𝑡 to bv2nat(𝑣). In order to ensure this relation, the translation of <ref type="bibr" target="#b3">[4]</ref> adds constraints that require that integer variables are in a given range and modulo operations such that every integer term is in the same range as its corresponding bit-vector term.</p><p>Our translation only requires a less strict relation between models of bit-vector formulas and the models of the resulting integer formulas. If the integer model maps the translation result of the term 𝑡 to an integer 𝑣 ′ then the bit-vector model maps 𝑡 to nat2bv(𝑣 ′ ) . I.e., we do not require that nat2bv(𝑣 ′ ) is the binary encoding of 𝑣 ′ , we only require that nat2bv(𝑣 ′ ) is the binary encoding of nat2bv(𝑣 ′ mod 𝑘), where 𝑘 is the bit-length of 𝑡. This conceptual difference to <ref type="bibr" target="#b3">[4]</ref> allows us to omit constraints on the translated variables and it allows us to omit several modulo operations that the translation of <ref type="bibr" target="#b3">[4]</ref> introduces.</p><p>The translation of <ref type="bibr" target="#b3">[4]</ref> introduces modulo operations after each arithmetic operation. Our translation omits modulo operations after arithmetic operations but introduces modulo operations before each operation where we need that integer values are in a certain range. E.g., we translate bvult to the less-than relation &lt; but apply a modulo operation to both operands. We call the translation of <ref type="bibr" target="#b3">[4]</ref> eager int-blasting and our translation lazy int-blasting. Example 1. For the bit-vector formula: (bvult 𝑦 (bvadd 0101 (bvmul 𝑦 0011))). The result of the eager int-blasting is:</p><formula xml:id="formula_0">(&lt; 𝑦 ′ (mod (+ 5 (mod (• 𝑦 ′ 3) 2 4 )) 2 4 )) ∧ (≥ 𝑦 ′ 0) ∧ (&lt; 𝑦 ′ 2 4</formula><p>). The result of our lazy int-blasting is: (&lt; (mod 𝑦 ′ 2 4 ) (mod (+ 5 (• 𝑦 ′ 3)) 2 4 )).</p><p>Technically, our translation proceeds in two steps. In the first step, we inductively translate the formula and distinguish two cases. If the SMT-LIB semantic definition of the operation that we have to translate utilizes the functions bv2nat and nat2bv 𝑘 , we replace the operation with their semantic definition. For most of the other operations our translation is similar to the eager int-blasting. The result of our first translation step contains the functions bv2nat and nat2bv 𝑘 only as a concatenation bv2nat∘nat2bv 𝑘 . Our second translation step replaces this concatenation either by a modulo operation or by the identity function.</p><p>An additional contribution of this paper is that we present how we translate quantified formulas and arrays over bit-vectors into integers.</p><p>We have implemented our translation in two ways: as a wrapper script <ref type="bibr" target="#b12">[12]</ref> for SMT solver and directly in the SMT solver SMTInterpol <ref type="bibr" target="#b13">[13]</ref>. Through our evaluation of both implementations, we demonstrated that our translation does not produce incorrect results on the benchmark set. Moreover, we conducted a comparison between two settings of our translation implemented in SMTInterpol: one setting adds modulo operations lazily, while the other adds them eagerly. Our evaluation results revealed that SMTInterpol is capable of solving 9% more tasks, is 10% faster, and requires 23% less memory when modulo operations are added lazily compared to eagerly.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Related Work</head><p>There have been numerous approaches to translating from bit-vectors to integers. Some methods perform the translation during the verification process e.g. on the source level <ref type="bibr" target="#b14">[14]</ref> or during invariant synthesis <ref type="bibr" target="#b15">[15]</ref>. More closely related to our work are translations for SMT formulas <ref type="bibr" target="#b16">[16,</ref><ref type="bibr" target="#b17">17,</ref><ref type="bibr" target="#b18">18,</ref><ref type="bibr" target="#b19">19,</ref><ref type="bibr" target="#b3">4]</ref>. However, our translation approach differs from the related work. Firstly, we incorporate modular arithmetic lazily to eliminate redundant modulo operations in the translation result. There exist simplification techniques to eliminate such redundant modulo operations. For example when the SMT solver Z3 is asked simplify(mod (• (mod (+ 𝑥 𝑦) 256) 𝑧) 256), it returns (mod (• 𝑧 (+ 𝑥 𝑦)) 256). However, since we do not add the redundant modulo operations in the first place, there is no need for such a simplification on our translation results. Secondly, no other approach utilizes function symbols with behavior similar to the functions bv2nat and nat2bv 𝑘 . We give a brief overview of the related approaches.</p><p>A similar concept to our lazy translation, but in a different research field, can be found in <ref type="bibr" target="#b20">[20]</ref>. Where the authors apply modulo operations lazily during their translation from BTOR to C. Their evaluation shows that their lazy translation is faster in general, but not strictly better than their eager translation.</p><p>Griggio et al. introduces a layered SMT solver in <ref type="bibr" target="#b16">[16]</ref>, where on the higher layers, the solver performs translation from bit-vector formulas to integer formulas. This translation is for a fragment of the bit-vector functions, including arithmetic functions, extraction, concatenation, left shift, and relations. Rather than incorporating modulo operations to bound the integers, Griggio's approach utilizes an auxiliary variable, such as variable 𝑣 in the expression</p><formula xml:id="formula_1">(𝑡 1 + 𝑡 2 − 2 𝑛 • 𝑣) ∧ (0 ≤ 𝑣) ∧ (𝑣 ≤ 1)</formula><p>. Each integer term derived during the translation is within the bounds of its corresponding bit-vector term, effectively achieving an eager translation.</p><p>Backeman, Rummer, and Zeljic <ref type="bibr" target="#b18">[18]</ref> introduce a new calculus for non-linear integer arithmetic, which, in certain cases, can eliminate quantifiers and extract Craig interpolants. Subsequently, they define a corresponding calculus for arithmetic bit-vector constraints. Both calculi allow for a flexible switch between bit-vectors and integers. Initially, integers are not bound by modular arithmetic; instead, the authors introduce an uninterpreted function symbol that represents the modulo operation. They note that the remainder operation tends to be a bottleneck for interpolation. If necessary, a definition for the uninterpreted function symbol can be added to precisely cover the remainder. In contrast to our approach with uninterpreted function symbols, their uninterpreted function is directly associated with the modulo operation and does not affect the sort of a term. Furthermore, their approach supports a translation of quantified formulas, but not of arrays over bit-vectors.</p><p>Recently, the first precise and complete translation for bit-vector formulas with bit-vectors of fixed size was published in <ref type="bibr" target="#b3">[4]</ref>. This work is closely related to their translation for bit-vectors with parametric bit-width, proposed in their previous work <ref type="bibr" target="#b19">[19]</ref>. The precise translation presented in <ref type="bibr" target="#b3">[4]</ref> has been implemented in the cvc5 prover <ref type="bibr" target="#b21">[21]</ref>. It employs a translation from bit-vector formulas to non-linear integer arithmetic formulas with uninterpreted functions and universal quantification. During the translation, modulo operations are added eagerly and without the use of uninterpreted function symbols. Our translation approach combines elements from the translation in <ref type="bibr" target="#b3">[4]</ref> with the semantics of the theory of "FixedSizeBitVectors" defined in the SMT-LIB <ref type="bibr" target="#b0">[1]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Preliminaries and Notations</head><p>The SMT-LIB <ref type="bibr" target="#b0">[1]</ref> defines a many-sorted first-order logic with equality. In this paper we use the sorts, signatures Σ and theories defined in the SMT-LIB. In particular we use the sorts, signatures and theories of Booleans, fixed-size bit-vectors, integers, and arrays.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Bit-Vectors</head><p>The SMT-LIB defines a signature Σ Bv and a theory called "FixedSizeBitVectors" for bit-vectors of fixed size. For every possible bit-vector size 𝑘, that is every positive integer greater than zero, Σ Bv contains a unique sort 𝜎 𝑘 . We call a term of sort 𝜎 𝑘 ∈ Σ Bv bit-vector of size 𝑘 or bit-vector of width 𝑘. In the following let 𝑥 be a bit-vector variable, 𝑐 be a bit-vector constant, and 𝑡, 𝑡 1 , and 𝑡 2 be bit-vector terms. Furthermore, let the width of bit-vectors 𝑥, 𝑐 and 𝑡 be 𝑘, the width of 𝑡 1 be 𝑘 1 and the width of 𝑡 2 be 𝑘 2 . The signature Σ Bv as defined in the SMT-LIB contains a set of bit-vector function symbols. We denote the extract function from 𝑖 to 𝑗 as extract 𝑖 𝑗 (𝑡), where 𝑖 and 𝑗 are natural numbers with 𝑖, 𝑗 ≥ 0 ∧ 𝑖 ≥ 𝑗. For the other bit-vector functions 𝑓 we use the notation 𝑓 (𝑡 1 𝑡 2 ) instead of the SMT-LIB notation (𝑓 𝑡 1 𝑡 2 ).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Integers</head><p>The SMT-LIB defines a signature Σ Int and a Σ Int -theory for mathematical integers. The sort 𝜎 ∈ Σ Int is defined as the set of all integers. The integer signature Σ Int consists of variables, constants and the usual functions and relations. Let constants 𝑐 ′ and terms 𝑡 ′ , 𝑡 ′ 1 and 𝑡 ′ 2 all have sort Int. As notation for integer functions we write</p><formula xml:id="formula_2">(𝑡 ′ 1 + 𝑡 ′ 2 ) instead of the SMT-LIB notation (+ 𝑡 ′ 1 𝑡 ′ 2 )</formula><p>. In <ref type="bibr" target="#b3">[4]</ref> the authors introduce a binary function symbols &amp; 𝑘 (−, −), for every positive integer 𝑘. The functions &amp; 𝑘 (−, −) are introduced to represents bit-wise and. Therefore, they extend the signature Σ Int and define two theories for this extended signature. We will do the same in this paper and refer to <ref type="bibr" target="#b3">[4]</ref> for details.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Functions bv2nat and nat2bv 𝑘</head><p>In the theory of "FixedSizeBitVectors" the functions bv2nat and nat2bv 𝑘 are defined. Given an arbitrary binary 𝑏 = (𝑏 𝑘−1 , ..., 𝑏 𝑖 , ..., 𝑏 0 ) and its corresponding natural number 𝑛, the function bv2nat is defined as follows: bv2nat(𝑏) := ∑︀ 𝑘−1 𝑖=0 𝑏 𝑖 • 2 𝑖 . Furthermore, the function nat2bv 𝑘 is defined as: nat2bv 𝑘 (𝑛) := (𝑏 𝑘−1 , ..., 𝑏 𝑖 , ..., 𝑏 0 ), where 𝑏 𝑖 = 𝑛 div 2 𝑖 mod 2.</p><p>Note, we do not extend our signatures and theories with bv2nat and nat2bv 𝑘 . Instead, we treat them as auxiliary functions and ensure they are eliminated in the translation result. For the sake of readability, we denote bv2nat(𝑡) and nat2bv 𝑘 (𝑡 ′ ) as 𝑡 bv2nat and 𝑡 ′nat2bv 𝑘 , respectively.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Translation with bv2nat and nat2bv 𝑘</head><p>Our bit-vector to integer translation maps from the set of Σ Bv -formulas to the set of Σ Int -formulas (extended with &amp; 𝑘 (−, −)). We say a translation "translates" a term or formula if it associates that term or formula with an element of its co-domain. Before we can define the translation, we need to define some auxiliary functions. First we define a variable mapping 𝜒. Similar to the variable mapping defined in <ref type="bibr" target="#b3">[4]</ref>, 𝜒 maps a variable of sort bit-vector to a fresh variable of sort integer. We extend the definition of 𝜒 for arrays over bit-vectors and quantified variables. Definition 4.1 (Variable Mapping 𝜒). Given a bit-vector formula 𝜑, we define a one-to-one mapping 𝜒 as the following. For every variable and quantified variable 𝑥 that occurs in 𝜑, 𝜒 maps to a fresh variable 𝑥 ′ , such that if 𝑥 is of sort Bv, then 𝑥 ′ is of sort Int. If 𝑥 is of sort Array with arguments of sort 𝑠 ∈ {Bv, Array} then 𝑥 ′ is of sort Array with arguments of sort 𝑠 ′ ∈ {Int, Array} correspondingly. Finally, if 𝑥 is of sort Bool, then 𝑥 ′ is of sort Bool. We write 𝜒 maps 𝑥 to 𝑥 ′ as 𝜒(𝑥) = 𝑥 ′ .</p><p>In Table <ref type="table">1</ref> we use the auxiliary function 𝑢𝑡𝑠 𝑘 (−) from <ref type="bibr" target="#b3">[4]</ref>. For a bit-vector term 𝑡 ′ , 𝑢𝑡𝑠 𝑘 (𝑡 ′ ) is an abbreviation for the term 2 • (𝑡 ′ mod 2 𝑘−1 ), which transforms an unsigned bit-vector to a signed bit-vector. Initially, our translation interprets every bit-vector as unsigned. In the case of a signed relation, we enclose the arguments of the relation with the function 𝑢𝑡𝑠 𝑘 . to ensures that the semantics of signed relation is preserved properly.</p><p>Finally, we define the translation function 𝑇 that maps from Σ Bv -formulas 𝜑 of the theory of bitvectors to Σ Int -formulas 𝜓 of the theory of integers (extended with &amp; 𝑘 (−, −)). Therefore, we define a conversion functions 𝐶 in Table <ref type="table">1</ref> (column Lazy) and a replacement function 𝑅 in Table <ref type="table" target="#tab_1">3</ref>. The translation function 𝑇 is defined as:</p><formula xml:id="formula_3">𝑇 := 𝜑 ↦ → 𝑅(𝐶(𝜑))</formula><p>Our translation consist of two steps. In step one 𝐶 replaces bit-vector formulas and terms by their semantic definition. The conversion functions 𝐶 matches a term or formula 𝑒 to a term or formula in the first column. The match is then translated to the term or formula in the middle column named Lazy. For a direct comparison, we display the translation steps from the Eager translation in <ref type="bibr" target="#b3">[4]</ref> in the third column in gray. Note, in <ref type="bibr" target="#b3">[4]</ref> the authors translate a bit-vector variable 𝑣 by adding constraints in the form of (0 ≤ 𝜒(𝑣) &lt; 2 𝑘 ) to the translation result and do not surround the integer variable 𝜒(𝑣) with modulo as we do in the third column of Table <ref type="table" target="#tab_0">2</ref>. For readability reasons, we split the definition of function 𝐶 into three functions: 𝐶, 𝐶 𝑡 and 𝐶 ′ 𝑡 . Functions 𝐶 𝑡 and 𝐶 ′ 𝑡 are both defined in Table <ref type="table" target="#tab_0">2</ref>. The conversion function uses bv2nat and nat2bv 𝑘 to replace bit-vector formulas and terms by their semantic definition, but our signature Σ Int and integer theory do not contain bv2nat and nat2bv 𝑘 . In the second step, we use the replacement function 𝑅 to get rid of bv2nat and nat2bv 𝑘 . Therefore, we either remove the concatenation bv2nat ∘ nat2bv 𝑘 or replace it with a modulo operation. In the tables defining 𝐶, 𝐶 𝑡 , and 𝐶 ′ 𝑡 , we have indicated certain bv2nat function calls in blue. If function 𝑅(𝑒) matches 𝑒 to (𝑡 ′nat2bv 𝑘 ) bv2nat where bv2nat is marked blue, then we replace 𝑒 with 𝑡 ′ mod 2 𝑘 . Otherwise, if bv2nat is not marked blue we replace (𝑡 ′nat2bv 𝑘 ) bv2nat with 𝑡 ′ .</p><p>So far we translate bvand to the uninterpreted function symbol &amp; 𝑘 (−, −) in 𝐶 and do not treat it any further. For a more sophisticated translation of bvand we refer to literature <ref type="bibr" target="#b3">[4]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Lazy Eager</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>𝐶(𝑒) :</head><p>𝑀 𝑎𝑡𝑐ℎ 𝑒 :</p><formula xml:id="formula_4">𝑡 1 = 𝑡 2 𝐶 𝑡 (𝑡 1 ) bv2nat = 𝐶 𝑡 (𝑡 2 ) bv2nat 𝐶 𝑡 (𝑡 1 ) = 𝐶 𝑡 (𝑡 2 ) bvult(𝑡 1 , 𝑡 2 ) 𝐶 𝑡 (𝑡 1 ) bv2nat &lt; 𝐶 𝑡 (𝑡 2 ) bv2nat 𝐶 𝑡 (𝑡 1 ) &lt; 𝐶 𝑡 (𝑡 2 ) bvule(𝑡 1 , 𝑡 2 ) 𝐶 𝑡 (𝑡 1 ) bv2nat ≤ 𝐶 𝑡 (𝑡 2 ) bv2nat 𝐶 𝑡 (𝑡 1 ) ≤ 𝐶 𝑡 (𝑡 2 ) bvslt(𝑡 1 , 𝑡 2 ) 𝑢𝑡𝑠 𝑘 (𝐶 𝑡 (𝑡 1 ) bv2nat ) &lt; 𝑢𝑡𝑠 𝑘 (𝐶 𝑡 (𝑡 2 ) bv2nat ) 𝑢𝑡𝑠 𝑘 (𝐶 𝑡 (𝑡 1 )) &lt; 𝑢𝑡𝑠 𝑘 𝐶 𝑡 (𝑡 2 )) bvsle(𝑡 1 , 𝑡 2 ) 𝑢𝑡𝑠 𝑘 (𝐶 𝑡 (𝑡 1 ) bv2nat ) ≤ 𝑢𝑡𝑠 𝑘 (𝐶 𝑡 (𝑡 2 ) bv2nat ) 𝑢𝑡𝑠 𝑘 (𝐶 𝑡 (𝑡 1 )) ≤ 𝑢𝑡𝑠 𝑘 𝐶 𝑡 (𝑡 2 )) □(𝑡 1 , ...𝑡 𝑖 ) □(𝐶(𝑡 1 ), ..., 𝐶(𝑡 𝑖 )) □ ∈ {∧, ∨, ¬, ⇒, ⇔} 𝑢𝑡𝑠 𝑘 (𝑡 ′ ) := 2 • (𝑡 ′ mod 2 𝑘−1 ) − 𝑡 ′</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Table 1</head><p>Definition of the Conversion Function 𝐶</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.1.">Translation of Arrays and Quantified Formulas</head><p>For the translation of quantified formulas and arrays we extend our conversion functions 𝐶 and 𝐶 𝑡 with the conversions outlined in Table <ref type="table">4</ref>. Therefore, let in Table <ref type="table">4</ref> 𝑎 and 𝑏 be arrays over bit-vectors, where the bit-vectors that represent the indices of 𝑎 and 𝑏 have width 𝑘. Additionally, let 𝑖 ′ be a quantified integer variable. The translation of quantified formulas utilizes the variable mapping 𝜒(𝑣) = 𝑣 ′ , where 𝑣 is a quantified bit-vector variable of width 𝑘 and 𝑣 ′ is a quantified integer variable. Additionally, we ensure that a translated quantified formula is unsatisfiable for values of 𝑣 ′ that are not within the bounds of 𝑣. Therefore, we add the bound (0 ≤ 𝜒(𝑣) &lt; 2 𝑘 ) as constraints within the scope of the quantifier.</p><p>Arrays over bit-vectors 𝑎 are translated to fresh arrays over integers with the help of the one-to-one mapping 𝜒(𝑎). Since arrays over integers have infinitely indices and arrays over bit-vectors don't, we have to add some limitations. First of all, we ensure to only read from and write to indices that are within the bounds of the corresponding bit-vector array. Secondly, we have to ensure that if two translated arrays are equal on every index in the range of the bit-vector array, then they are equal on every index. Therefore, we add a constraint to the translation result that evaluates to false if this condition is violated. This is achieved by the constraint function Lem in Table <ref type="table">4</ref>. Furthermore, we change the translation function to add constraints for every array equality:  </p><formula xml:id="formula_5">𝑇 𝐴𝑟𝑟𝑎𝑦 := 𝜑 ↦ → 𝑅(𝐶(𝜑)) ∧ Lem(𝜑). Lazy Eager 𝐶 𝑡 (𝑒) : 𝑀 𝑎𝑡𝑐ℎ 𝑒 : concat(𝑡 1 , 𝑡 2 ) 𝐶 ′ 𝑡 (𝑒) nat2bv 𝑘 1 +𝑘 2 𝐶 ′ 𝑡 (𝑒) extract 𝑖 𝑗 (𝑡 1 ) 𝐶 ′ 𝑡 (𝑒) nat2bv𝑖−𝑗+1 𝐶 ′ 𝑡 (𝑒) else: 𝑒 𝐶 ′ 𝑡 (𝑒) nat2bv 𝑘 𝐶 ′ 𝑡 (𝑒) 𝐶 ′ 𝑡 (𝑒) : 𝑀 𝑎𝑡𝑐ℎ 𝑒 : 𝑥 𝜒(𝑥) 𝜒(𝑥) mod 2 𝑘 𝑐 ∑︀ 𝑘−1 𝑖=0 𝑐 𝑖 • 2 𝑖 where 𝑐 𝑖 is the 𝑖-th bit of 𝑐 bvneg(𝑡 1 ) 2 𝑘1 − 𝐶 𝑡 (𝑡 1 ) bv2nat 2 𝑘1 − 𝐶 𝑡 (𝑡 1 ) bvmul(𝑡 1 , 𝑡 2 ) 𝐶 𝑡 (𝑡 1 ) bv2nat • 𝐶 𝑡 (𝑡 2 ) bv2nat (𝐶 𝑡 (𝑡 1 ) • 𝐶 𝑡 (𝑡 2 )) mod 2 𝑘 bvadd(𝑡 1 , 𝑡 2 ) 𝐶 𝑡 (𝑡 1 ) bv2nat + 𝐶 𝑡 (𝑡 2 ) bv2nat (𝐶 𝑡 (𝑡 1 ) + 𝐶 𝑡 (𝑡 2 )) mod 2 𝑘 bvsub(𝑡 1 , 𝑡 2 ) 𝐶 𝑡 (𝑡 1 ) bv2nat − 𝐶 𝑡 (𝑡 2 ) bv2nat (𝐶 𝑡 (𝑡 1 ) − 𝐶 𝑡 (𝑡 2 )) mod 2 𝑘 bvudiv(𝑡 1 , 𝑡 2 ) ite(𝐶 𝑡 (𝑡 2 ) bv2nat = 0, 2 𝑘 − 1, 𝐶 𝑡 (𝑡 1 ) bv2nat div 𝐶 𝑡 (𝑡 2 ) bv2nat ) ite(𝐶 𝑡 (𝑡 2 ) = 0, 2 𝑘 − 1, 𝐶 𝑡 (𝑡 1 ) div 𝐶 𝑡 (𝑡 2 )) bvurem(𝑡 1 , 𝑡 2 ) ite(𝐶 𝑡 (𝑡 2 ) bv2nat = 0, 𝑡 1 , 𝐶 𝑡 (𝑡 1 ) bv2nat mod 𝐶 𝑡 (𝑡 2 ) bv2nat ) ite(𝐶 𝑡 (𝑡 2 ) = 0, 𝐶 𝑡 (𝑡 1 ), 𝐶 𝑡 (𝑡 1 ) mod 𝐶 𝑡 (𝑡 2 )) bvshl(𝑡 1 , 𝑡 2 ) ite(𝐶 𝑡 (𝑡 2 ) bv2nat = 1, 2 • 𝐶 𝑡 (𝑡 1 ) bv2nat , ... ite(𝐶 𝑡 (𝑡 2 ) bv2nat = 𝑘 − 1, 2 𝑘−1 • 𝐶 𝑡 (𝑡 1 ) bv2nat , 0)...) ite(𝐶 𝑡 (𝑡 2 ) = 1, 2 • 𝐶 𝑡 (𝑡 1 ) mod 2 𝑘 , ... ite(𝐶 𝑡 (𝑡 2 ) = 𝑘 − 1, 2 𝑘−1 • 𝐶 𝑡 (𝑡 1 ) mod 2 𝑘 , 0)...) bvlshr(𝑡 1 , 𝑡 2 ) ite(𝐶 𝑡 (𝑡 2 ) bv2nat = 1, 𝐶 𝑡 (𝑡 1 ) bv2nat div 2, ... ite(𝐶 𝑡 (𝑡 2 ) bv2nat = 𝑘 − 1, (𝐶 𝑡 (𝑡 1 ) bv2nat div 2 𝑘−1 ), 0)...) ite(𝐶 𝑡 (𝑡 2 ) = 1, 𝐶 𝑡 (𝑡 1 ) div 2, ... ite((𝐶 𝑡 (𝑡 2 ) = 𝑘 − 1), 𝐶 𝑡 (𝑡 1 ) div 2 𝑘−1 , 0)...) concat(𝑡 1 , 𝑡 2 ) 𝐶 𝑡 (𝑡 1 ) bv2nat • 2 𝑘2 + 𝐶 𝑡 (𝑡 2 ) bv2nat 𝐶 𝑡 (𝑡 1 ) • 2 𝑘2 + 𝐶 𝑡 (𝑡 2 ) extract 𝑖 𝑗 (𝑡 1 ) 𝐶 𝑡 (𝑡 1 ) bv2nat div 2 𝑗 𝐶 𝑡 (𝑡 1 ) div 2 𝑗 mod 2 𝑖−𝑗+1 bvnot(𝑡 1 ) 2 𝑘1 − 𝐶 𝑡 (𝑡 1 ) bv2nat + 1 2 𝑘1 − 𝐶 𝑡 (𝑡 1 ) + 1 bvand(𝑡 1 , 𝑡 2 ) &amp; 𝑘 (𝐶 𝑡 (𝑡 1 ) bv2nat , 𝐶 𝑡 (𝑡 2 ) bv2nat ) &amp; 𝑘 (𝐶 𝑡 (𝑡 1 ), 𝐶 𝑡 (𝑡 2 ))</formula><formula xml:id="formula_6">(𝑡 ′nat2bv 𝑘 ) bv2nat → 𝑅(𝑡 ′ ) otherwise else: 𝑒(𝑡 ′ 1 , ..., 𝑡 ′ 𝑛 ) → 𝑒(𝑅(𝑡 ′ 𝑖 ), ..., 𝑅(𝑡 ′ 𝑛 ))</formula><formula xml:id="formula_7">∧ (0 ≤ 𝜒(𝑣) &lt; 2 𝑘 )) ∀ 𝑣.(𝑒) ∀ 𝐶(𝑣).((0 ≤ 𝜒(𝑣) &lt; 2 𝑘 ) ⇒ 𝐶(𝑒)) 𝐶 𝑡 (𝑒) : 𝑀 𝑎𝑡𝑐ℎ 𝑒 : 𝑎 𝜒(𝑎) (select 𝑎 𝑖) (select 𝐶 𝑡 (𝑎) 𝐶 𝑡 (𝑖) bv2nat ) (store 𝑎 𝑖 𝑣) (store 𝐶 𝑡 (𝑎) 𝐶 𝑡 (𝑖) bv2nat 𝐶 𝑡 (𝑣)) Lem(𝑒) : 𝑀 𝑎𝑡𝑐ℎ 𝑒 : 𝑎 = 𝑏 (∀𝑖 ′ .(0 ≤ 𝑖 ′ &lt; 2 𝑘 ) ⇒ ((select 𝐶 𝑡 (𝑎) 𝑖 ′ ) mod 2 𝑘 = (select 𝐶 𝑡 (𝑏) 𝑖 ′ ) mod 2 𝑘 )) ⇒ 𝐶 𝑡 (𝑎) = 𝐶 𝑡 (𝑏) □(𝑡 1 , ...𝑡 𝑖 ) ⋀︀ 𝑛 𝑖=1 Lem(𝑡 𝑖 ) □ ∈ {∧, ∨, ¬, ⇒, ⇔} else: ⊤ Table 4</formula><p>Extension for Quantified Formulas and Arrays</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Implementation</head><p>We have two implementations for our lazy translation presented in Section 4. The first implementation is a wrapper script for SMT solvers, called Ultimate IntBlastingWrapper <ref type="bibr" target="#b12">[12]</ref>. It is implemented in the Ultimate framework 2 . The wrapper script does not use the functions bv2nat and nat2bv 𝑘 instead modulo operations are added directly. It supports a translation of bit-wise operations with all features described in <ref type="bibr" target="#b3">[4]</ref>, quantified formulas and arrays over bit-vectors.</p><p>The second implementation is in the SMT solver SMTInterpol 3 . This implementation is still work in progress. So far we use bv2nat and nat2bv 𝑘 as uninterpreted functions, but the implementation does not support bit-wise operations, quantified variables and arrays yet. We implemented two settings to translate bit-vectors to integers. The first setting is called Lazy and it applies our lazy translation in Section 4. The second setting is called Eager and it applies a translation similar to <ref type="bibr" target="#b3">[4]</ref>. Each setting applies the conversions in their respective column in Table <ref type="table" target="#tab_0">2</ref>. Additionally, we compare our settings Lazy and Eager with the original implementation (cvc5-int) of <ref type="bibr" target="#b3">[4]</ref> in the SMT solver cvc5. We selected SMTInterpol as the SMT solver for our evaluation because, at the point of writing, it did not support bit-vectors, and we were already familiar with the tool. Unfortunately, it did not support non-linear integer arithmetic either. When SMTInterpol encounters a bit-wise operation or non-linear integer arithmetic we return an error.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Evaluation</head><p>We evaluate our two implementations to answer the following research questions:</p><p>• How does the performance of the approach Lazy and Eager compare? • How does Lazy and Eager compare to int-blasting in cvc5?</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.1.">Evaluation of Ultimate IntBlastingWrapper</head><p>We participated with Ultimate IntBlastingWrapper <ref type="bibr" target="#b12">[12]</ref> at the latest SMT-COMP 2023. Ultimate IntBlastingWrapper competed in the Single Query Track on every logic that contains bit-2 https://ultimate.informatik.uni-freiburg.de and github.com/ultimate-pa/ultimate 3 https://github.com/ultimate-pa/smtinterpol/tree/Intblasting  vectors. The results of Ultimate IntBlastingWrapper in the SMT-COMP 2023 showed wrong results on three benchmarks. Of these three, two are from the category QF_AUFBV and one from QF_ABV. The wrong results were caused by a mistake in the translation of equalities between arrays over bit-vectors. This has been fixed in commit: https://github.com/ultimate-pa/ultimate/commit/ 928447c7dc8c44e406f0a52121ccf96fcbe4d5b5.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.2.">Evaluation of Int-blasting in SMTInterpol</head><p>To evaluate our implementation in the SMTInterpol, we ran the settings Lazy and Eager and the implementation of int-blasting in cvc5 (cvc5-int) from the paper <ref type="bibr" target="#b3">[4]</ref>. For cvc5-int we used the cvc5 options --solve-bv-as-int=sum and --nl-ext-tplanes. We run Lazy, Eager and cvc5-int on a randomly picked subset of the non-incremental QF_BV benchmarks from the SMT-LIB. From the set we excluded every benchmark where the expected result is unknown. There remained 12302 benchmarks.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Environment</head><p>We run our experiments on a cluster of machines with 33 GB of memory and an Intel Xeon E3-1230 v5 CPU with 8 processing units and a frequency of 3.40 GHz that run Ubuntu 22.04 (Linux kernel 5.15.0). To measure and limit resources we use Benchexec 3.18 <ref type="bibr" target="#b22">[22]</ref>. We limit every run to 1 core, 15 min of CPU time and 15 GB of memory.</p><p>How does the performance of the approach Lazy and Eager compare? The evaluation results of Lazy and Eager are displayed in Table <ref type="table">5</ref>. We can see that SMTInterpol solves more benchmarks with Lazy than with Eager. Lazy creates 282 more correct results that is 9% (2698 of 2961). Among these, Eager times out on 280 cases, and on 2 cases, Eager reports that the formula contains non-linear integer arithmetic. On the other hand Eager returns a correct result on Eager times out. All errors in Table <ref type="table">5</ref> are caused by either non-linear integer arithmetic or a bit-wise operation. To compare the CPU time and memory usage of Lazy and Eager, we analyze the 2679 benchmarks for which both settings return a correct result (see Table <ref type="table" target="#tab_2">6</ref>). When measuring the CPU time and memory used on these 2679 benchmarks, Lazy requires 10% less CPU time (23000 s out of 25600 s) and 23% less memory (252 GB out of 327 GB) to decide their satisfiability. For a more detailed view, we provide two scatter plots in Figure <ref type="figure" target="#fig_1">1</ref>. Both scatter plots have logarithmic scales, the first shows the CPU time used and the second plot shows the memory usage. Every dot in the scatter plots below the line is in favor of Lazy. We observe that in many cases, the Lazy approach requires less CPU time and/or memory. Specifically, the CPU time and memory usage of Lazy tends to deviate less frequently and significantly from Eager. However, it is important to note that Lazy is not strictly superior to Eager.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>How does Lazy and Eager compare to int-blasting in cvc5?</head><p>In Table <ref type="table">5</ref>, we observe that cvc5-int solves 8409 tasks. Out of these 8409 tasks Lazy times out on 553, returns an error on 5166 and solves correctly 2690. On the 2961 tasks where Lazy returns a correct result, cvc5-int times out 271 times and returns 2691 correct results. Among the 2006 benchmarks where Lazy, Eager, and cvc5-int all return a correct result, cvc5-int demonstrates significantly lower CPU time and memory usage. For solving these 2006 tasks, Lazy requires 30380 s, Eager requires 62800 s, and cvc5-int requires 12750 s. Regarding memory usage, Lazy consumes 246.7 GB, Eager consumes 321.4 GB, and cvc5-int consumes 16.5 GB.</p><p>The comparison between cvc5-int and our implementations shows that cvc5-int solves significantly more benchmarks. However, cvc5-int is not strictly superior, we solve 271 benchmarks on which cvc5-int times out.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7.">Conclusion</head><p>We present a lazy translation from bit-vector formulas to integer formulas that utilizes the functions bv2nat and nat2bv 𝑘 . Our translation consists of a conversion function 𝐶, and a replacement function 𝑅. Conversion function 𝐶 replaces bit-vector terms and formulas with their semantic definition, thus incorporating bv2nat and nat2bv 𝑘 into the translation process This makes our translation more modular since bit-vector terms and their semantic definition have the same sort. Additionally, conversion function 𝐶 supports a translation of quantified formulas and arrays over bit-vectors. Within replacement function 𝑅, we eliminate bv2nat and nat2bv 𝑘 from the translation result and introduce modulo operations instead. This is done in such a way that the amount of redundant modulo operations is reduced. We implemented our lazy translation in the SMTInterpol and as wrapper script for SMT solver. Our evaluation of both implementations indicates the correctness of the lazy translation. Furthermore, it shows that SMTInterpol with our lazy translation is able to solve 9% more tasks, 10% faster and with 23% less memory usage than with a closely related, up-to-date eager translation approach.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Comparing CPU time and Memory usage of Eager (x-axis) and Lazy (y-axis)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 2</head><label>2</label><figDesc>Definition of the Conversion Function 𝐶 𝑡</figDesc><table><row><cell>𝑅(𝑒) :</cell><cell></cell><cell></cell><cell></cell></row><row><cell>𝑀 𝑎𝑡𝑐ℎ 𝑒 :</cell><cell></cell><cell></cell><cell></cell></row><row><cell>(𝑡 ′nat2bv 𝑘 ) bv2nat</cell><cell>→</cell><cell>𝑅(𝑡 ′ ) mod 2 𝑘</cell><cell>where bv2nat is marked blue</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 3</head><label>3</label><figDesc>Definition of the Replacement Function 𝑅</figDesc><table><row><cell>Lazy</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head>Table 6</head><label>6</label><figDesc>Benchmarks where Lazy and Eager are correct</figDesc><table><row><cell></cell><cell>Lazy</cell><cell>Eager</cell><cell>cvc5-int</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Correct</cell><cell>2961</cell><cell>2698</cell><cell>8409</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>SAT</cell><cell>662</cell><cell>425</cell><cell>2135</cell><cell></cell><cell></cell><cell>Lazy</cell><cell>Eager</cell></row><row><cell>UNSAT</cell><cell>2299</cell><cell>2273</cell><cell>6274</cell><cell cols="2">Correct</cell><cell>2679</cell><cell></cell></row><row><cell>Timeout</cell><cell>2124</cell><cell>2709</cell><cell>3769</cell><cell>∑︀</cell><cell>CPU</cell><cell>23000 s</cell><cell>25600 s</cell></row><row><cell>Unsupported</cell><cell>7217</cell><cell>6895</cell><cell>-</cell><cell>∑︀</cell><cell cols="2">Memory 252 GB</cell><cell>327 GB</cell></row><row><cell>Memory Out</cell><cell>-</cell><cell>-</cell><cell>124</cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Total</cell><cell></cell><cell>12302</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell>Table 5</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row><row><cell cols="3">Overview of the evaluation results</cell><cell></cell><cell></cell><cell></cell><cell></cell><cell></cell></row></table></figure>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Fontaine</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
		<ptr target="www.SMT-LIB.org" />
		<title level="m">The SMT-LIB Standard: Version 2</title>
				<imprint>
			<date type="published" when="2017">2017</date>
			<biblScope unit="volume">6</biblScope>
		</imprint>
		<respStmt>
			<orgName>Department of Computer Science, The University of Iowa</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical Report</note>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<author>
			<persName><forename type="first">A</forename><surname>Niemetz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Preiner</surname></persName>
		</author>
		<author>
			<persName><surname>Bitwuzla</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-031-37703-7_1</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-031-37703-7\_1" />
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification -35th International Conference, CAV 2023</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">C</forename><surname>Enea</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Lal</surname></persName>
		</editor>
		<meeting><address><addrLine>Paris, France</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2023">July 17-22, 2023. 2023</date>
			<biblScope unit="volume">13965</biblScope>
			<biblScope unit="page" from="3" to="17" />
		</imprint>
	</monogr>
	<note>Proceedings, Part II</note>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">Cvc5 at the smt competition</title>
		<author>
			<persName><forename type="first">L</forename><surname>Aniva</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Brain</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Camillo</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kremer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lachnitt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mohamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mohamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Niemetz</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2023">2023</date>
			<biblScope unit="page">2023</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Bitprecise reasoning via int-blasting</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Zohar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Irfan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Niemetz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Nötzli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Preiner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Reynolds</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Verification, Model Checking, and Abstract Interpretation</title>
				<editor>
			<persName><forename type="first">B</forename><surname>Finkbeiner</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">T</forename><surname>Wies</surname></persName>
		</editor>
		<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer International Publishing</publisher>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="496" to="518" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">A calculus for modular loop acceleration</title>
		<author>
			<persName><forename type="first">F</forename><surname>Frohn</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-45190-5_4</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-030-45190-5\_4" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems -26th International Conference, TACAS 2020, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2020</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">A</forename><surname>Biere</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Parker</surname></persName>
		</editor>
		<meeting><address><addrLine>Dublin, Ireland</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2020">April 25-30, 2020. 2020</date>
			<biblScope unit="volume">12078</biblScope>
			<biblScope unit="page" from="58" to="76" />
		</imprint>
	</monogr>
	<note>Proceedings, Part I</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Underapproximation of procedure summaries for integer programs</title>
		<author>
			<persName><forename type="first">P</forename><surname>Ganty</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Iosif</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Konecný</surname></persName>
		</author>
		<idno type="DOI">10.1007/s10009-016-0420-7</idno>
		<ptr target="https://doi.org/10.1007/s10009-016-0420-7.doi:10.1007/s10009-016-0420-7" />
	</analytic>
	<monogr>
		<title level="j">Int. J. Softw. Tools Technol. Transf</title>
		<imprint>
			<biblScope unit="volume">19</biblScope>
			<biblScope unit="page" from="565" to="584" />
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Program analysis as constraint solving</title>
		<author>
			<persName><forename type="first">S</forename><surname>Gulwani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Srivastava</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Venkatesan</surname></persName>
		</author>
		<idno type="DOI">10.1145/1375581.1375616</idno>
		<idno>doi:10.1145/1375581.1375616</idno>
		<ptr target="https://doi.org/10.1145/1375581.1375616" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation</title>
				<editor>
			<persName><forename type="first">R</forename><surname>Gupta</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><forename type="middle">P</forename><surname>Amarasinghe</surname></persName>
		</editor>
		<meeting>the ACM SIGPLAN 2008 Conference on Programming Language Design and Implementation<address><addrLine>Tucson, AZ, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2008">June 7-13, 2008. 2008</date>
			<biblScope unit="page" from="281" to="292" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Linear invariant generation using non-linear constraint solving</title>
		<author>
			<persName><forename type="first">M</forename><surname>Colón</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Sankaranarayanan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Sipma</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-540-45069-6_39</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-540-45069-6\_39" />
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification, 15th International Conference, CAV 2003</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">W</forename><forename type="middle">A H</forename><genName>Jr</genName></persName>
		</editor>
		<editor>
			<persName><forename type="first">F</forename><surname>Somenzi</surname></persName>
		</editor>
		<meeting><address><addrLine>Boulder, CO, USA</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2003">July 8-12, 2003. 2003</date>
			<biblScope unit="volume">2725</biblScope>
			<biblScope unit="page" from="420" to="432" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Synthesis of linear ranking functions</title>
		<author>
			<persName><forename type="first">M</forename><surname>Colón</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Sipma</surname></persName>
		</author>
		<idno type="DOI">10.1007/3-540-45319-9_6</idno>
		<ptr target="https://doi.org/10.1007/3-540-45319-9_6.doi:10.1007/3-540-45319-9\_6" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems, 7th International Conference, TACAS 2001 Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2001</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">T</forename><surname>Margaria</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">W</forename><surname>Yi</surname></persName>
		</editor>
		<meeting><address><addrLine>Genova, Italy</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2001">April 2-6, 2001. 2001</date>
			<biblScope unit="volume">2031</biblScope>
			<biblScope unit="page" from="67" to="81" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Linear ranking with reachability</title>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">R</forename><surname>Bradley</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Manna</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><forename type="middle">B</forename><surname>Sipma</surname></persName>
		</author>
		<idno type="DOI">10.1007/11513988_48</idno>
		<ptr target="https://doi.org/10.1007/11513988_48.doi:10.1007/11513988\" />
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification, 17th International Conference, CAV 2005</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">K</forename><surname>Etessami</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><forename type="middle">K</forename><surname>Rajamani</surname></persName>
		</editor>
		<meeting><address><addrLine>Edinburgh, Scotland, UK</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2005">July 6-10, 2005. 2005</date>
			<biblScope unit="volume">3576</biblScope>
			<biblScope unit="page" from="491" to="504" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title/>
		<idno type="DOI">10.1007/11513988_48</idno>
		<imprint>
			<biblScope unit="page">48</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Constraint solving for program verification: Theory and practice by example</title>
		<author>
			<persName><forename type="first">A</forename><surname>Rybalchenko</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-14295-6_7</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-642-14295-6\_7" />
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification, 22nd International Conference, CAV 2010</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">T</forename><surname>Touili</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">B</forename><surname>Cook</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">P</forename><forename type="middle">B</forename><surname>Jackson</surname></persName>
		</editor>
		<meeting><address><addrLine>Edinburgh, UK</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2010">July 15-19, 2010. 2010</date>
			<biblScope unit="volume">6174</biblScope>
			<biblScope unit="page" from="57" to="71" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Barth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Heizmann</surname></persName>
		</author>
		<ptr target="https://smt-comp.github.io/2023/system-descriptions/UltimateIntBlastingWrapper%2BSMTInterpol.pdf" />
		<title level="m">Ultimate IntBlastingWrapper</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Smtinterpol: An interpolating SMT solver</title>
		<author>
			<persName><forename type="first">J</forename><surname>Christ</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hoenicke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Nutz</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-31759-0_19</idno>
		<ptr target="https://doi.org/10.1007/978-3-642-31759-0_19.doi:10.1007/978-3-642-31759-0\_19" />
	</analytic>
	<monogr>
		<title level="m">Model Checking Software -19th International Workshop, SPIN 2012</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">A</forename><forename type="middle">F</forename><surname>Donaldson</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Parker</surname></persName>
		</editor>
		<meeting><address><addrLine>Oxford, UK</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2012">July 23-24, 2012. 2012</date>
			<biblScope unit="volume">7385</biblScope>
			<biblScope unit="page" from="248" to="254" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">C</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Pang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Dietsch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Koskinen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Le</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Portokalidis</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Xu</surname></persName>
		</author>
		<idno>CoRR abs/2105.05159</idno>
		<ptr target="https://arxiv.org/abs/2105.05159.arXiv:2105.05159" />
		<title level="m">Source-level bitwise branching for temporal verification of lifted binaries</title>
				<imprint>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Synthesizing safe bit-precise invariants</title>
		<author>
			<persName><forename type="first">A</forename><surname>Gurfinkel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Belov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Marques-Silva</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-54862-8_7</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-642-54862-8\_7" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems -20th International Conference, TACAS 2014, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2014</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">E</forename><surname>Ábrahám</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">K</forename><surname>Havelund</surname></persName>
		</editor>
		<meeting><address><addrLine>Grenoble, France</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014">April 5-13, 2014. 2014</date>
			<biblScope unit="volume">8413</biblScope>
			<biblScope unit="page" from="93" to="108" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Effective word-level interpolation for software verification</title>
		<author>
			<persName><forename type="first">A</forename><surname>Griggio</surname></persName>
		</author>
		<ptr target="http://dl.acm.org/citation.cfm?id=2157662" />
	</analytic>
	<monogr>
		<title level="m">International Conference on Formal Methods in Computer-Aided Design, FMCAD &apos;11</title>
				<editor>
			<persName><forename type="first">P</forename><surname>Bjesse</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Slobodová</surname></persName>
		</editor>
		<meeting><address><addrLine>Austin, TX, USA</addrLine></address></meeting>
		<imprint>
			<publisher>FMCAD Inc</publisher>
			<date type="published" when="2011-11-02">October 30 -November 02, 2011. 2011</date>
			<biblScope unit="page" from="28" to="36" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Mind the gap: Bit-vector interpolation recast over linear integer arithmetic</title>
		<author>
			<persName><forename type="first">T</forename><surname>Okudono</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>King</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-45190-5_5</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-030-45190-5\_5" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems -26th International Conference, TACAS 2020, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2020</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">A</forename><surname>Biere</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Parker</surname></persName>
		</editor>
		<meeting><address><addrLine>Dublin, Ireland</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2020">April 25-30, 2020. 2020</date>
			<biblScope unit="volume">12078</biblScope>
			<biblScope unit="page" from="79" to="96" />
		</imprint>
	</monogr>
	<note>Proceedings, Part I</note>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Bit-vector interpolation and quantifier elimination by lazy reduction</title>
		<author>
			<persName><forename type="first">P</forename><surname>Backeman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Rümmer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Zeljic</surname></persName>
		</author>
		<idno type="DOI">10.23919/FMCAD.2018.8603023</idno>
		<ptr target="https://doi.org/10.23919/FMCAD.2018.8603023.doi:10.23919/FMCAD.2018.8603023" />
	</analytic>
	<monogr>
		<title level="m">Formal Methods in Computer Aided Design, FMCAD 2018</title>
				<editor>
			<persName><forename type="first">N</forename><forename type="middle">S</forename><surname>Bjørner</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Gurfinkel</surname></persName>
		</editor>
		<meeting><address><addrLine>Austin, TX, USA</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2018-10-30">2018. October 30 -November 2, 2018. 2018</date>
			<biblScope unit="page" from="1" to="10" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Towards bit-widthindependent proofs in SMT solvers</title>
		<author>
			<persName><forename type="first">A</forename><surname>Niemetz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Preiner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Reynolds</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zohar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">W</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-29436-6_22</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-030-29436-6\_22" />
	</analytic>
	<monogr>
		<title level="m">Automated Deduction -CADE 27 -27th International Conference on Automated Deduction</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">P</forename><surname>Fontaine</surname></persName>
		</editor>
		<meeting><address><addrLine>Natal, Brazil</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2019">August 27-30, 2019. 2019</date>
			<biblScope unit="volume">11716</biblScope>
			<biblScope unit="page" from="366" to="384" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Bridging hardware and software analysis with btor2c: A wordlevel-circuit-to-c translator</title>
		<author>
			<persName><forename type="first">D</forename><surname>Beyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Chien</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Lee</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-031-30820-8_12</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-031-30820-8\_12" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems -29th International Conference, TACAS 2023, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2022</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">S</forename><surname>Sankaranarayanan</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">N</forename><surname>Sharygina</surname></persName>
		</editor>
		<meeting><address><addrLine>Paris, France</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2023">April 22-27, 2023. 2023</date>
			<biblScope unit="volume">13994</biblScope>
			<biblScope unit="page" from="152" to="172" />
		</imprint>
	</monogr>
	<note>Proceedings, Part II</note>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">cvc5: A versatile and industrial-strength SMT solver</title>
		<author>
			<persName><forename type="first">H</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">W</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Brain</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kremer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lachnitt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mohamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mohamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Niemetz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Nötzli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ozdemir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Preiner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Reynolds</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Sheng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zohar</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-99524-9_24</idno>
		<ptr target="https://doi.org/10.1007/978-3-030-99524-9_24.doi:10.1007/978-3-030-99524-9\_24" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems -28th International Conference, TACAS 2022, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2022</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">D</forename><surname>Fisman</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Rosu</surname></persName>
		</editor>
		<meeting><address><addrLine>Munich, Germany</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2022">April 2-7, 2022. 2022</date>
			<biblScope unit="volume">13243</biblScope>
			<biblScope unit="page" from="415" to="442" />
		</imprint>
	</monogr>
	<note>Proceedings, Part I</note>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Reliable benchmarking: Requirements and solutions</title>
		<author>
			<persName><forename type="first">D</forename><surname>Beyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Löwe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Wendler</surname></persName>
		</author>
		<idno type="DOI">10.1007/s10009-017-0469-y</idno>
	</analytic>
	<monogr>
		<title level="j">STTT</title>
		<imprint>
			<biblScope unit="volume">21</biblScope>
			<biblScope unit="page" from="1" to="29" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
