Sat Apr 10 16:21:09 EDT 2010
Computer Algebra System (CAS)
From what I gather, a generic "simplify" method is a collection of
hacks, because there is no generic notion of what "simple" actually
Side-stepping that issue, particular transformations are usually
well-defined. From my own limited experience with static analysis &
abstract interpretation, it seems best to map expressions between
different domains. From an engineering point of view it is almost
always simpler to split any transformation stap in at least two steps,
and have formal intermediate languages. For any transformation step:
* Convert equivalent expressions (L1) to a unique normal form (L2).
* Express complicated transformations as directed equalities
(pattern matching functions) on normal forms (L2) to some target
* Optionally, re-embed the target domain (L3) into the original
(L1) or some other domain.