I am currently attempting to use VST to verify the correctness of a project which involves a global array of doubles. However, when attempting to access the array I have that the head of the array is given as a data_at
statement while the rest of the array is given as a sepcon
list of mapsto
statements and there does not appear to be any way to prove field_compatible
for elements beyond the head of the array.
Trying to access elements beyond offset_val 0
seems to inevitably involve proving a size_compatible
statement. This is where I run into a problem. Since the alignment of tdouble
is set to 4 and the size is set to 8, there seems to be a possibility that the head of the array is at Ptrofs.modulus - 12
making size_compatible
false for the next element in the array. Am I going about this the wrong way?
I made a toy example with the same problem that I've mentioned above.
double dbls[] = {0.0, 1.1};
int main() {
double sum;
sum = dbls[0] + dbls[1];
return 0;
}
I will frame my answer in the form of a Coq development: