Description
Conditional Term Rewriting (CTR) is a general methodology in symbolic computing. CTR sets Mathematica apart from being just a Computer-Algebra System (CAS). It is the technology behind metaprogramming and the uniquely powerful macro systems of all Lisp languages.
With CTR and SymPy, we can be a better Mathematica than Mathematica. Without CTR, we will not even be a complete Python. Python is already capable of CTR (https://github.com/lihaoyi/macropy). Also, without CTR, we will never compile any real-world Lisp like Clojure, Common Lisp, or Scheme.
All of our ASR->ASR
transformations are CTR in disguise. Let's take off the disguises, implement CTR professionally, elegantly, efficiently, generally; craft ASR for doing ASR->ASR
in ASR itself.
This is not a small job, but it might be easier than it seems at first glance because we already have the kernel of the idea, just below the surface.