Bit Vector Daniel Kroening and Ofer Strichman Decision Procedure 1/23 Bit Vector Changki Hong @ PSWLAB Decision procedures Decision procedures which we learnt.. SAT Solver BDDs Decision procedure for equality logic … However, what kind of logic do we need to express bitwise operations and bit-wise arithmetic? Logics which we covered can not express those kind of operations. We need bit-vector logic. 2/23 Bit Vector Changki Hong @ PSWLAB We need bit-vector logic We need bit-vector logic Bit-wise operators : bit-wise AND, shift … Bit-wise arithmetic : bit addition, bit multiplication … Since bit-vector has finite domain, so we need to consider overflow problem which can not be happened in unbounded type operations, such as integer domain. We want to verify large formulas Program analysis tools that generate bit-vector formulas: 3/23 CBMC SATABS F-Soft … Bit Vector Changki Hong @ PSWLAB Contents Introduction to bit-vector logic Syntax Semantics Decision procedures for bit-vector logic Flattening bit-vector logic Incremental flattening Conclusion 4/23 Bit Vector Changki Hong @ PSWLAB Bit-vector logic syntax Bit-vector logic syntax 5/23 Bit Vector Changki Hong @ PSWLAB Semantics Following formula obviously holds over the integer domain: ( x y 0) ( x y ) However, this equivalence no longer holds over the bitvectors. Subtraction operation may generate an overflow. Example 3 (2) 5 3 2 011 010 101 6/23 Bit Vector Changki Hong @ PSWLAB Width and Encoding The meaning of a bit-vector formula obviously depends on 1. 2. the width of the expression in bits the encoding - whether it is signed or unsigned Typical encodings: Binary encoding - unsigned l 1 x : ai 2i Two’s complement - signed i 0 l 2 [ x] : -2 n-1 an-1 ai 2i i 0 7/23 Bit Vector Changki Hong @ PSWLAB Examples The width of the expression in bits unsatisfiable for one bit wide bit vectors, but satisfiable for larger widths. x yx z y z The encoding 11001000 means different with respect to each encoding schemes. 11001000 200 [11001000] 128 64 8 56 Notation to clarify width and encoding x[ 32] S width in bits 8/23 U: unsigned binary encoding S : signed two’s complement Bit Vector Changki Hong @ PSWLAB Definition of bit-vector Definition. A bit vector b is a vector of bits with a given length l (or dimension) : b : {0, ... , l 1} {0,1} The i-th bit of the bit vector b is denoted by bi bl 1 bl 2 … b2 b1 b0 l bits 9/23 Bit Vector Changki Hong @ PSWLAB λ - Notation for bit-vectors A lambda expression for a bit vector with l bits has the form i {0, ... , l 1}. f (i ) f (i ) is an expression that denotes the value of the i-th bit. Example i {0, ... ,7}. 0 : i is even 1 : otherwise The expression above denotes the bit vector 10101010. 10/23 Bit Vector Changki Hong @ PSWLAB Examples (cond.) The vector of length l that consists of zeros: i {0, ... , l 1}.0 A function that inverts a bit vector: bv invert ( x) : i {0, ... , l 1}.xi A bit-wise OR: bv or ( x, y) : i {0, ... , l 1}.( xi yi ) 11/23 Bit Vector Changki Hong @ PSWLAB Semantics for arithmetic operators (1/3) What is the answer for the below C program ? On 8 bits architectures, this is 44 which is not 300. Therefore, Bit vector arithmetic uses modular arithmetic. 12/23 Bit Vector Changki Hong @ PSWLAB Semantics for arithmetic operators (2/3) Semantics for addition and subtraction: Semantics for relational operators: 13/23 Bit Vector Changki Hong @ PSWLAB Semantics for arithmetic operators (3/3) Semantics for shift : logical left shift logical right shift arithmetic right shift - the sign bit of a is replicated 14/23 Bit Vector Changki Hong @ PSWLAB Decision procedure for bit-vector Bit-vector flattening Most commonly used decision procedure Transform bit-vector logic to propositional logic, which is then passed to SAT solver. Algorithm Input : A formula in bit-vector arithmetic Output : An equisatisfiable Boolean formula 1. 2. 3. 4. Convert each term into new Boolean variable Set each bit of each term to a new Boolean variable Add constraint for each atom Add constraint for each term 15/23 Bit Vector Changki Hong @ PSWLAB Example Bit-vector formula c a |[l ] b 1. Convert each term into new Boolean variable c a |[l ] b u (t1 ) u (t 2 ) 2. Set each bit of each term to a new Boolean variable u (t1 ) u (t1 ) 0 u (t1 )1 ... u (t1 )l 1 u (t 2 ) u (t 2 ) 0 u (t 2 )1 ... u (t2 )l 1 3. Add constraint for each atom l 1 i 0 4. (u (t1 ) i u (t 2 ) i ) Add constraint for each term l 1 i 0 16/23 (u (t 2 ) i (ai bi )) Bit Vector Changki Hong @ PSWLAB Example (l-bit Adder) 1-bit adder can be defined as follows: sum(a, b, cin ) (a b) cin carry (a, b, cin ) (a b) (( a b) cin ) Carry bit can be defined as follows: ci 17/23 cin :i 0 carry (ai 1 , bi 1 , ci 1 ) : otherwise Bit Vector Changki Hong @ PSWLAB Example (l-bit Adder) l-bit Adder can be defined as follows: add (a, b, cin ) result , cout result i sum(ai , bi , ci ) for i {0, ... , l 1} cout cn The constraints generated by algorithm for the formula t x y is following: l 1 i 0 18/23 (add ( x, y,0).result i u (t1 )i ) Bit Vector Changki Hong @ PSWLAB Incremental bit flattening (1/4) Some arithmetic operation result in very hard formulas Multiplication Multiplier is defined recursively for s {1, ... , n 1} , where n denotes the width of the second operand: mul (a, b,1) 0 mul (a, b, s ) mul(a, b, s 1) (bs ?(a s ) : 0) Therefore, we want to check satisfiability of a given formula without checking satisfiability of sub-formulas which have complicated arithmetic operations such as multiplication. 19/23 Bit Vector Changki Hong @ PSWLAB Incremental bit flattening (2/4) Example a b c b a c a b x y x y This formula is obviously unsatisfiable Since first two conjuncts are inconsistent and last two conjuncts are also inconsistent. SAT solver wants to make a decision of first two conjuncts because a and b are used frequently than x and y. However, this decision isn’t good because last two conjuncts are rather easy to check satisfiability since relation bit-vector operation is less complicate than multiplication bit-vector operation. 20/23 Bit Vector Changki Hong @ PSWLAB Incremental bit flattening (3/4) Pick ‘easy’ part f : b , F : {} Pick F' (I\F) convert to CNF F : F F ' f : b Constraint ( F ) I {} Is f SAT? YES Compute I I {} SAT UNSAT b : Boolean part of F : set of terms that encoded to CNF formula I : set of terms that are inconsistent with the current satisfying assignment 21/23 Bit Vector Changki Hong @ PSWLAB Incremental bit flattening (4/4) Idea : add ‘easy’ parts of the formula first Only add hard parts when needed f only gets stronger - that’s why it is incremental 22/23 Bit Vector Changki Hong @ PSWLAB Conclusion We can compute bit-wise operations and arithmetics using bit-vector logic. There are decision procedures which check satisfiability of given bit-vector logic formula. 23/23 Bit Vector Changki Hong @ PSWLAB
© Copyright 2024 Paperzz