GaloisInc / pate

Patches Assured up to Trace Equivalence

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Use defined functions to represent memory read/writes

danmatichuk opened this issue · comments

Currently memory reads and writes are represented in terms of their primitive byte operations on the underlying memory store. This makes the resulting terms difficult to interpret, as their high-level structure has been lost.

It would be straightforward to instead represent memory reads and writes as defined function calls, which would result in much more understandable terms. In particular, this would likely assist in the future task of generating explanations for traces, which will involve term analysis in order to locate the genesis of divergences between slices.

An initial attempt is in #334, but there are still a fair number of outstanding issues that were introduced from this. In particular a lot of the static evaluation/unfolding that What4 performs on array accesses is no longer applicable.

This would likely need to be resolved by just coming up with a custom simplification step that performs these operations at the level of reads/writes, rather than array accesses.