[klee-dev] Adding assignments to state constraints

felicia felicia at comp.nus.edu.sg
Wed Nov 4 09:11:06 GMT 2015


Hi Tomek,

The purpose I am doing this, is because I would like to ask the solver 
even at the point before x is used in the branch condition.

For example, in this code:
int add(int p1, int p2, int p3, int x) {
   if(x <= 0){
	  if(p1 > 8) x = x;
		else x = x + 1;
	  if(p2 > 8) x = x;
		else x = x + 2;

	  assert(x <= 3);
   }
   return x;
}

In this case, the code has 3 branches condition (p1 > 8), (p2 >8) and 
the assertion (x <= 3).
Since KLEE normally do the FALSE condition first, it will execute (p1 <= 
8) and it will do the addition (x + 1). At the second branch (p2 > 8), 
for example, I need to ask the solver whether x <= 0 by using 
solver->evaluate(current constraint, x <= 0, result) . Since the current 
constraints are only x <= 0 and p1<=8, the solver would say it is 
satisfiable (although it's actually not). Therefore, I would like to add 
constraint x + 1 at this point, so the solver aware about this.

Thank you.

On 2015-11-04 16:50, Kuchta, Tomasz wrote:
> Hi Felicia,
> 
> Why would you like to add assignments to the constraints?
> What do you want to achieve?
> In your example, if ‘x' is later on present in a branch condition,
> e.g. if (x < 5) , the symbolic expression that you quote
> will be incorporated in the condition instead of ‘x’. As a result you
> should end up with having something like
> (Add w32 1 (ReadLSB w32 0 x)) < 5 added to your constraint set (on the
> “then” side of the branch).
> 
> Kind regards,
> 
> Tomek
> 
> 
>> On 4 Nov 2015, at 08:18, felicia <felicia at comp.nus.edu.sg> wrote:
>> 
>> Hi,
>> 
>> I would like to ask on how to collect assignments in the state's 
>> constraints.
>> Because currently KLEE only collect the constraints at the branch 
>> condition.
>> I have tried to add the assignment expression in the state 
>> constraints.
>> For example, x = x + 1 has assignment expression like this (Add w32 1 
>> (ReadLSB w32 0 x)).
>> Then, I add (Add w32 1 (ReadLSB w32 0 x)) at state constraints.
>> However, this way always give me an assertion error.Please let me know 
>> if you have any suggestion regarding this.
>> 
>> Thank you.
>> 
>> 
>> 
>> _______________________________________________
>> 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