Very interesting analogy. Many 3D modeling programs had undos based on clean abstractions (history of transformation matrices for object P&#x2F;O&#x2F;S, stack of operators to influence geometry) but it often broke when you go below. Houdini (one that was fairly dogmatic about being &#x27;procedural&#x27;) had to reify vertices&#x2F;edges modification as an Edit node in its object graph to stay coherent without losing information (or making it a second class citizen).