Config
Interpreter configuration
The (abstract) interpreter can be seen as a push-down automaton that transits between the configurations where the stack is the implicit call stack of the meta-language.
It's important that the configuration is finite for the analysis to terminate.
For soundness, we need to compute fixed point of the cache, which maps configuration to evaluation result.
Thanks to heap monotonicity, heap is not part of the configuration. Which also avoid computing fix-point on the cache, as the cache is immutable.