MathGroup Archive 2010

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

Search the Archive

Re: LessEqual vs Inequality, was ..Re: Replacement Rule with Sqrt in denominator

  • To: mathgroup at
  • Subject: [mg114717] Re: LessEqual vs Inequality, was ..Re: Replacement Rule with Sqrt in denominator
  • From: Andrzej Kozlowski <akoz at>
  • Date: Tue, 14 Dec 2010 06:54:26 -0500 (EST)
  • References: <ie2971$mqh$> <> <> <> <ie4mt7$9a7$> <>

On 13 Dec 2010, at 17:11, Richard Fateman wrote:

> On 12/13/2010 12:52 AM, Andrzej Kozlowski wrote:
>> On 12 Dec 2010, at 23:48, Richard Fateman wrote:
>>>> Do you mean a user should not be allowed to enter Less[2,x,3] but
>> always required to use the form Inequality[2,Less,x,Less,3]?
>>> I did not propose to tie the user's hands in this way.
>>>>  Or should Less[2,x,3] always evaluate to
>> Inequality[2,Less,x,Less,3]?
>>> That would be my solution,.  Is my solution.  Indeed,  Less[x,y] is
>> simplified to  Inequality[x,Less,y]
>>>>  (In that case you would still have the same problem if, for some
>> reason, you prevented evaluation).
>>> If I prevented simplification/evaluation, I would presumably not
>> expect much of anything to work.
>>> I can' t think of a reason.
>> First  in Mathematica, there are often functions that have attributes
>> HoldAll or Hold First etc, which means that the act on unevaluated
>> arguments. So if an argument was written as Less[x,y] it would not be
>> converted to Inequality[x,Less,y] before pattern matching was applied =
>> it (most Mathematica "functions" are just local pattern matching =
> Um, I think this is irrelevant.  Consider the "function" in =
> Divide. It exists in Mathematica.
> Divide[a,b] is immediately transformed to Times[a,Power[b,-1].
> Divide[a,b] /. Times-> Foo   results in Foo[a,Power[b,-1]].
> Divide has attributes Protected, Listable, NumericFunction.
> It's not that different from Less, in some senses:
> (a). Divide can always be rewritten as Times[Power ..] or as Rational.
> (a') Less can always be rewritten as Inequality[ ..], at least if
>   Mathematica didn't insist on rewriting in the opposite direction,
>   namely making Inequality[a,Less,b] into Less[a,b].
> (b). Divide does not have attributes Hold, HoldFirst, etc etc
> (b') Neither does Less.
> So now we have set the stage for DanL and friends.
> 1. Remove Less. and always replace it with Inequality ...
> 2. Same for Greater, etc etc.
> 3. (suggestion)  Rename Inequality with Comparison.
> 4. modify the rest of the programs, like Compile, Display, as =
> 5. Change the documentation.
> There may still be work to do for dealing with the elements in
> Mathematica that do not obey the "law of trichotomy", which states
> that a<b, a==b, or a>b.  But this is not true for objects that are
> not comparable.  Like Complex numbers, various undefined objects,
> Indeterminate, NaN.

Yes, this seems plausible, but of course it would require a fundamental 
re-write of Mathematica for a very minor gain (though I admit that there 
would be some gain). But I would much rather Wolfram employed its 
resources on developing many new functions and algorithms that I 
actually use and that are important to me, so I would strenuously object 
to any idea of diverting these resources to anything of this kind. As I 
have pointed out to you many times, I consider these sort of things that 
seem to excite you so much as essentially of very little practical 
interest to the "working mathematician". I would certainly not pay any 
money to get this sort of improvement and I doubt many users would.

> Note that LogicalExpand does not distinguish between Less[x,y,z] and 
Inequality[x,Less,y,Less, z].

What do you mean by note? I pointed this out to you, LogicalExpand 
reduces both to the same canonical form.

I am curious if you really believe your own words when you write stuff 
like this and whether I really like to imagine you discovered it all by 
yourself or knew it anyway. 

> FullSimplify [Less[x,y,z]-Inequality[x,Less,y,Less,z] ]
> does not reduce to zero, as it should.  So Mathematica, dare
> I say, exhibits a bug.

No, these expressions are not equal but logically equivalent. The way to 
show that is

In[103]:= Refine[Less[x, y, z], Inequality[x, Less, y, Less, z]]

Out[103]= True

In[104]:= Refine[Inequality[x, Less, y, Less, z], Less[x, y, z]]

Out[104]= True

or by using LogicalExpand (as you noticed below)

> Oh, LogicalExpand[Inequality[x,Less,y,Less,z]] is x<y&&y<z
> as is LogicalExpand[x<y<z].
> Actually, you appear to be wrong, since
> LogicalExpand[x<y<z]  and LogicalExpand[z>y>x]  are different.


In[107]:= Refine[x < y < z, z > y > x]

Out[107]= True

In[108]:= Refine[z > y > x, x < y < z]

Out[108]= True

Actually, it would be good to have a function that checked both 
implications at once (Refine performs the job of ImpliesQ in older 
versions of Mathematica).
> You appear to be proposing some
> kind of alternative to disjunctive normal form (or conjunctive normal
> form), both of which are quite well studied. Re-grouping of logical
> terms for logic synthesis is also quite well studied, (see circuit
> minimization). The general circuit minimization problem is believed to 
be intractable. Apparently there are advantages to a computer science
> education :)

I am certainly not proposing this, as should have been quite clear from 
what I wrote. I had assumed, I admit mistakenly, that that was what you 
were proposing as it did not come to my mind that you were instead 
proposing a massive re-write of Mathematica that would, in effect, 
eliminate Greater, Less etc.  Thank you for confirming that the approach 
I thought you had proposed is intractable, as I had expected.

I agree that there are some advantages to a computer science education - 
I do actually teach mathematics, and Mathematica,  to some excellent 
computer science students (among the best in the world). But I think 
there are even more advantages to a mathematics education. For one, one 
is less inclined to keep eternally circling the same basic issues rather 
than getting to some interesting problems.

Andrzej Kozlowski

  • Prev by Date: Re: Replacement Rule with Sqrt in denominator. Also Bug in Series
  • Next by Date: Re: LessEqual vs Inequality, was ..Re: Replacement Rule with Sqrt in denominator
  • Previous by thread: Re: LessEqual vs Inequality, was ..Re: Replacement Rule with Sqrt in denominator
  • Next by thread: Re: LessEqual vs Inequality, was ..Re: Replacement Rule with Sqrt in denominator