Is it possible to multiply with a derivative operator?

Alright, well currently you can use my prototype implementation from Leibniz.jl (which will not be needed in the future as the feature will be built into Grassmann.jl itself)

using Leibniz, DirectSum, SymEngine
import Leibniz: Monomial
printindices(V,D) = (io=IOBuffer();DirectSum.printindices(io,V,D,true);String(take!(io)))
Base.:*(d::Monomial{V,G,D,0} where G,r::Basic) where {V,D} = diff(r,symbols(Symbol(printindices(V,D))))
Base.:*(d::Monomial{V,1,D,1},r::Basic) where {V,D} = diff(r,symbols(Symbol((printindices(V,D)))))
x,y = symbols(:v1),symbols(:v2)
A = [x y^2; y^2 x*y]
b = [∂(ℝ^2,1),∂(ℝ^2,2)]

something like this should work with SymEngine at least

julia> A*b
2-element Array{Any,1}:
 1 + 2*v2
       v1

is that what you wanted? as I said, Leibniz is a prototype for what will be available in Grassmann

2 Likes