Transform an expression.
(simpadd0-expr expr gin state) → (mv new-expr gout)
Variables (i.e. identifier expressions) and constants are handled by separate functions.
String literals undergo no transformation. No theorems are generated for them, since our formal dynamic semantics does not cover them yet.
When we encounter constructs unsupported in the formal dynamic semnatics, we do not generate a theorem. Currently we also do not generate a theorem also for supported constructs for which we have not implemented theorem generation yet: we are in the process of extending the implementation.
When we encounter a parenthesized expression, we recursively transform the inner expression, and then we use a separate function to do the rest.
When we encounter an expression