ultimate-pa / ultimate

The Ultimate program analysis framework.
https://ultimate-pa.org/
198 stars 41 forks source link

Partitioned Memory Model for Ultimate #406

Open alexandernutz opened 5 years ago

alexandernutz commented 5 years ago

Just throwing out some thoughts related to the memory model of the C translation. I am trying to evaluate if this is a reasonable approach for Ultimate. Depending on how difficult/time-consuming it is, I might implement it, or perhaps it is just one more thing that would be nice to have.

Proposed Addition to the C translation:

This approach is proposed in several papers. One example, including some smart refinements, is Wang, Barret, Wies, Partitioned Memory Models for Program Analysis .

You might ask: Why do that in the C translation?/What is the difference to what the "heap separator" does? Answer: pointer analysis on C is much simpler than its Boogie counterpart because of the following line of reasoning:

Example: Say two pointers p and q are both 0 at some point in the program. Then the heap separator must check "Are p and q used to access memory while they have the same value?".
A pointer analysis for C programs can simply make the assumption that neither of them is accessed while it is 0 since that would be undefined behaviour.

Heizmann commented 5 years ago

I do not understand all details here. But I am interested to discuss this after the SV-COMP deadline.