> 1\. Mathematical functions such as exp and sin. We need the deep embedding to 
> do simplifications like exp(ln(x)) = x but that limits us to the functions 
> hardcoded in the code. Or perhaps we could use something like this to let the 
> user define their own types along with a seq of simplification rules. Let's 
> say someone created a library with a lot of functions this way for the 
> symbolic library. Could the end-user then import the function-library and use 
> the function-kinds defined there along with the default ones? Say someone 
> writes a library with Bessel functions and they want to use them along with 
> the sin and cos that comes by default.

This is a simplification pass in a compiler. You take the AST and if it matches 
a simplification that the compiler recognized you merge the nodes.

Reply via email to