Today I read a paper titled “Data-Structure Rewriting”
The abstract is:
We tackle the problem of data-structure rewriting including pointer redirections.
We propose two basic rewrite steps: (i) Local Redirection and Replacement steps the aim of which is redirecting specific pointers determined by means of a pattern, as well as adding new information to an existing data ; and (ii) Global Redirection steps which are aimed to redirect all pointers targeting a node towards another one.
We define these two rewriting steps following the double pushout approach.
We define first the category of graphs we consider and then define rewrite rules as pairs of graph homomorphisms of the form “L <- K ->R”.
Unfortunately, inverse pushouts (complement pushouts) are not unique in our setting and pushouts do not always exist.
Therefore, we define rewriting steps so that a rewrite rule can always be performed once a matching is found.