Re: inconsistent refinement behavior

*To*: mathgroup at smc.vnet.net*Subject*: [mg131385] Re: inconsistent refinement behavior*From*: Bill Rowe <readnews at sbcglobal.net>*Date*: Wed, 17 Jul 2013 01:49:43 -0400 (EDT)*Delivered-to*: l-mathgroup@mail-archive0.wolfram.com*Delivered-to*: l-mathgroup@wolfram.com*Delivered-to*: mathgroup-outx@smc.vnet.net*Delivered-to*: mathgroup-newsendx@smc.vnet.net

On 7/16/13 at 5:56 AM, akrasnov at cory.eecs.berkeley.edu (Alex Krasnov) wrote: >Refine treats Reals as a subset of Complexes, as expected: >In: Assuming[Element[x, Reals], Refine[Element[x, Complexes]]] >Out: True Yes, I didn't adequately make my point. Others have offered as an explanation for Assuming[x>=0, Refine[Infinity/x]] yielding Infinity or more precisely, DirectedInfinity[1] as simply being x>=0 requires x to be a real in order for the > portion to have validity. You suggested Assuming[x==0, Refine[Infinity/x]] yields ComplexInfinity or more precisely DirectedInfinity[] as being due to not having a know sign value for x when x is 0 I find both explanations wanting, i.e. somewhat incomplete. If I take x == 0 to be an isolated point, then I can see why Mathematica returns DirectedInfinity[] (ComplexInfinity) rather than DirectedInfinity[1] (Infinity) as there is no basis for assuming any particular direction. And when I take x>0, I implicitly require x to be real for the > operation to be valid which makes DirectedInfinity[1] reasonable. But none of the reasons for Assuming[x>=0, Refine[Infinity/x]] yielding DirectedInfinity[1] seem to be adequate from a strictly mathematical point of view. I can see why it might be simpler from a programming viewpoint to return DirectedInfinity[1] rather than DirectedInfinity[]. And I can kind of see it as being somewhat implied that I am restricting things to the real line with x>=0. But I just haven't seen a mathematical reason for assuming I am restricting the problem to the real line at x == 0 simply by adding the possibility of other real positive values for x. In fact, it seems very inconsistent that Assuming[(x == 0 && Element[x, Complexes]) || x > 0, Refine[Infinity/x]] returns DirectedInfinity[1] (Infinity) when Assuming[(x == 0 && Element[x, Complexes]), Refine[Infinity/x]] returns DirectedInfinity[] (ComplexInfinity)

**Follow-Ups**:**Re: inconsistent refinement behavior***From:*Alex Krasnov <akrasnov@cory.eecs.berkeley.edu>