       Re: FullSimplify and HypergeometricPFQ

• To: mathgroup at smc.vnet.net
• Subject: [mg72053] Re: FullSimplify and HypergeometricPFQ
• From: "dimitris" <dimmechan at yahoo.com>
• Date: Sun, 10 Dec 2006 04:49:00 -0500 (EST)
• References: <ele6ht\$rlg\$1@smc.vnet.net>

```CAS like Mathematica have implementated algorithms which usually don't
follow human's solution by hand; quite the opposite.
The intermediate evaluated expressions may be interesting for someone
with deeper knowledge in Computer Science but for the common user of
Mathematica.

Consider for example the following example of definite integration

Integrate[1/Sqrt[1 - x^2], {x, 0, 1}]
Pi/2

A trivial solution by hand provided by the substitution x=sinu.
We let Mathematica do this for us.

Reduce[Sin[u] == 0 && 0 <= u <= Pi/2, u] && Reduce[Sin[u] == 1 && 0 <=
u <= Pi/2, u]
integrand = Simplify[(1/Sqrt[1 - x^2])*dx /. x -> Sin[u] /. dx ->
D[Sin[u], u], 0 <= u <= Pi/2]
Integrate[integrand, {u, 0, Pi/2}]

u == 0 && u == Pi/2
1
Pi/2

If you want to take a look of the intermediate expressions in the
direct evaluation of
the integral by Mathematica execute the following command (and be
impressed!)

Trace[Integrate[1/Sqrt[1 - x^2], {x, 0, 1}], TraceInternal -> True]

The output is big and I avoid to display it.
But watch that even this quite simple integral involves the calling of
"exotic" functions
like PolyLog

Cases[Trace[

Integrate[1/Sqrt[1-x^2],{x,0,1}],TraceInternal\[Rule]True],_PolyLog,{-3}]
{PolyLog[Integrate`ImproperDump`v, Integrate`NLtheoremDump`w],
PolyLog[2, 1 + I], PolyLog[3, -I], PolyLog[3, 1 + I],
PolyLog[Integrate`ImproperDump`v, Integrate`NLtheoremDump`w],
PolyLog[2, 1 + I], PolyLog[3, -I], PolyLog[3, 1 + I],
PolyLog[Integrate`ImproperDump`v, Integrate`NLtheoremDump`w],
PolyLog[2, (-1)^(1/4)], PolyLog[2, (-1)^(1/4)],
PolyLog[2, (-1)^(1/4)], PolyLog[2, (-1)^(1/4)], PolyLog[2,
(-1)^(1/4)], PolyLog[2, (-1)^(1/4)], PolyLog[2, (-1)^(3/4)],
PolyLog[2, (-1)^(3/4)], PolyLog[2, (-1)^(3/4)], PolyLog[2,
(-1)^(3/4)], PolyLog[2, (-1)^(3/4)], PolyLog[2, (-1)^(3/4)],
PolyLog[2, (-1)^(3/4)], PolyLog[2, (-1)^(3/4)], PolyLog[2,
(-1)^(3/4)], PolyLog[2, (-1)^(1/4)], PolyLog[2, (-1)^(1/4)],
PolyLog[2, (-1)^(1/4)], PolyLog[2, (-1)^(1/4)], PolyLog[2,
(-1)^(3/4)], PolyLog[2, (-1)^(3/4)], PolyLog[2, (-1)^(1/4)],
PolyLog[2, (-1)^(1/4)], PolyLog[2, (-1)^(3/4)], PolyLog[2,
(-1)^(3/4)], PolyLog[2, (-1)^(1/4)]}

Look in the implementation notes of Integrate for more details.

Consider an example from the Help Browser

HypergeometricPFQ[{a, b, c}, {1 + a - b, 1 + a - c}, 1]
(Pochhammer[1 + a, -b]*Pochhammer[1 + a/2 - c, -b])/(Pochhammer[1 +
a/2, -b]*Pochhammer[1 + a - c, -b])

Then

FunctionExpand[HypergeometricPFQ[{a, b, c}, {1 + a - b, 1 + a - c}, 1]]
(Sqrt[Pi]*Gamma[1 + a - b]*Gamma[1 + a - c]*Gamma[1 + a/2 - b - c])/
(2^a*(Gamma[1/2 + a/2]*Gamma[1 + a/2 - b]*Gamma[1 + a/2 - c]*Gamma[1
+ a - b - c]))

Use above setting of Trace and be impressed again!

Trace[FullSimplify[HypergeometricPFQ[{a, b, c}, {1 + a - b, 1 + a - c},
1]], TraceInternal -> True]

Note that

Information["TraceInternal", LongForm -> True]
"TraceInternal is an option for Trace and related functions which, if
True or False, specifies whether to trace evaluations of \
expressions generated internally by Mathematica. The intermediate
Automatic setting traces a selected set of internal \
evaluations including Messages and sets or unsets of visible symbols."
Attributes[TraceInternal] = {Protected}

Also I suggest you reading the following relevant post

Best Regards
Dimitris

> Hi,
> I have a question regarding something that Mathematica can do via the
> command FullSimplify.
> I use it to prove an identity between HypergeometricPFQ's. However it
> would be helpful to me to see how Mathematica proves it. How can I get