Comments have identified this as a bug; in the meantime, a simple way to bring back the old behavior for ComplexExpand
in a given session can be obtained by adding the following definition to ComplexExpand
. This builds on Michael E2's (in)activation workaround; I noticed that it really is just the Derivative
symbol itself that gives us grief, so we can restrict our inactivation to Derivative
per se.
Unprotect[complexExpandIntercept, ComplexExpand];
complexExpandIntercept = True;
ComplexExpand[args___] :=
Block[{complexExpandIntercept = False},
Activate[
ComplexExpand @@ Inactivate[{args}, Derivative],
Derivative]] /; complexExpandIntercept
Protect[complexExpandIntercept, ComplexExpand];
{Re, Im}[u'[t]] // Through // ComplexExpand
(* Out: {Derivative[1][u][t], 0} *)
Note: for a brief moment this answer was incorrect due to flipped booleans; now it should be fixed. :)
ComplexExpand
since V6.0, so you should report it. $\endgroup$Activate@ComplexExpand[{Re, Im}[Inactivate[u'[t]]] // Through]
$\endgroup$Simplify[{Re, Im}[u'[t]] // Through, u'[t] \[Element] Reals]
. Or, to have the assumptions persist and just useSimplify
:$Assumptions = $Assumptions && u'[t] \[Element] Reals; {Re, Im}[u'[t]] // Through // Simplify
$\endgroup$