The only method I can think of that will use the built-in simplification routines is to snoop on transformations using either TransformationFunctions
or ComplexityFunction
. Unfortunately neither of these will be restricted to the entire expression therefore what is produced may not be usable. Nevertheless as an example:
FullSimplify[Gamma[1 - x] Gamma[x] Sin[Pi x],
TransformationFunctions -> {Automatic, (Print[#]; #) &}]
During evaluation of In[2]:= Gamma[1-x] Gamma[x] Sin[π x]
During evaluation of In[2]:= Gamma[1-x]
During evaluation of In[2]:= 1-x
During evaluation of In[2]:= -x
During evaluation of In[2]:= -x
During evaluation of In[2]:= Gamma[x]
During evaluation of In[2]:= Sin[π x]
During evaluation of In[2]:= π/2-π x
During evaluation of In[2]:= π-2 π x
During evaluation of In[2]:= -2 π x
During evaluation of In[2]:= 1/2 (π-2 π x)
During evaluation of In[2]:= π x
During evaluation of In[2]:= Gamma[1-x] Gamma[x] Sin[π x]
π
Notes:
For ComplexityFunction
one would use e.g. ComplexityFunction -> ((Print[#]; LeafCount[#]) &)
.
It may be necessary to use ClearSystemCache[]
beforehand to see the steps shown as otherwise the final simplified version may be pulled from cache.