**Edited because the goal was changed in the comment:** This can be done by directly defining the outcome of `Derivative` when applied to `g` in the two combinations that you seem to be interested in: Derivative[1][g][x_] := d[g[x]] Derivative[1][Conjugate][g[x_]] := Conjugate[d[g[x]]]/d[g[x]]; Derivative[1][Conjugate][d[x_]] := Conjugate[d[d[x]]]/d[d[x]] Derivative[1][d][x_] := d[d[x]]/d[x]; Derivative[1][d][x_Symbol] := d[d[x]] On the second line, I used the fact that `g` is a generic function whose derivative under a `Conjugate` by default invokes the chain rule. All I do then is to *reverse* the chain rule by dividing by the factor `d[g[x]]` that the chain rule will produce. This leaves only the factor I want, and I then replace that by the desired outcome `d[Conjugate[g[x]]]`. The analogous thing is done for `d` to allow higher derivatives. The exception is when `d[x]` is encountered where `x` is the differentiation variable (which isn't in the question, but I expect may happen). Then there is no chain rule needed, and I therefore specify a separate rule for it with the pattern `x_Symbol`. Here is the test: D[g[x], x] (* ==> d[g[x]] *) D[Conjugate[g[x]], x] (* ==> d[Conjugate[g[x]]] *) D[g[x], x, x] (* ==> d[d[g[x]]] *) D[d[g[x]], x] (* ==> d[d[g[x]]] *) D[d[x], x] (* ==> d[d[x]] *) D[Conjugate[g[x]], x] (* ==> Conjugate[d[g[x]]] *) D[Conjugate[g[x]], x, x] (* ==> Conjugate[d[d[g[x]]]] *) Now the remaining issue is to replace the repeated application of `d` by formatting of the type `d^2 g[x]` for `d[d[g[x]]]`. I'll wait to see if this is really desired before doing it.