Thank you!
I tried to play around with it. However, I do not seem to understand how to get it to work. For example, I try to expand a function and to differentiate a function, by slightly modifying your codes:
using ModelingTools
using SymEngine
julia> f( (x,f) ) = x^2 + y
f (generic function with 1 method)
julia> vars = @variables x, y
(x, y)
julia> ex = f(vars)
x ^ 2 + y
julia> diff(ex, x)
ERROR: MethodError: no method matching diff(::Operation, ::Operation)
Stacktrace:
[1] top-level scope at REPL[48]:1
julia> f( (x,f) ) = x^2 + y*x + (x+1)*(x+2)
f (generic function with 1 method)
julia> vars = @variables x, y
(x, y)
julia> ex = f(vars)
(x ^ 2 + y * x) + (x + 1) * (x + 2)
julia> diff(ex, x)
ERROR: MethodError: no method matching diff(::Operation, ::Operation)
Stacktrace:
[1] top-level scope at REPL[52]:1
julia> expand(ex, x)
ERROR: MethodError: no method matching expand(::Operation, ::Operation)
Stacktrace:
[1] top-level scope at REPL[53]:1