XPost: comp.theory, sci.logic, sci.math   
   From: 643-408-1753@kylheku.com   
      
   On 2025-11-27, Richard Damon wrote:   
   > On 11/27/25 10:21 AM, olcott wrote:   
   >> The DD that halts is not the same DD that is   
   >> an input to HHH(DD). The input to HHH(DD)   
   >> specifies non-halting behavior that HHH   
   >> recognizes and terminates.   
   >   
   > Then somebody is lying.   
      
   Yes; Olcott lying to himself through code.   
      
   HHH makes this function call:   
      
    u32 Root = Init_Halts_HH(&Aborted, &execution_trace, &decoded, &code_end,   
   (u32)P,   
    &master_state, &slave_state, &slave_stack);   
      
   execution_trace is pointlessly doubly indirected; it holds a pointer   
   aimed at a static area right inside the coe of HHH. The above function   
   deos this:   
      
    if (**execution_trace == 0x90909090)   
    {   
    **Aborted = 0;   
    **execution_trace = (u32)Allocate(sizeof(Decoded_Line_Of_Code) * 10000);   
    Output((char*)"\nBegin Local Halt Decider Simulation "   
    "Execution Trace Stored at:", **execution_trace);   
    return 1;   
    }   
    return 0;   
      
   (You can see here that the argument should just be execution_trace,   
   and the allocation *execution_trace = ...; Ths execution_trace points   
   into the code of HHH.)   
      
   So the first call to HHH allocates the execution trace and changes   
   the static value in the code space from 0x90909090 to a different value.   
   In ths case 1 is returned. Otherwise nothing is allocated and 0 is   
   returned.   
      
   This return value is captured as Root and changes the behavior of the   
   first HHH instance compared to the others.   
      
   The first HHH instance performs the abort check. The other instances   
   are free running simulation steppers.   
      
   This changes DD from non-terminating to terminating. When HHH changes   
   its behavior form aborting and returning 0, to indefinitely simulating,   
   then DD changes its behavior from terminating to nonterminating.   
      
   > As DD is supposed to call HHH with a representation of itself.   
      
   Unfortunately, DD's representation is tied up that of HHH,   
   and HHH is self-modifying code.   
      
   Needless to say, you cannot do that; you can't use self-modifying code   
   to change a terminating test case to non-terminating and then claim that   
   0 is the correct return value.   
      
   --   
   TXR Programming Language: http://nongnu.org/txr   
   Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal   
   Mastodon: @Kazinator@mstdn.ca   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|