Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #3775

Re: Solve never calls Equal?

From Bill Rowe <readnews@sbcglobal.net>
Newsgroups comp.soft-sys.math.mathematica
Subject Re: Solve never calls Equal?
Date 2011-07-17 10:03 +0000
Organization Steven M. Christensen and Associates, Inc and MathTensor, Inc.
Message-ID <ivuc15$gr6$1@smc.vnet.net> (permalink)

Show all headers | View raw


On 7/16/11 at 5:41 AM, fateman@cs.berkeley.edu (Richard Fateman)
wrote:

>(in a different thread, where replacing Equal by SameQ was proposed)

>On 7/15/2011 2:07 AM, Andrzej Kozlowski wrote:
>>Well, here is one example of what would happen:

>>In[3]:= Unprotect[Equal]

>>Out[3]= {Equal}

>>In[5]:= Equal[a_, b__] := SameQ[a, b]

>>In[6]:= Protect[Equal]

>>Out[6]= {Equal}

>>In[7]:= Solve[3 x  == 1, x]

>>Out[7]= {}

>That's because  3*x==1  is immediately changed to False, and
>Solve[False, x] is indeed not a great idea.

>Equal[a_?NumberQ, b_?NumberQ] :=  SameQ[a, b];

>works better.  That Solve example works just fine.

>Indeed, if one does this..

>Equal[a_?NumberQ, b_?NumberQ] := (Print[test[a, b]]; SameQ[a, b]);

>one can detect when, if ever, the Solve program calls Equal on two
>numbers.  It will print   test[...]  on such occasions.

>When does Solve call Equal on 2 numbers?   I poked around a little
>and found -- never.   I tried Integrate, Factor, Do, Product, Plot..
>--never.

Clearly, Andrzej's example is flawed. And perhaps, the code for
Solve never calls Equal and modification of Equal has no impact
on Solve. But so what?

Version 8 of Mathematica has over 4000 built in symbols some of
which would be unlikely to have calls to Equal others that may
well call Equal. Without access to the source code, I don't know
how it would be possible to ascertain modification of something
as fundamental as Equal could not have undesired effects on
other portions of Mathematica. In fact, I suspect even with
access to the source code, it would take extensive testing to
verify there was no undesired impact.

So, it seems to me, it is quite unwise to modify the behavior of
fundamental functions such as Equal in Mathematica. Far better
to define your own function that behaves as you want. Any
function you define is certain to not change operation of
built-in functions.

Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread


Thread

Re: Solve never calls Equal? Bill Rowe <readnews@sbcglobal.net> - 2011-07-17 10:03 +0000

csiph-web