Subject: Re: Olcott's HHH: a concrete counterexample and the claimed endorsements
On 10/30/2026 6:02 PM, Python wrote:
For future reference, since Peter Olcott keeps presenting his C program
HHH as a halt decider and repeatedly invokes supposed agreements from
other people in support of it, here are a few facts worth keeping together.
1. A concrete counterexample to HHH
Peter's published HHH contains a detector which, roughly speaking,
treats repetition of a CALL from the same address to the same function,
with no conditional branch in the relevant region, as evidence of
infinite recursion/non-halting.
For every input in its domain, that only
actually needs to include this single input.
01 int DD()
02 {
03 int Halt_Status = HHH(DD);
04 if (Halt_Status)
05 HERE: goto HERE;
06 return Halt_Status;
07 }
You must show exactly how DD reaches its return statement
on line 06 while DD is being simulated by HHH or you have
not refuted that this is impossible.
Yet actually includes a whole class of inputs.
I gave him this deliberately simple terminating program:
˙˙ typedef void (*fn)(unsigned);
˙˙ void F(unsigned);
˙˙ void G(unsigned);
˙˙ void Done(unsigned);
˙˙ void Done(unsigned n)
˙˙ {
˙˙˙˙˙˙ (void)n;
˙˙ }
˙˙ void G(unsigned n)
˙˙ {
˙˙˙˙˙˙ fn next[2] = { F, Done };
˙˙˙˙˙˙ fn p = next[n];
˙˙˙˙˙˙ p(n + 1);
˙˙ }
˙˙ void F(unsigned n)
˙˙ {
˙˙˙˙˙˙ G(n);
˙˙ }
˙˙ void P(void)
˙˙ {
˙˙˙˙˙˙ F(0);
˙˙ }
There is no global state hidden here.
The state is explicitly carried in the argument.
The execution is:
˙˙ P
˙˙˙˙ -> F(0)
˙˙˙˙ -> G(0)
˙˙˙˙ -> F(1)
˙˙˙˙ -> G(1)
˙˙˙˙ -> Done(2)
˙˙˙˙ -> return
˙˙˙˙ -> return
˙˙˙˙ -> ...
˙˙˙˙ -> halt
In particular, the same CALL instruction in F calls G more than once.
But the complete machine states are different: among other things, the argument is different.
So repetition of the same control location and target is NOT repetition
of the same computational configuration.
Peter actually ran his HHH on my example and reported:
˙˙ My code did report 0 for non-halting on your input.
˙˙ I don't know if this is correct or not.
˙˙ HHH(P)==0 may have been correct, IDK.
It isn't correct.
P obviously halts, as the complete execution above shows.
When this was pointed out, Peter's answer was:
˙˙ Then it is simply outside the domain of HHH.
That is worth remembering.
A program was presented.
HHH classified it as non-halting.
The program demonstrably halts.
The response was to exclude the counterexample from HHH's domain.
Unless a PRE-EXISTING definition of the domain independently excludes P, this is not a defence of an infallible halt decider. It is simply
defining counterexamples away after they have been found.
2. Why this also matters to DD
Peter's usual example is:
˙˙ int DD()
˙˙ {
˙˙˙˙˙˙ int Halt_Status = HHH(DD);
˙˙˙˙˙˙ if (Halt_Status)
˙˙˙˙˙˙˙˙˙˙ for (;;);
˙˙˙˙˙˙ return Halt_Status;
˙˙ }
with the advertised semantics:
˙˙ HHH(<P>) == 1 : P halts
˙˙ HHH(<P>) == 0 : P does not halt
Hence:
˙˙ +-----------+------------------+------------------+
˙˙ | HHH(<DD>) | HHH predicts˙˙˙˙ | DD then does˙˙˙˙ |
˙˙ +-----------+------------------+------------------+
˙˙ |˙˙˙˙ 1˙˙˙˙ | DD halts˙˙˙˙˙˙˙˙ | loops forever˙˙˙ |
˙˙ |˙˙˙˙ 0˙˙˙˙ | DD does not halt | returns / halts˙ |
˙˙ +-----------+------------------+------------------+
Peter's escape is to say that, while HHH simulates DD, DD calls HHH
again, producing nested simulation, and that DD therefore cannot reach
its return statement.
But the observation
˙˙ HHH simulates DD
˙˙˙˙ -> DD calls HHH
˙˙˙˙˙˙ -> HHH simulates DD
˙˙˙˙˙˙˙˙ -> DD calls HHH
˙˙˙˙˙˙˙˙˙˙˙ ...
establishes a recursive PREFIX.
Proof of program correctness calls this a:
Simulation invariant (while DD is simulated by HHH)
Line 03: simulated DD() invokes simulated HHH(DD) that simulates DD()
It does not establish that this recursion continues forever.
To establish that, Peter must prove that none of the relevant nested HHH calls can return.
Calling the desired conclusion a "simulation invariant", or saying that
the return statement is "unreachable", does not prove it.
In epistemology (theory of knowledge), a
self-evident proposition is a proposition
that is known to be true by understanding
its meaning without proof
https://en.wikipedia.org/wiki/Self-evidence
The counterexample above is particularly relevant because it
demonstrates experimentally with Peter's own HHH that recognizing
repeated control-flow patterns while ignoring relevant computational
state can produce a false non-halting verdict.
A simple yet infinite set of programs is
in the domain of HHH. The use of function
pointers is outside the domain.
3. The alleged Sipser endorsement
Peter also repeatedly quotes Michael Sipser:
˙˙ If simulating halt decider H correctly simulates its
˙˙ input D until H correctly determines that its simulated D
˙˙ would never stop running unless aborted then
˙˙ H can abort its simulation of D and correctly report that
˙˙ D specifies a non-halting sequence of configurations.
Peter presents this prominently in discussions of his HHH.
But read what Sipser supposedly agreed to:
˙˙ IF H CORRECTLY DETERMINES ...
Of course.
If a halt decider has correctly determined that a computation will never halt, then it may correctly report that it will not halt.
The disputed issue is precisely whether Peter's HHH has CORRECTLY
DETERMINED that.
Nothing in the quoted statement says that Peter's particular criterion establishes this premise.
Nothing there endorses his HHH implementation.
Nothing there proves that repeated nested simulation must continue forever.
The entire disputed step is already contained in the words:
˙˙ correctly determines
So this quotation cannot honestly be presented as Sipser's endorsement
of Peter's proof. Sipser agreed to the conditional statement Peter
quotes, not to Peter's claim that HHH satisfies its premise.
4. The same thing happened with me
Peter has repeatedly tried to turn things I agreed with into agreement
with his conclusion.
For example, I agreed that applying the C operational semantics produces
the recursive simulation pattern:
˙˙ HHH simulates DD
˙˙˙˙ -> DD calls HHH(DD)
˙˙˙˙˙˙ -> HHH simulates DD
˙˙˙˙˙˙˙˙ -> ...
I did NOT agree that the "..." proves infinite recursion.
... means on and on.
Mathematical proof of program correctness:
Simulation invariant (while DD is simulated by HHH)
Line 03: simulated DD() invokes simulated HHH(DD) that simulates DD()
I did NOT agree that no nested HHH can return.
I did NOT agree that DD therefore cannot halt.
You must show exactly how DD reaches its return statement
on line 06 while DD is being simulated by HHH or you have
not refuted that this is impossible.
I did NOT agree that HHH(DD)==0 is therefore correct.
I explicitly told Peter this, repeatedly.
Eventually Peter himself wrote:
˙˙ I did not realize that you did not mean:
˙˙ IF HHH keeps simulating
˙˙ that simulation does not naturally return.
˙˙ I thought that you were saying the same exact
˙˙ meaning more verbosely.
That is an explicit acknowledgement that he had misunderstood what I
agreed to.
Because the actual code actually proves that if
IF HHH keeps simulating DD then it does keep
recursively simulating DD. I left open the possibility
that you failed to understand this.
You must show exactly how DD reaches its return statement
on line 06 while DD is being simulated by HHH or you have
not refuted that this is impossible.
After such an acknowledgement, there is no remaining ambiguity: my statements cannot legitimately be cited as agreement with the stronger proposition.
The distinction is elementary but important:
˙˙ agreeing with A
˙˙ agreeing with A -> B
does not mean
˙˙ agreeing with B
when the inference from A to B is precisely what is disputed.
The same applies to Sipser's conditional statement.
5. So, for future participants
When Peter says that somebody has "agreed" with his reasoning, ask for
the EXACT proposition that person agreed to.
When he quotes Sipser, notice the words:
˙˙ correctly determines
and ask where Peter proves that his detector actually does so.
When he says repeated/nested simulation proves non-halting, remember the terminating P/F/G/Done counterexample above.
And when a counterexample is dismissed as "outside the domain" only
after HHH has produced the wrong answer on it, ask for the definition of that domain which existed BEFORE the counterexample was tested.
These points save a great deal of circular discussion.
--
Copyright 2026 Olcott
Computation(Olcott)
Paraphrase of Emil Post definition of computation
All computations are equivalent to the application of finite
string transformation rules to finite string inputs to derive
any and all outputs.
Because Post canonical systems are Turing-equivalent, anything
that cannot be derived by applying finite string transformations
to finite strings is outside the scope of Church?Turing computation.
Decider(Olcott)
Correcting the misnomer term-of-the-art: decider
Every Decider(Olcott) must apply finite string transformation
inference steps to their finite string inputs that are relevant
to the decision criteria. It must make its decision on this basis.
Halt Decider(Olcott)
Decider(Olcott) entails that Halt Decider(Olcott) H(D) must apply
finite-string inference steps according to the operational semantics
of the source-code computation language of D. The only way to determine
the halting property of a finite string input is to examine the same
beha