MathGroup Archive 1999

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

Search the Archive

Re: Re: equaltity of lists

  • To: mathgroup at smc.vnet.net
  • Subject: [mg19243] Re: [mg19162] Re: equaltity of lists
  • From: "Drago Ganic" <drago.ganic at in2.hr>
  • Date: Wed, 11 Aug 1999 02:06:54 -0400
  • Organization: HiNet
  • References: <7ooid4$i0c@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

thank all of you for answering my beginners questions.
It is really an excellent group like Mathematica is an
excellent program.

I do now accept the Equal functionality of Mathematica
(a==b don't results to False because a,b could be
"anything" - equal or unequal)

the problem is now :
Why does Mathematica simplify expressions like x^2/x to x.

I have a suggestion. Wouldn't it be nice to have such a behavior.

1. Mathematica should not use Cancel[ ] when doing automatically
   simplifications.

   When I enter, for example, x^2/x I should get back x^2/x and
   not x as it is now.

2. Reduce[] should use Cancel[] for the generation of the
   result and not for simplification (see point 1).
   Reduce[x^2/x == x,x] should not evaluate to True because
   x^2/x == x is an equation and not an identity. The expression
   is valid only for x != 0 (that's the solution for the equation).

   In my opinion this is a bug (wrong behavior) because it is
   written in The Book:

    "The equations generated by Reduce are equivalent to eqns,
     and contain _ all the  possible solutions_. "

3. Simplify should have an option GenerateConditions like
   Integrate but the option should work for the case x^2/x too.
   In Integrate it does not - the reason is for sure the use of
   Cancel[] (as part of Simplify) over the function _before_
   integration (auomatically simplification - see point 1)

     Example:
        Integrate[1/x,{x,-2,3}]
        ... diveragas ...

    That's nice but why

        Integrate[1/x,{x,-2,3}, GenerateConditions->True]
        -Log[a]+Log[b]

     That's wrong for a= -2, b =3 !!!

    For Simplify, GenerateConditions should have False as the
    default value, so there would be backward compatibility,
    and no efficiency loss.

4.  Why having the function Reduce[] when Solve[] could have the
    option GenerateConditions (default value: False).
    Wouldn't this be consistent.

Andrzej Kozlowski <andrzej at tuins.ac.jp> said the following some
time ago.

>If Mathematica did not perform this basic simplification but
>waited for additional information to be entered (e.g. that x
>is not zero) or if it returned conditional answers it would
>greatly slow down many complex operations. (for example if any
>expression contained something of the form p/p mathematica
>would have to solve the equation p==0 before performing a
>simplification).

The additional information is now easy to enter as an
Assumption in Simplify (version 4.0).
Making the default value False for the option
GenerateConditions, Complex operations should not been slow
down (Research usage of Mathemtacia). On the other hand,
in the educational area or for rather simple computations
it _would_ be nice to have those conditionals. Of course,
the function Solve must be use (with Option
GenerateConditions - see point 4).

Andrzej wrote also
>But there is also a more mathematical justification for
>this simplification. If you think of the expression x/x as a
>(say) complex function of x than indeed it is not defined at
>x=0 and not equal to x. But when you think of it "algebraically"
>as x*x^(-1), you can read this as x times the multiplicative
>inverse of x, which is indeed always 1 whenever the
>expression makes sense. So in this context the simplification
>Mathematica performs automatically may seem quite reasonable.


As you said Andrzej

x^2 * x^(-1) = x^(2-1) Equals to x _whenever the expression makes
sense_. But x makes sense in the point 0 and x^2/x does not. So I
don't see any difference between function equality and expression
equality, because an expression _is a function_. When Wolfram says
"Everything is an expression" he could also say "Everything is a
function". Isn't the full form of an expression h[x1, x2, ...].
To me, this looks like a function.

Every one is talking about generic solutions and formal algebra -
that's something new for me. Is there a book about such a thing ?
Am I right when I say division by zero is not defined in
mathematics (algebra, calculus, what ever), computer languages
(starting from assembler).

So when it is said Mathematica is just a computer language and
one should not look at it as an implementation of mathematics,
I cannot agree with it because Mathematica implements mathematics
so fantastic (as far as I know mathematics). So why she divides
with 0 ? (okay she doesn't numerically : 1/0 -> ComplexInfinity).

The better question is:
why cancels she x/x to 1 when we know that is not true for x=0
and it is true for, say,  x=1.

If Mathematica doesn't know the answer for
{a,b} == {b,a}
{a,b} == {b,a}

because a,b could be anything she should also not answer

x^2/x == x
True

or

x^2/x
x

because x could be anything and acording to that the answer would
be different. So the right and consistent answer should be

x^2/x == x
x^2/x == x

or

x^2/x
x^2/x


As I see it, the main problem (if there is anyone) is in the usage
of Concel[] in the simplification procedures without generating
conditions.

Greetings from Croatia
Drago Ganic




  • Prev by Date: Cleanslate -- where to find it?
  • Next by Date: Re: SetDirectory
  • Previous by thread: Re: equaltity of lists
  • Next by thread: Re: Re: Re: equaltity of lists