Not completing verification of simple incorrect program in the presence of inductive axiom #56
-
Hi there, I'm not sure if this is a bug or not. Perhaps someone with more knowledge about Caesar could let me know. When I attempt to check a simple incorrect program such as
the verifier hangs if the program also includes an inductive axiom such as
I am using Caesar via the VSCode extension.
Here are the logs from restarting the server and then checking with the above program with the axioms:
|
Beta Was this translation helpful? Give feedback.
Replies: 4 comments
-
Hello Danya! Thanks for your interest and the bug report. Indeed, you raise a real issue. The whole area of reasoning with quantifiers is something we're currently working on and I hope will improve in the next couple of weeks. Let me try to sort the underlying issues. Root problem: Short-term fix: Our ideas for Caesar improvements:
Let me know if this is helpful to you. I'm also always happy to have a Zoom meeting to chat about Caesar usage (just send an email to phisch@cs.rwth-aachen.de). |
Beta Was this translation helpful? Give feedback.
-
Hi Phillipp, Thanks so much for the detailed answer! All your suggestions are helpful. As you might imagine, I am most interested in the case in which the uninterpreted function plays a role in the program I am attempting to verify. I have not had a chance to dig into the Caesar code to see what exactly is generated as a Z3 query. However, I suppose I imagined that the declaration of an uninterpreted function f could be understood in the context of I appreciate your offer to have a Zoom. I am OK for now but I may be in touch in the future :) Best wishes, Danya |
Beta Was this translation helpful? Give feedback.
-
Hello Danya, I think there might be a small mistake there. If you have an uninterpreted function
where For the SMT solver, we ask for a counterexample to this formula. If there is no counterexample, we know the formula is a theorem.
Notice that this is just an existential query. In short:
The fact that a counterexample only requires giving one definition of Checking against all possible interpretations of All of this is done just like in other deductive verifiers such as Dafny/Boogie. Except for the quantitative I hope that helps! |
Beta Was this translation helpful? Give feedback.
-
Hi Philipp, thanks for the detailed reply! I inferred that what you described was the case; I just expected a different behaviour 😄 |
Beta Was this translation helpful? Give feedback.
Hello Danya,
I think there might be a small mistake there. If you have an uninterpreted function
f
, some axioms, and aproc p(x) -> (y) pre a post b { body }
, then the corresponding verification query is something like the following. We want to check that this statement is true:where
vp
is the verification pre-expectation transformer from our paper (think weakest pre-condition).For the SMT solver, we ask for a counterexample to this formula. If there is no counterexample, we know the formula is a theorem.
Thus, the SMT query that we send is of the following form:
Notice that this is just an existenti…