MathGroup Archive 2013

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: inconsistent refinement behavior

  • To: mathgroup at
  • Subject: [mg131385] Re: inconsistent refinement behavior
  • From: Bill Rowe <readnews at>
  • Date: Wed, 17 Jul 2013 01:49:43 -0400 (EDT)
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:
  • Delivered-to:

On 7/16/13 at 5:56 AM, akrasnov at (Alex Krasnov)

>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,

returns DirectedInfinity[1] (Infinity)


Assuming[(x == 0 && Element[x, Complexes]), Refine[Infinity/x]]

returns DirectedInfinity[] (ComplexInfinity)

  • Prev by Date: Unique QR decomposition
  • Next by Date: Export Import Array
  • Previous by thread: Re: inconsistent refinement behavior
  • Next by thread: Re: inconsistent refinement behavior