Anthony Jackson wrote:
Onno Meyer wrote:
Travis replied to me:
I see no reason that the proof is only for machines, it also applies
to methods or procedures that involve one or more people.
If those people follow an algorithm. Humans can decide not to
do that.
If you're going to provide proof, you necessarily use an algorithm. Note
that certain types of unsolvable problems are only unsolvable from
within the system being analyzed, which means an _external_ computer may
be able to determine whether a given program will halt when the computer
that the program will run on cannot. This exception also applies to a
human analyzing a computer program -- because he's external, he can
solve problems that the computer cannot solve for itself.
Also many halting problems can be "solved" by finding a weak point and
changing the problem. That may sound like cheating, but it is still
very useful.
For example, software code verifiers trying to prove if a piece of code
"halts" or not cannot do it for arbitrary input. But it can suggest to
the programmer, "Hey, put a contract/assert here to limit the range of
inputs and then I can prove it."
for(i=0; i<x; i++) { print i } for unknown x may never halt, but:
assert(x >= 0 && x < 1000)
for(i=0; i<x; i++) { print i } will provably halt at 1000 or sooner.
There are similar fixes for other classes of problems where the fixes
are not necessarily pretty or elegant but result in answers that work
well enough in the real world.
--
Zan Lynx
[email protected]
"Knowledge is Power. Power Corrupts. Study Hard. Be Evil."
_______________________________________________
GurpsNet-L mailing list <[email protected]>
http://mail.sjgames.com/mailman/listinfo/gurpsnet-l