On 11/27/2020 9:02 PM, Ben Bacarisse wrote:
> olcott <No...@NoWhere.com> writes:
>
>> On 11/27/2020 11:31 AM, Ben Bacarisse wrote:
>>> olcott "Ĥ does not copy its input" <No...@NoWhere.com> writes:
>>>
>>>> On 11/25/2020 8:06 PM, Ben Bacarisse wrote:
>>>>> olcott <No...@NoWhere.com> writes:
>>>>>
>>>>>> On 11/25/2020 4:16 PM, Ben Bacarisse wrote:
>>>>>>> olcott <No...@NoWhere.com> writes:
>>>>>>>
>>>>>>>> On 11/24/2020 6:16 PM, Ben Bacarisse wrote:
>>>>>>>>> olcott <No...@NoWhere.com> writes:
>>>>>>>>>
>>>>> <cut>
>>>>>>>>>> 08 bool Halts(u32 P, u32 I)
>>>>>>>>>> 09 {
>>>>>>>>>> 10 bool Halted = false;
>>>>>>>>>> 11 bool Aborted = false;
>>>>>>>>>> 12 while (!Halted && !Aborted)
>>>>>>>>>> 13 {
>>>>>>>>>> 14 Halted = DebugStep(P, I);
>>>>>>>>>> 15 Aborted = Needs_To_Be_Aborted();
>>>>>>>>>> 16 }
>>>>>>>>>> 17 return !Aborted;
>>>>>>>>>> 18 }
>>>>>>>>>
>>>>>>>>> Given
>>>>>>>>>
>>>>>>>>> void Confound_Halts(u32 P) { if (Halts(P, P)) while (1); }
>>>>>>>>>
>>>>>>>>> The confounding example for Halts is the computation
>>>>>>>>> Confound_Halts(Confound_Halts) whose halting status is not correctly
>>>>>>>>> determined by the function call Halts(Confound_Halts, Confound_Halts).
>>>>>>>>
>>>>>>>> Halts(Confound_Halts, Confound_Halts) returns false.
>>>>>>>
>>>>>>> But Confound_Halts(Confound_Halts) is a finite computation, so that's
>>>>>>> the wrong answer (as you know perfectly well).
>>>>>>
>>>>>> You start with the assumption: "Pete is wrong".
>>>>>
>>>>> I start with the definition of what a halt decider is (in your model
>>>>> using quasi-C): a function F such that F(P, I) is true iff P(I) is a
>>>>> finite computation and false otherwise.
>>>>
>>>> To actually understand me you have to start with the first step by
>>>> understanding that in the following code DebugTrace() never returns a
>>>> value to to H_Hat().
>>>
>>> Yes, it's obvious, and I've said so on at least two occasions, though
>>> sometimes the function names were different.
> <cut>
>>> I note you declined another opportunity say you know what the halting
>>> problem and you have also never denied the facts that you cut from the
>>> post you are replying to:
>>
>> As you as I encounter your first crucial misunderstanding I igrore all
>> of your words after that and focus on correctly this key
>> misunderstanding.
>
> This is a feeble excuse to avoid answering a few simple questions. Why
> must avoid answering? The trouble is that you don't disagree with me,
> but you dare not say so explicitly or game will be up. Let's see how
> that works:
>
>>> A halt decider is a function F such that F(P, I) is true iff P(I) is a
>>> finite computation and false otherwise.
>>>
>>> Do you agree?
>
I never answer yes or no questions with a yes or no answer.
I always answer yes or no questions with a complete explanation that
derives a yes or no answer. I answered the above question this way in my
next answer.
> Ignored yet again. That's because you know this is what a halt decider
> is (in this context) and that your proposed function isn't one.
>
>>> (a) Halts(Confound_Halts, Confound_Halts) returns false, and
>>> (b) Confound_Halts(Confound_Halts) is a finite computation.
>>
>> Your failure to understand that this is a logical necessity is no
>> actual rebuttal what-so-ever that it is not a logical necessity:
>>
>> Any input (TMD / DATA) that would never halt unless
>> its simulator stopped simulating it expresses behavior
>> that is not halting behavior.
>
> Again an evasion, and for the same reason. You gave (a) so you can't
> retract it, and you know (b) is also a fact.
It is not an evasion it is a step-by-step proof that I am correct and
you always skip these steps and leap to the conclusion that I am incorrect.
> By the way, you are correct. My failure to understand that something is
> a logical necessity is in no way a rebuttal that it is one. But why
> would I?
> A computation that would not halt if its simulation were not
> halted is indeed a non-halting computation. But a computation that
> would not halt and one that is halted are different computations.
Yes, that is the exact dichotomy required by the actual halting problem.
void H_Hat(u32 P)
{
u32 Input_Halts = Halts(P, P);
if (!Input_Halts)
HALT
else
HERE: goto HERE;
}
Halts(H_Hat, H_Hat) does correctly decide that its input would not halt
unless Halts stopped simulating it, then Halts(H_Hat, H_Hat) itself halts.
> Confound_Halts(Confound_Halts) is a computation that does halt. It's
> just a word game to say that it only halts because it's simulation had
> to be halted in the course of determining the return value from Halts.
Not so much. In this case H_Hat never gets any return value from Halts
so it can't possibly do the opposite of whatever Halts decides and Halts
does have to stop simulating H_Hat or H_Hat would have never halted.
> The halting status (and therefore the correct halting decision) is not
> dependent on why a computation is finite, only that it is.
>
>> When Halts simulates Confound_Halts(Confound_Halts) Halts it decides
>> that Confound_Halts(Confound_Halts) would never halt unless Halts
>> stopped simulating it.
>
> Halts(Confound_Halts, Confound_Halts) returns false, according to you,
> making Confound_Halts(Confound_Halts) a finite computation.
No not at all. Halts is a finite computation. The input to Halts is only
finite because Halts forced it to be finite, otherwise it is infinite.
> How this
> determination is made by Halts makes no difference. The determination
The input to Halts is only finite because Halts forced it to be finite,
otherwise it is infinite.
> was made and false returned (again, according to you). You would love
> it if readers took the fact that Halts has a particular /reason/ for
> returning false, namely that the execution would not otherwise
> terminate, as excusing the fact that false is the wrong answer.
The input to Halts is only finite because Halts forced it to be finite,
otherwise it is infinite.
>>> Therefore Halts is not a halt decider. Which of the these do you
>>> disagree with?
>
> No answer? What a surprise!
I just proved that Halts does decide (H_Hat, H_Hat) correctly because
the input to Halts is only finite because Halts forced it to be finite,
otherwise it is infinite.
>>>> int DebugTrace(u32 P, u32 I)
>>>> {
>>>> ((int(*)(int))P)(I);
>>>> return 1;
>>>> }
>>>>
>>>> void H_Hat(u32 P)
>>>> {
>>>> u32 Aborted = DebugTrace(P, P);
>>>> if (Aborted)
>>>> HALT
>>>> else
>>>> HERE: goto HERE;
>>>> }
>>>>
>>>> int main()
>>>> {
>>>> u32 P = (u32)H_Hat;
>>>> DebugTrace(P, P);
>>>> HALT;
>>>> }
>>>
>>> In case you missed it the previous times I told you, yes, this code is
>>> non-halting. See the difference between an honest interlocutor and
>>> yourself? If your question is clear, I will answer it. You, on the
>>> other hand, duck and dive, evade and distract. Maybe you will change
>>> and ANSWER THE QUESTIONS ABOVE.
>
> Not a single one of my questions answered.
>
I answer yes or no questions with a complete explanation.
If you can have the discipline to very very carefully analyze my answers
as if there was a real chance that I am correct then it should be quite
easy to verify in your own mind that I am actually correct.
This is the key to understanding that I am correct.
On 11/27/2020 9:02 PM, Ben Bacarisse wrote:
> A computation that would not halt if its simulation were not
> halted is indeed a non-halting computation.
When the simulator stops simulating H_Hat before H_Hat ever gets any
return value from Halts this makes it impossible for H_Hat to do the
opposite of whatever Halts decides, thus making all the conventional HP
proofs lose their entire basis.