This example:
https://github.com/rod-chapman/cbmc-examples/tree/main/arrays
doing “make TARGET=assign_st1”
generates 303 properties for just 8 lines of code!
There seems to a lot of repetition on those
Checking that pointers are not NULL over and over again
Checking that dst[0] is valid
and so on...
While most of these properties are trivial in isolation, I am concerned that the sheer number of them is leading to explosion on the SAT engine inside Z3. Reducing the repetion might have a big impact on overall performance.
- Why does this repetition exist in the first place? Is it really necessary?
- Can some/all of the repetition be removed?
This example:
https://github.com/rod-chapman/cbmc-examples/tree/main/arrays
doing “make TARGET=assign_st1”
generates 303 properties for just 8 lines of code!
There seems to a lot of repetition on those
Checking that pointers are not NULL over and over again
Checking that dst[0] is valid
and so on...
While most of these properties are trivial in isolation, I am concerned that the sheer number of them is leading to explosion on the SAT engine inside Z3. Reducing the repetion might have a big impact on overall performance.