A puzzling result of the `ReplaceAll` [duplicate]

This question already has an answer here:

Why is ReplaceAll behaving like this?

1 answer

I tried to do something below

Log[PDF[NormalDistribution[m, s], x]] /. Log[u_[x__] ] :> Plus @@ Log[List[x]]

which gives a desirable result that splits the expression into pieces.
Note that PDF[NormalDistribution[m, s], x] was evaluated of the form Times[a,b,c] and thus u was identified as Times.

However, if I replace u_ by Times, i.e.,

Log[PDF[NormalDistribution[m, s], x]] /. Log[Times[x__] ] :> Plus @@ Log[List[x]]

then, I got an unexpected result that does not change the expression. Can you explain why I should not use Times even though I know that u_ will match Times in the first example?



1 Answer


@Kuba is actually pretty specific.

In[1]:= Log[PDF[NormalDistribution[m, s], x]] /.
HoldPattern[Log[Times[x__]]] :> Plus @@ Log[List[x]]

Out[1]= Log[E^(-((-m + x)^2/(2 s^2)))] – 1/2 Log[2 \[Pi]] + Log[1/s]

BTW, you may also interested in PowerExpand.