[klee-dev] Understanding of KQuery

Yao, Mingxuan mingxuanyao at gatech.edu
Thu Aug 11 17:05:34 BST 2022


Hi,

I was going through the documentation of KQuery, and I got a little confused about Query Commands.

The documentation says that query-expression​ is the expression to determine the validity of the query. Does it mean that Klee evaluates query-expression​ under the constraints defined in costraint-list​ to see if it is satisfiable? If so, why the query below is invalid? From my understanding, the constraints were saying that (a != 0), and the query expression was saying that if it is possible that (a >= 0). In this case, should (a > 0) be the answer?

array a[4] : w32 -> w8 = symbolic
(query [(Eq false
            (Eq 0
                  N0:(ReadLSB w32 0 a)))]
      (Eq false (Slt N0 0)) []
      [a])
And when I read the documentation, the examples given always have query-expression​ assigned with false. What does it mean in the context of the query?

The last question (sry, I have lots of questions lol) I have is the usage of eval-expr-list​. The documentation says, 'If a counterexample is desired for invalid queries, this is a list of expressions for which a possible value should be constructed.' Does it mean that klee only generate examples for invalid queries and how klee uses eval-expr-list​ to generate test cases? Examples would be much appreciated!

Best,
Ming
-------------- next part --------------
HTML attachment scrubbed and removed


More information about the klee-dev mailing list