While discussing the issue with looking for multiple assertion violations with Corral (brought up by @shaobo-he), I realized that SMACK implements assertions in an "interesting" way that introduces a level of indirection.
Basically, we have a procedure that looks as follows:
procedure __SMACK_assert(cond : bool) {
assert cond;
}
Then, everywhere we have an assertion in the source code, we do not inject assert statement directly, but rather invoke __SMACK_assert, which adds a level of indirection.
This clearly causes an issue if we are looking for multiple assertion violations.
However, I've been wondering if this kind of encoding messes up other algorithms that Corral implements. Such as maybe property-directed verification, etc. Thoughts?
Basically, I am wondering if there would be benefits to "inlining" those assertions to remove the indirection, in terms of performance, scalability, etc.
Thoughts?
While discussing the issue with looking for multiple assertion violations with Corral (brought up by @shaobo-he), I realized that SMACK implements assertions in an "interesting" way that introduces a level of indirection.
Basically, we have a procedure that looks as follows:
Then, everywhere we have an assertion in the source code, we do not inject
assertstatement directly, but rather invoke__SMACK_assert, which adds a level of indirection.This clearly causes an issue if we are looking for multiple assertion violations.
However, I've been wondering if this kind of encoding messes up other algorithms that Corral implements. Such as maybe property-directed verification, etc. Thoughts?
Basically, I am wondering if there would be benefits to "inlining" those assertions to remove the indirection, in terms of performance, scalability, etc.
Thoughts?