Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2006
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2006

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

Search the Archive

How to tell Mathematica to stop conditional testing in an If statment if one condition is niether True or False? McCarthy evaluation rules? 'and then' test?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg69525] How to tell Mathematica to stop conditional testing in an If statment if one condition is niether True or False? McCarthy evaluation rules? 'and then' test?
  • From: "Nasser Abbasi" <nma at 12000.org>
  • Date: Thu, 14 Sep 2006 06:57:17 -0400 (EDT)
  • Reply-to: "Nasser Abbasi" <nma at 12000.org>

I can better describe this with simple example:

------------- code ------------

Remove["Global`*"];
xc = Table[i, {i, 1, 3}]
x = 5;
If[x == b && xc[[10]] == 4, Print["True"], Print["False"], Print["Can't 
decide"]]

----- end code -------------
In the above, 'x==b' is neither True nor False, since 'b' has no numerical 
value.

But what I want is when this happens, for Mathematica to NOT continue with 
the  testing if xc[[10]]==4  is True (because even if it is True, it will 
not change the outcome, which is can't decide.

I am looking for something like 'and then'  which says to test the next 
condition only if the one just tested was true.

The interesting thing is that if 'b' had a value, say 7, which makes the 
first test (the x==b) to be False, then Mathematica does the right thing, 
and will not try to check the xc[[10]]==4 condition.  I need it to do the 
same thing when also the result of the check is 'undecided', not just 
'False' or 'True'.

Is there a way to do this?  Notice in the example above, I get the error 
that xc[[10]] is out of bound, but still get the can't decide message.

It is clear to me that the way Mathematica does it now is not the right way. 
I do not see why it tries to check for xc[[10]]==4 when it will not make a 
difference to the final result.

any thoughts?

thanks,
Nasser




  • Prev by Date: common problem with FindMinimum and NIntegrate
  • Next by Date: Re: Re: init.m of FrontEnd in M5.2
  • Previous by thread: common problem with FindMinimum and NIntegrate
  • Next by thread: Re: How to tell Mathematica to stop conditional testing in an If statment if one condition is niether True or False? McCarthy evaluation rules? 'and then' test?