ReplaceRepeated

expr //. rule replaces all occurences of the LHS of rule with the RHS of rule in expr repeatedly until the expression stabilizes.

expr //. {r1, r2, ...} performes the same operation as expr //. rule, but evaluating each r_n in sequence.

Attributes[ReplaceRepeated] := {Protected}

Simple examples

ReplaceRepeated can be used to implement logarithm expansion:

In[1]:= logRules := {Log[x_*y_] :> (Log[x] + Log[y]), Log[x_^k_] :> (k*Log[x])}
Out[1]= Null
In[2]:= (Log[a^b*b^(c^d)]) //. (logRules)
Out[2]= b*Log[a] + c^d*Log[b]