-
Notifications
You must be signed in to change notification settings - Fork 277
Open
Labels
Code ContractsFunction and loop contractsFunction and loop contractsawsBugs or features of importance to AWS CBMC usersBugs or features of importance to AWS CBMC users
Description
Results of function calls are not allowed to be interrogated in the history. For instance when compiling this example with goto-cc
int deref(int * i) {
return *i;
}
void modify(int * ptr)
__CPROVER_ensures(__CPROVER_old(deref(ptr)) + 4 == *ptr)
{
*ptr += 4;
}
int main() {
int i = 0;
modify(&i);
return 0;
}
We get the error
old_test_2.c: In function 'modify':
old_test_2.c:7:1: error: Tracking history of side_effect expressions is not supported yet.
__CPROVER_ensures(__CPROVER_old(deref(ptr)) + 4 == *ptr)
CONVERSION ERROR
However the implementation of history variables is simply a storing into a temporary variable, which should be possible even through function calls.
Metadata
Metadata
Assignees
Labels
Code ContractsFunction and loop contractsFunction and loop contractsawsBugs or features of importance to AWS CBMC usersBugs or features of importance to AWS CBMC users