I’d like it to have commands like
:subst <ident_name> -- substitute the definition of identifier
:reduce -- reduce lambdas in the current expresions
:case <subexpr> -- consider the cases what (sum typed) subexpr could be
This could be used for proving laws in general (not only in simple cases, when automatic provers like ghc-proofs can do them), but I’m interesting in it not only for this use case. Sometimes it’s hard enough to figure it out, how does some function work and why it behaves so. In this case step-by-step reduction always help me. However doing it manually is sometimes very routine and error-prone.