Your `sum` example makes the disagreement even clearer.
I agree that
int sum(int x, int y) { return 5; }
does NOT compute integer addition on its full domain.
But now consider:
int add(int x, int y) {
return addition_table[x][y];
}
where `addition_table` contains the correct sum for every pair in the
finite domain.
This computes exactly the same mathematical function as:
return x + y;
Yet its runtime transformations are merely:
read x,y
index table
retrieve value
return value
It does not derive the result by performing the arithmetic inference
2 + 3 = 5.
And we must distinguish TWO different computations here:
A. the computation or reasoning that CONSTRUCTED the table
B. the computation add(x,y) that USES the table
Perhaps A calculated every entry using arithmetic, theorem proving, a
human mathematician, or something else entirely.
That is irrelevant to what B computes.
Once the table exists, B computes addition without reproducing,
containing, or even knowing the derivation by which the table was constructed.
Indeed, two identical copies of B compute exactly the same function even
if their tables were independently produced by completely different processes.
So saying:
"the semantic inference was off-loaded"
actually concedes the distinction.
Yes — it was performed ELSEWHERE.
Therefore it is not an inference step of the computation B whose
behavior we are classifying.
If you nevertheless say B does NOT compute addition because the semantic derivation occurred elsewhere, then you have changed the standard
meaning of "computes a function".
And your PI analogy illustrates the same distinction.
The value of PI does not depend upon HOW somebody computes it. Different algorithms can derive the same digits through radically different transformations.
So I grant:
the output must satisfy the semantic specification.
What I do NOT grant is:
the computation producing that output must itself
contain a semantic derivation proving that output.
That additional requirement does not follow merely by combining finite- string computation with operational semantics.--
You keep asserting that it has "always been required".
But THAT assertion is exactly the proposition requiring proof.
Peter,
When both of your own answers are wrong this proves
that I am correct.
No. It proves exactly the Halting Theorem.
You are overlooking what your program depends on.
Your 2004 example says:
if YOU say HALTS:
loop
else:
halt
So there is no answer that can be both:
1. supplied to the program, and
2. a correct prediction of the resulting behavior.
Agreed.
But that does not prove that halting is an "incorrect question".
function LoopIfYouSayItHalts (bool YouSayItHalts):
if YouSayItHalts () then
while true do {}
else
return false;
Does this program Halt?
(Your (YES or NO) answer is to be considered
translated to Boolean as the function's input
parameter)
Please ONLY PROVIDE CORRECT ANSWERS!
| Sysop: | DaiTengu |
|---|---|
| Location: | Appleton, WI |
| Users: | 1,142 |
| Nodes: | 10 (0 / 10) |
| Uptime: | 94:08:05 |
| Calls: | 14,704 |
| Calls today: | 2 |
| Files: | 186,497 |
| D/L today: |
2,661 files (886M bytes) |
| Messages: | 2,551,683 |