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)