Re: PowerExpand in version 6

*To*: mathgroup at smc.vnet.net*Subject*: [mg85882] Re: PowerExpand in version 6*From*: Szabolcs Horvát <szhorvat at gmail.com>*Date*: Tue, 26 Feb 2008 07:50:50 -0500 (EST)*Organization*: University of Bergen*References*: <fpoonm$1ev$1@smc.vnet.net> <fpud48$mgl$1@smc.vnet.net>

sashap wrote: > Dear Andrzej, > > Assuming works by setting $Assumptions, and this has the desired > effect for most of the functions, because their Assumptions options > is defaulted to $Assumptions. > > Here is a list of all System` context symbols with Assumptions option: > > In[184]:= ToExpression /@ > Quiet[Select[Names["System`*"], > MemberQ[ToExpression[#, StandardForm, > Options[Unevaluated[#]] &][[All, 1]], Assumptions] &]] > > Out[184]= {ExpectedValue, FourierCosTransform, FourierSinTransform, \ > FourierTransform, FullSimplify, FunctionExpand, Integrate, \ > InverseFourierCosTransform, InverseFourierSinTransform, \ > InverseFourierTransform, LaplaceTransform, Limit, PiecewiseExpand, \ > PossibleZeroQ, PowerExpand, Refine, Residue, Series, Simplify} > > We now select the one where Assumptions is not set to $Assumptions: > > In[185]:= Select[{#, Options[#, Assumptions]} & /@ %, > FreeQ[#, HoldPattern[$Assumptions]] &] > > Out[185]= {{PowerExpand, {Assumptions -> Automatic}}} > > This was done for backwards compatibility. Unfortunately resetting > this option globally might not be a very good idea, because it would > change the behavior of some of internal code which uses PowerExpand. Dear Oleksandr Pavlyk, Thank you for explaining this! I would just like to point out one thing: The documentation states that Assuming should work with PowerExpand: "You can specify default assumptions for PowerExpand using Assuming." Using Assuming[True, PowerExpand[ ... ]] is an edge case, but it seems that no matter what assumptions are specified, Assuming does not work with PowerExpand: In[1]:= Assuming[x < 0, PowerExpand[Sqrt[x*y]]] Out[1]= Sqrt[x]*Sqrt[y] In[2]:= PowerExpand[Sqrt[x*y], Assumptions -> x < 0] Out[2]= I*E^(I*Pi*Floor[-(Arg[y]/(2*Pi))])*Sqrt[-x]*Sqrt[y] The misleading statement should be removed from the documentation. Szabolcs Horvát