Thanks for this one, Ted! I was periodically trying to remember this specific puzzle for years since I only had fragments left in memory. Once seeing it, I instantly knew it was my old favorite that combined simplicity and confusion. I originally read it as a kid in a huge, beige, reference book on math that traced it from its primitive history all the way up to calculus and such. Learned a lot from it but don’t remember the name. No loss as it’s too heavy for me now.
Back to the article, here’s the solution:
“If it is not known that the divisor is nonzero, this has to be added as a premise. The final “theorem” is not a = b -> 1 = 2 but a = b & a-b != 0 -> 1 = 2, which is trivially true.” (Kurt in comments)
As a security engineer or programmer, I’d call this an abstraction gap or interface problem where people’s problem was caused by using it at too high a level. In this case, it’s just one pre-condition left off of otherwise good rules. Design-by-contract would’ve saved the day says Bertrand Meyer if you only paid up haha.