Re: Equality question
- To: mathgroup at smc.vnet.net
- Subject: [mg29554] Re: Equality question
- From: "Orestis Vantzos" <atelesforos at hotmail.com>
- Date: Sun, 24 Jun 2001 22:10:13 -0400 (EDT)
- Organization: National Technical University of Athens, Greece
- References: <9h3vmg$46c$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
The bottom line being...TrueQ does not use any "mathematical" information about its argument - it checks the truth of its argument in a "programming" sense, more or less. Simplify on the other hand does the opposite - it uses all mathematical knowledge available to reduce the expression to a simpler form - usually True or False for equations. Orestis Andrzej Kozlowski" <andrzej at tuins.ac.jp> wrote in message news:9h3vmg$46c$1 at smc.vnet.net... > on 6/23/01 2:47 PM, gleam at flashmail.com at gleam at flashmail.com wrote: > > > Hi, I'm new to this mailing list, and rather new to Mathematica. > > > > Why doesn't Mathematica 4.1 yield True for this expression: > > > > TrueQ[(n - 1)^2 + n == n^2 - n + 1] > > > > > > > The way to check if such an expression is True or False is: > > In[5]:= > Simplify[(n - 1)^2 + n == n^2 - n + 1] > > Out[5]= > True > > The Predicate TrueQ is not meant for such purposes.It does not in itself > invoke any simplifications because if it did it would be inconvenient to use > it programs where you want the expression TrueQ[x] to remain unevaluated. > Also for programming reasons all Mathematica predicates which do not return > True return False (even though that might look like a false answer!). In the > case of very simple expresion Mathematica will perform simplifications > without the use of Simplify, and in such cases applying TrueQ will yield > True because in any case the result of the evaluation was True before TrueQ > was applied, e.g: > > In[8]:= > TrueQ[n + 1 + 1 == n + 2] > > Out[8]= > True > > because > > In[9]:= > n + 1 + 1 == n + 2 > > Out[9]= > True > > On the other hand in your case: > > In[10]:= > (n - 1)^2 + n == n^2 - n + 1 > > Out[10]= > 2 2 > (-1 + n) + n == 1 - n + n > > Mathematica does not simplify this expression (without applying Simplify), > so TrueQ, which must return True or False has to return False. It does look > strange, but that is because Mathematica's predicates are not meant to serve > the purpose of "answering a question", which beginners sometimes assume them > to be for > e.g. > > In[14]:= > IntegerQ[(1 + Sqrt[2])^2 - 1 - 2*Sqrt[2]] > > Out[14]= > False > > but are intended for writing fucntions of the kind > > If[IntegerQ[x], ....] > > and so on. > > > I hope this is clear enough. > > > -- > Andrzej Kozlowski > Toyama International University > JAPAN > > http://platon.c.u-tokyo.ac.jp/andrzej/ > http://sigma.tuins.ac.jp/~andrzej/ > > > > >