Derivatives of user-defined control-flow functions

*To*: mathgroup at smc.vnet.net*Subject*: [mg51057] Derivatives of user-defined control-flow functions*From*: "Maxim A. Dubinnyi" <maxim at nmr.ru>*Date*: Sun, 3 Oct 2004 05:47:24 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Can anyone correctly define derivatives of user-defined control-flow functions? The derivative of build-in control function 'If' is evaluated as: In[]= D[If[f[x], g[x], h[x]], x] Out[]= If[f[x],g'[x],h'[x]] Which is perfectly correct answer. I wish to introduce my own control flow function MyIf and define it's derivatives with properties identical to ones in build-in If function. Usually derivatives are defined via properties of symbol 'Derivative' by setting Derivative[order...][function_name]:= (derivative definition) but this method fails in case of control-flow expressions. The problem origin is in the rule for derivatives of composite functions: In[]= D[f[g[x]], x] Out[]= f'[g[x]]g'[x] This rule should not be applied if 'f' is control-flow function such as 'If', 'Which', etc, and it is really so for build-in control-flow expressions. But how can I suppress this deepely build-in rule for some user-defined symbols? I am experienced user of Mathematica, and I use widely symbolic and functional programming in my applications, but can't find any solution of this problem. Is it the task which can't be solved by means of Mathematica symbolic programming language? Maxim A. Dubinnyi