# A one line proof that one is zero using Mathematica 10

 a = (Sqrt[2] + 1) (Sqrt[2] - 1) - 1;
{a/a, Simplify[a]/a, b/b == Simplify[b]/b}

{1, 0, True}


This one line "proof" that one equals zero is disturbing (and could possibly lead to wrong results in real computations). Mathematica 9, unlike the versions 8 and 10, recognized that a is zero and issued a warning a/a Indeterminate!

• Welcome to Mathematica.SE! This is a questions/answers site, and a bit different from forums you may be used to. Posts are expected to be practical and answerable questions. Please also realize that this site is independent of Wolfram Research and the people here are just users like you. It is not the place for bug reports, you'll need to contact WRI for that. That said, I believe that the behaviour you see is reasonable and won't be any different for other computer algebra systems. I'll elaborate in an answer. – Szabolcs Nov 13 '14 at 19:15
• What are the specifics of the version 9 that showed an Indeterminate? I am not able to replicate that result on any version 9 I have tried. – Daniel Lichtblau Nov 13 '14 at 19:58
• @DanielLichtblau Simplify::infd: Expression ((-2 (-1+Sqrt[17])^2+(-3+Sqrt[17]) (5+3 Sqrt[17])) (2 (-1+Sqrt[17])^2 (4+Sqrt[17])-(5+Sqrt[17]) (5+3 Sqrt[17])))/(-1-8 (4+Sqrt[17])+(4+Sqrt[17])^2)^2 simplified to Indeterminate. >> – Grégoire Nicollier Nov 13 '14 at 20:16
• Okay, I see now that they are different. I am fairly certain I know what change gave rise to the more correct behavior, and what subsequently reverted it. That latter was due to some extreme slowdown in symbolic manipulation internals that were not so uncommon. We occasionally revisit this, and will do so again, but when improvements come into conflict with considerable speed degradation, they often have to be resolved in favor of the latter. – Daniel Lichtblau Nov 13 '14 at 20:28
• I'm looking at this apparently well liked question and puzzling over whats b? – george2079 Feb 5 '17 at 15:36

The behaviour you see is quite reasonable, given what we can expect from computer algebra systems. It will be very similar in other systems too (and exactly the same in all of Mathematica versions 8, 9 and 10 -- I do not see a difference in v9). Here's Maple's output for example:

I assume that you would expect a/a to return Indeterminate or a warning. There are reasons why doing this is not practical in a computer algebra system. To implement this behaviour, the / operation would need to check its operands every time, making sure that they are not zero. It turns out that such a test can be quite slow, and in general it is undecidable. (See PossibleZeroQ under Details.)