
Re: Relational operators on intervals: bug?
Posted:
Nov 16, 2012 2:14 AM


On 15 Nov 2012, at 09:57, Andrzej Kozlowski <akozlowski@gmail.com> wrote:
> > On 14 Nov 2012, at 22:01, Murray Eisenberg <murray@math.umass.edu> wrote: > >> On Nov 14, 2012, at 5:39 AM, Andrzej Kozlowski <akozlowski@gmail.com> wrote: >> >>> >>> On 14 Nov 2012, at 07:28, Richard Fateman <fateman@cs.berkeley.edu> wrote: >>> >>>> On 11/12/2012 9:13 PM, Murray Eisenberg wrote: >>>> >>>>> >>>>> Here is the empty interval in Mathematica: >>>>> >>>>> Interval[{1, 0}] >>>>> >>>>> Indeed: >>>>> >>>>> Resolve[Exists[x, IntervalMemberQ[Interval[{1, 0}], x]]] >>>>> False >>>>> >>>> Apparently this doesn't mean what you think it does. It gives the same >>>> answer for Interval[{0,1}]. >>> >>> Of course that is because >>> >>> IntervalMemberQ[Interval[{0, 1}], x] >>> >>> False >> >> What remains surprising to me is: >> >> Resolve[Exists[x, x \[Element] Reals, IntervalMemberQ[Interval[{0, 1}], x]]] >> False >> > > > I don't find it surprising. > All you are doing is, evaluating Exists[x,Element[x,Reals],False] which is False and then Resolve[False] which is also False.The fact that IntervalMemberQ[Interval[{0, 1}], x] immediately evaluates to False (unlike, for example, 0<x<1, which evaluates to itself) is responsible for this and shows that IntervalMemberQ is not intended to be used in symbolic expressions. Compare this with > > Resolve[Exists[x, x \[Element] Reals, 0 < x < 1]] > > True > > Andrzej Kozlowski > > Maybe the following example will make my point clearer.
Compare:
Resolve[Exists[x, Element[x, Primes]]]
True
with
Resolve[Exists[x, PrimeQ[x]]]
False
Mathematica `predicates (functions ending with Q) always evaluate immediately to True or False and thus are generally unsuitable for use in symbolic expressions of the above kind.
Andrzej Kozlowski

