[klee-dev] Why restrict to bitvectors?

Pablo González de Aledo pabloga at teisa.unican.es
Thu Apr 11 16:52:38 BST 2013


Hi Dan. Thanks for your help and quick answer :-).

Although STP solver only works with bitvectors, I think now it exists 
more advanced solvers like z3 that support more logics. About the 
disadvantages of using bitvectors, my humble opinion is that, even if 
they have enough expressive power to represent any type on a computer, 
they represent it in the 'most general way'. Disadvantages in such 
generality might be speed ( I believe integer solvers are faster than 
bit-vector ones ), or larger queries.

I'm currently starting a PhD in verification. Do you (for all) think 
integrating an integer --or real-- solver in klee would be an 
interesting subject?.

Thanks


On 04/11/2013 02:02 PM, Daniel Liew wrote:
> Hi Pablo,
>
> The underlying constraint solver ONLY works in terms of bitvectors
> (although other SMT solvers can use other types). KLEE spends a large
> majority of its time running its constraint solver so it makes sense
> to represent constraints in a format that is close to what the solver
> needs.  So it would not be faster to keep the queries in a different
> format.
>
> There is a transformation into bitvectors as you suggest but there is
> nothing wrong with thinking of variables as bitvectors. An "int" is a
> bitvector and a "double" is a bitvector for example. Every data type
> in a computer can be represented as a bitvector. You can only
> precisely represent an int data type to the solver as a bitvector. An
> Integer to the SMT solvers I know of are "mathematical" integers which
> are very different fixed bit-width integers in a computer.
>
> Hope that helps,
>
> Dan.
>
> On 11 April 2013 14:57, Pablo González de Aledo <pabloga at teisa.unican.es> wrote:
>> Hi, I'm introducing myself into klee, and I'm wondering why does klee
>> restrict queries and transforms all them into bitvectors?. Wouldn't it
>> be faster and easier to keep integer expressions as is, and transform
>> only what is necessary because of bitwise operations such as &.|,^ ...?
>>
>> Thanks
>>
>> _______________________________________________
>> klee-dev mailing list
>> klee-dev at imperial.ac.uk
>> https://mailman.ic.ac.uk/mailman/listinfo/klee-dev





More information about the klee-dev mailing list