<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Welcome to the conversation.<br><br>--- On <b>Tue, 7/6/10, Mike Dougherty <i><msd001@gmail.com></i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;">I am a software developer during the day.  Most of my time is spent anticipating the extremely unlikely cases and making sure the program does not encounter those conditions.  If I defend against 99% of the truly absurd cases of should-never-happen inputs, my boss (or QC, etc.) will surely try something from the 1% that I did not imagine.  Most code can be broken (whether cryptographic or procedural)  I can't be sure enough to say that all code can be broken - because that supposes that I have the time/patience to prove that to be true.  I dare not say one example of code is unbreakable (the exception to the previous
 statement) because I am unable to guarantee or warrant that assertion.  <br></blockquote>Actually, it is possible to completely prove the functionality of small pieces of<br>code, given certain assumptions.  For instance, assuming the following is run<br>via a standard Perl interpreter in the normal sense (with a stdout, et al), the<br>following code will always output the string "2" followed by a newline:<br>---<br>my $foo = 1;<br>$foo = $foo + 1;<br>print $foo . "\n";<br>---<br>The trick is, how far can one go with this, while still being economical about<br>the effort involved?  NASA's coding procedures - and the astronomical costs<br>involved - are a good example of what happens when one tries to apply this<br>to very complex programs.  (And even that sometimes fails, though for lack<br>of communication and strict adherence to model instead of for theoretical<br>break in the model itself.)<br><br>What you're used to is the
 standard heuristic, where less than complete<br>proof is accepted because it would simply cost far too much to do said<br>complete proof.  ("Cost" not just in money, but also in commitment and<br>effort that the stakeholders often refuse to put forth.  How often have you<br>been given vague requirements, where the giver refused to write them<br>down into something formal that you could prove whether or not you've<br>met?)<br></td></tr></table>