# Non-Leibniz differential operators

+1 vote

Hi Everyone.

I am trying to use Cadabra2 with weighted tensor densities. Specifically I'd need to introduce a "non-standard" differential operator, i.e. an operator that does not satisfy the usual Leibniz product rule, but picks up a correction term in addition to the usual product rule.

Is there a way to introduce such a "differentiation" operator in Cadabra?

I tried to just declare dependency with

::Depends(D{#});

for the tensors, and then define the differentiation rules case-by-case, but cadabra seems to misunderstand index positions. For example

_ := D^{A}{Y{A} V} = D^{A}{Y{A}} V + Y{A} D^{A}{V} + N X^{A} D^{B}{Y{A}} D_{B}{V} ;

produces a "free indices do not match" error message, but if I truncate off the last two terms,

_ := D^{A}{Y{A} V} = D^{A}{Y{A}} V ;

the error message disappears. Also, the error message disappears if I run D_#::Derivative; first.

Many Thanks!