Unfortunately, this does not affect the way paths are explored. In general, it doesn't make sense to use klee_assume(false) and klee_assume(true). The first one terminates the state (klee_assert or klee_report_error are more appropriate for that) and the second one does nothing.

Paul

On 10/04/14 12:51, Urmas Repinski wrote:
Hi.

Sorry mistake in the code.

#define n 10
int main() {

int a[n];
klee_make_symbolic(&a, sizeof(a), "a");

int index = 0;
for (int i = 1; i<n;i++){
if (a[i] < a[index])
index = i;

}
printf("index: %i\n", index);

if (index != 3){
                 klee_assume(false);
//klee_assert(false);
}

        klee_assume(true);
return 0;
}

Urmas.

------------------------------------------------------------------------
From: [email protected]
To: [email protected]; [email protected]
Date: Thu, 10 Apr 2014 14:49:32 +0300
Subject: Re: [klee-dev] Direct Search Towards Assertion

Hi, Kirill.

As far as during generation paths, where klee_assume(false) occur, are
not processed, then i suggest to try following:

If you require input when index == 3 to be generated, then it is
possible to disable all paths where index != 3, and to launch generation.

This should make generation of the input with properties you require.

Try this one:

#define n 10
int main() {

int a[n];
klee_make_symbolic(&a, sizeof(a), "a");

int index = 0;
for (int i = 1; i<n;i++){
if (a[i] < a[index])
index = i;

}
printf("index: %i\n", index);

if (index != 3){
                 klee_assume(false);
//klee_assert(false);
}

        klee_assume(false);
return 0;
}


This should help,
Urmas Repinski.


------------------------------------------------------------------------
Date: Thu, 10 Apr 2014 09:25:10 +0100
From: [email protected]
To: [email protected]
Subject: [klee-dev] Direct Search Towards Assertion

Hello everyone.

I have a simple example, with the list of symbolic integers, and I am
searching for the smallest one. At the end of the code I am checking if
element at position [3] was the smallest one, and assert.
code:

#define n 10
int main() {

int a[n];
klee_make_symbolic(&a, sizeof(a), "a");

int index = 0;
for (int i = 1; i<n;i++){
if (a[i] < a[index])
index = i;

}
printf("index: %i\n", index);

if (index == 3){
klee_assert(false);
}

return 0;
}

I am running with "-search=dfs" argument. In this example KLEE generates
2^(n-1) code paths in the for loop by trying all different combinations
of input data.

Question: I do not really care to cover all possible code paths in the
for loop, I only care that the smallest element is not at position=3. I
expect this assertion to produce constrain something like: a[3] < a[0]
&& a[3] < a[1] etc. Which should be easy to resolve.
How can I "ask" KLEE to try to trigger this assertion as quick as
possible at the beginning of the search?

Thank you.
Kirill

_______________________________________________ klee-dev mailing list
[email protected] https://mailman.ic.ac.uk/mailman/listinfo/klee-dev

_______________________________________________ klee-dev mailing list
[email protected] https://mailman.ic.ac.uk/mailman/listinfo/klee-dev


_______________________________________________
klee-dev mailing list
[email protected]
https://mailman.ic.ac.uk/mailman/listinfo/klee-dev



_______________________________________________
klee-dev mailing list
[email protected]
https://mailman.ic.ac.uk/mailman/listinfo/klee-dev

Reply via email to