I’m working on my ph.d. in program verification. Every problem we’re trying to solve is as hard as the halting problem, and so we make the assumption, essentially, that we’re operating over real programs: programs that humans are likely to write, and actually want to run. It’s the only way we can get any purchase on the problem.
Trouble is, the field doesn’t have any recognizable standard for what makes a program “human-writable”, so we don’t talk much about that assumption. We should really get a formal model, so we have some basis for expecting that a particular formal method will work well before we implement it… but that would be harder to publish, so no one in academia is likely to do it.
Similarly, inference (conditioning) is incomputable in general, even if your prior is computable. However, if you assume that observations are corrupted by independent, absolutely continuous noise, conditioning becomes computable.
Offhand, I don’t see any good way of specifying it in general, either (even the weirdest program might be written as part of some sort of arcane security exploit). Why don’t you guys limit yourselves to some empirical subset of programs that humans have written, like ‘Debian 5.0’?
I’m working on my ph.d. in program verification. Every problem we’re trying to solve is as hard as the halting problem, and so we make the assumption, essentially, that we’re operating over real programs: programs that humans are likely to write, and actually want to run. It’s the only way we can get any purchase on the problem.
Trouble is, the field doesn’t have any recognizable standard for what makes a program “human-writable”, so we don’t talk much about that assumption. We should really get a formal model, so we have some basis for expecting that a particular formal method will work well before we implement it… but that would be harder to publish, so no one in academia is likely to do it.
Similarly, inference (conditioning) is incomputable in general, even if your prior is computable. However, if you assume that observations are corrupted by independent, absolutely continuous noise, conditioning becomes computable.
Offhand, I don’t see any good way of specifying it in general, either (even the weirdest program might be written as part of some sort of arcane security exploit). Why don’t you guys limit yourselves to some empirical subset of programs that humans have written, like ‘Debian 5.0’?