Surely that also depends on the domain you are reasoning about? For example, when debugging computer programs it seems that I am eliminating the impossible all the time. “Hm, this function is not returning the answer I expect. Am I calling it with the wrong argument? (Printf—no.) Are the calculations right up to this point? (Printf—yes). Aha, this must be the line that’s wrong!”
True! However, I know I’ve had times in program debugging (though I can’t
remember a specific one) when I eliminated something “impossible” and it turned
out not to be. I think there was usually a flaw in my reasoning though, rather
than a flaw in my knowledge of what’s possible. (In other words, I overlooked
some simple possibility.) Anyway, when I feel like I’m at the end of my
debugging rope, I just start from the beginning with an eye towards stuff I
could have missed the first time around, including stuff that I disregarded as
“impossible”.
I once wrote code that crashed my C++ compiler. For the life of me I Was sadly never able to reproduce it, but it’s definitely in my book as an impossible error. (this is not “the programmed crashed when run”, this was “the compiler crashed when trying to compile this program”)
When debugging, I now label things as “extremely unlikely” instead...
Surely that also depends on the domain you are reasoning about? For example, when debugging computer programs it seems that I am eliminating the impossible all the time. “Hm, this function is not returning the answer I expect. Am I calling it with the wrong argument? (Printf—no.) Are the calculations right up to this point? (Printf—yes). Aha, this must be the line that’s wrong!”
True! However, I know I’ve had times in program debugging (though I can’t remember a specific one) when I eliminated something “impossible” and it turned out not to be. I think there was usually a flaw in my reasoning though, rather than a flaw in my knowledge of what’s possible. (In other words, I overlooked some simple possibility.) Anyway, when I feel like I’m at the end of my debugging rope, I just start from the beginning with an eye towards stuff I could have missed the first time around, including stuff that I disregarded as “impossible”.
Related: “select” Isn’t Broken”.
I once wrote code that crashed my C++ compiler. For the life of me I Was sadly never able to reproduce it, but it’s definitely in my book as an impossible error. (this is not “the programmed crashed when run”, this was “the compiler crashed when trying to compile this program”)
When debugging, I now label things as “extremely unlikely” instead...