&gt; In CS&#x2F;programming, if we&#x27;re doing any experiments, they&#x27;re<p>&gt; done because we&#x27;re too stupid to infer the right answer<p>That&#x27;s the same as for physics.  In theory, there is no difference between theory and practice.  In practice, there is.<p>More specifically, for CS:  what you&#x27;re describing is an alternate universe where the halting problem[1] doesn&#x27;t exist, or rather has been solved.  In short, there is no way to predict, in the general case, whether a program will terminate or not, other than running it (= doing the experiment).<p>More generally, if you have a mechanism that predicts with perfect accuracy what the output of my program is, more quickly than running the program, then I will just call that new mechanism &quot;the program&quot;, and use that instead of the original program.  And then you&#x27;re back to running the program to find out what it does.<p>UPDATE:  To me, this is a (if not THE) fundamental results of theoretical computer science:  a precise description of its limits.   And since this is an article by Knuth:  &quot;Beware of bugs in the above code; I have only proved it correct, not tried it&quot;[2]<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Halting_problem" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Halting_problem</a><p>[2] <a href="http:&#x2F;&#x2F;www-cs-faculty.stanford.edu&#x2F;~uno&#x2F;faq.html" rel="nofollow">http:&#x2F;&#x2F;www-cs-faculty.stanford.edu&#x2F;~uno&#x2F;faq.html</a>