Sunday, October 25, 2020

Digest for comp.lang.c++@googlegroups.com - 25 updates in 5 topics

"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Oct 25 12:20AM -0400

On 10/24/20 7:21 PM, Bart wrote:
> change.
 
> Then I discovered that I had to press Space to start it. I hadn't tried
> that before because you said if pauses it, which is not quite right.
 
It pauses and un-pauses it. I apologize if that wasn't clear. LOL. I
can actually see how it might not be. On the website it had the pause
and un-pause reference.
 
> Then it took 75 seconds on my 64-bit machine to go through the whole cycle.
 
I'm not sure how long it takes on mine. Will test it tomorrow. It's
quite a while. Build in debug mode and it almost doubles the slowness.
 
--
Rick C. Hodgin
"Chris M. Thomasson" <chris.m.thomasson.1@gmail.com>: Oct 24 09:38PM -0700

On 10/24/2020 9:20 PM, Rick C. Hodgin wrote:
> and un-pause reference.
 
>> Then it took 75 seconds on my 64-bit machine to go through the whole
>> cycle.
 
Why not try to move the calculations to the GPU?
 
Paul <nospam@needed.invalid>: Oct 25 01:15AM -0400

Chris M. Thomasson wrote:
 
>>> Then it took 75 seconds on my 64-bit machine to go through the whole
>>> cycle.
 
> Why not try to move the calculations to the GPU?
 
Maybe using a profiler would tell you where the time
is being spent.
 
Paul
Bonita Montero <Bonita.Montero@gmail.com>: Oct 25 11:08AM +0100

> The 64-bit version is 16 seconds faster per frame, or about 33%.
 
Maybe because of SSE has twice the number of registers in 64 bit mode.
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Oct 25 12:11PM -0400

On 10/25/20 12:38 AM, Chris M. Thomasson wrote:
> Why not try to move the calculations to the GPU?
 
Because I don't know how to do that. :-) I've reported on things like
OpenCL before, but I've never programmed with any of those GPU libraries.
 
It would lend itself well to parallel processing as I have hundreds of
vertices that all need to have the same operations performed. I need to
use atan2() to get the angle theta, and another atan2() to get rho, and
then rotate them, recompute sin() and cos() on both to reposition for
rotation and axial tilt.
 
That's the bulk of the transformations.
 
--
Rick C. Hodgin
Bart <bc@freeuk.com>: Oct 25 04:27PM

On 25/10/2020 16:11, Rick C. Hodgin wrote:
> then rotate them, recompute sin() and cos() on both to reposition for
> rotation and axial tilt.
 
> That's the bulk of the transformations.
 
If rotating by the same angle lots of times, presumably you set up a
transformation matrix first? If not, you presumably don't recalculate
sin/cos with the same angle?
 
A transformation matrix can combine several operations (multiple
rotations, shearing, moving) into one matrix. OpenGL I think has
facilies to apply such a matrix.
"Rick C. Hodgin" <rick.c.hodgin@gmail.com>: Oct 25 01:02PM -0400

On 10/25/20 12:27 PM, Bart wrote:
 
> If rotating by the same angle lots of times, presumably you set up a
> transformation matrix first? If not, you presumably don't recalculate
> sin/cos with the same angle?
 
Each planet rotates by its rotational rate in the simulation. If you
look near the top of the earth_solar_system.cpp file in the main()
function you'll see where the multiple iBuildSphere() functions are
called. They have rotation rate.
 
Each vertex is rotated by that amount. You can search for the
iRotateZ() and iRotateY() functions to find them. This performs
arbitrary rotation on the Z or Y axes.
 
> A transformation matrix can combine several operations (multiple
> rotations, shearing, moving) into one matrix. OpenGL I think has
> facilies to apply such a matrix.
 
I've never understood how those kinds of matrices work. I've tried
reading through some tutorials a handful of times over my life, but it's
always been confusing to me. It would be better to see the example, and
then see the assembly instructions it would generate on a CPU, while I
also recognize that in a GPU it performs them as a single operation.
 
I understand quite well trigonometry and the unit circle (and unit
sphere). So, I've been able to operate within those boundaries just
fine to date, but it is slower. And, as I say, on our gaming laptop
with a high-end Nvidia graphics card, I am able to get a 29 second
cycle, which is actually too fast. We had to slow it down a little for
the videos.
 
I'll put a fps setting on there, but just don't have it yet. I'm also
not working on that repository for my active development. That's just a
snapshot taken at a given time for public consumption.
 
The work I'm doing now is in creating a triangle map of the land area of
the Earth, and then flattening it out so rather than being curved around
the sphere / globe, it's as though you took something like a shape in
the shape of Australia and then laid it on a flat surface. It changes
its geometry a little. Then, I'm taking it and placing it somewhere
arbitrarily on the surface of the sphere and having it wrap back around
the curve of the sphere's surface. By doing this, I'm able to move
continents about to other places on the globe.
 
Baby steps.
 
--
Rick C. Hodgin
Elijah Stone <elronnd@elronnd.net>: Oct 25 01:03AM -0700

> What happens if it detects no "non-halting behaviour" (loops or infinite
> recursion, or whatever) but its PUT does not terminate either?
 
On real hardware with a finite amount of memory, there are a finite number
of total states. So at some point either
 
1) An explicit halt will occur
 
2) A state will be repeated
 
The halting problem is decidable on a machine with finite memory within
1+2^n cycles (where n is the number of bits of memory), because the number
of states inducible by the program will necessarily be exhausted by 2^n
cycles.
 
(Granted, on modern hardware, n is so large as to render 2^n effectively infinite.)
 
-E
olcott <NoOne@NoWhere.com>: Oct 25 09:21AM -0500

On 10/25/2020 8:29 AM, Alan Mackenzie wrote:
>> behavior of its (PUT) or its (PUT) terminates on its own.
 
> This doesn't work for PUTs which neither terminate nor exhibit
> "non-halting behavior", whatever that might mean.
 
My fully elaborated halt decider will detect many kinds of infinite
loops and many kinds of infinite recursion, thus two kinds of
non-halting behavior.
 
 
 
> There is no essential difference between a random halt decider (which
> cannot exist) and your A_B_N_H_B_D (which _might_ exist, but won't work).
> Halt deciders do not exist and cannot exist.
 
Your dogma is contradicted by my code. I wish people would do more than
form what superficially appears to be a rebuttal to the very gullible.
 
> have something to show. Please let us know what the current anticipated
> release date is. And then leave all these newsgroups in peace until the
> anticipated release becomes an actual release.
 
Since you already disagreed with my current proof without pointing out
any error you would likely simply disagree with fully operational code.
 
Any disagreement that does not point out any actual error or what is
mistakenly believed to be an error is mere vacuous rhetoric.
 
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Oct 25 09:40AM -0500

On 10/25/2020 3:03 AM, Elijah Stone wrote:
> cycles.
 
> (Granted, on modern hardware, n is so large as to render 2^n effectively infinite.)
 
> -E
 
It looks like a 8 GB machine that runs at 2 Ghz takes a minimum of 34
seconds to repeat a prior state. This is only if the code was
intentionally designed to as quickly as possible get into every one of
its possible states.
 
--
Copyright 2020 Pete Olcott
Mike Terry <news.dead.person.stones@darjeeling.plus.com>: Oct 25 02:47PM

On 24/10/2020 22:58, olcott wrote:
> decider that is omniscient (all knowing).
 
> The scope is to show the conventional proofs do not prove that the
> halting problem is undecidable.
 
More specifically, your scope is to exhibit an H, H^ pair, such that
H(H^,H^) makes the correct decision for whether H^ (actually) halts.
(Not whether H(H^,H^) /would/ halt if something else did or didn't
happen, whatever that means. Actually, I've had an insight into what
you might mean by that, but I'll probably post that in a new thread...)
 
So, lets stick to your specific (yet to be fully delivered) H, H_Hat
pair, and I'll ask the same question:
 
What happens if H fails to detect non-halting behavior for its
corresponding H^(H^) calculation, and also that calculation does not
terminate?
 
I suggest the answer is that H itself will never terminate, and so fail
in its role of halt decider in this crucial case. (But maybe you
believe this scenario is impossible.)
 
>> non-halting behaviour for a calculation you agree actually halts.
 
> H_Hat(H_Hat) never ever halts unless and until it is aborted at some
> level of inner to outer invocation.
 
"aborted at some level of inner to outer invocation"? How do you come
up with such phrases? (More importantly, what does it mean exactly?)
 
What I think you mean is that H_Hat(H_Hat) halts precisely when its call
to Aborted_Because_Non_Halting_Behavior_Detected() returns YES, and this
in turn happens precisely when tha call has decided it's found
"non-halting behaviour" in the program it was emulating (and so decided
to cease emulating and return).
 
Paavo Helde <myfirstname@osa.pri.ee>: Oct 25 05:04PM +0200

25.10.2020 16:40 olcott kirjutas:
> seconds to repeat a prior state. This is only if the code was
> intentionally designed to as quickly as possible get into every one of
> its possible states.
 
Whoa, an error of ca 10^2,000,000,000 times! This must be a new record,
so far I have only seen newspaper articles getting numbers 1 billion
times wrong, which is only meager 10^9.
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Oct 25 03:16PM

On 25/10/2020 14:21, olcott wrote:
 
>> This doesn't work for PUTs which neither terminate nor exhibit
>> "non-halting behavior", whatever that might mean.
 
> My fully elaborated halt decider will detect many kinds of infinite loops and many kinds of infinite recursion, thus two kinds of non-halting behavior.
 
"Many kinds"? "Many" isn't good enough, mate. Unless it can detect ALL kinds of non-halting behaviour for ALL arbitrary UTMs then you haven't refuted Turing's proof, dear.
 
/Flibble
 
--
¬
olcott <NoOne@NoWhere.com>: Oct 25 10:30AM -0500

On 10/25/2020 9:47 AM, Mike Terry wrote:
 
> What happens if H fails to detect non-halting behavior for its
> corresponding H^(H^) calculation, and also that calculation does not
> terminate?
 
H is (and I will repeat for the fifth time) not all knowing.
 
> I suggest the answer is that H itself will never terminate, and so fail
> in its role of halt decider in this crucial case.
 
Your assertion is merely that it is possible for programs that are not
all knowing to have bugs. You did not notice that by making this
assertion that you simply dodged the whole point.
 
The task at hand is not to speculate that a implementation of a halt
decider that is not all knowing may get some answers incorrectly only
because it is not all knowing.
 
The task at hand is to provide a a specific input to this function that
can be shown to be impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
When I am correct and people realize that I am correct and still want to
form a rebuttal they use all kinds of underhanded deceptive tactics to
try to win the argument.
 
With persuasive enough rhetoric they sneak in ad hominem attacks
disguised as personal insults they succeed in convincing the very
gullible that I am probably incorrect.
 
I am not saying that you are using these dishonest tactics. I am merely
trying to get you to directly focus on the key point at hand.
 
The task at hand is to provide a a specific input to this function that
can be shown to be impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
>> level of inner to outer invocation.
 
> "aborted at some level of inner to outer invocation"?  How do you come
> up with such phrases?  (More importantly, what does it mean exactly?)
 
Maybe this is incomprehensible without actually seeing the working code.
I can understand it only because I focused on this key detail for
hundreds of hours and have a fully operational operating system that
implements the details of this.
 
> in turn happens precisely when tha call has decided it's found
> "non-halting behaviour" in the program it was emulating (and so decided
> to cease emulating and return).
 
Yes. H_Hat() is naturally infinitely recursive.
https://groups.google.com/g/comp.theory/c/NcFS02hKs1U/m/PlBF-1LRBAAJ
 
This same thing applies to all of the conventional self-referential
halting problem proof counter-examples.
 
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Oct 25 10:58AM -0500

On 10/25/2020 10:04 AM, Paavo Helde wrote:
 
> Whoa, an error of ca 10^2,000,000,000 times! This must be a new record,
> so far I have only seen newspaper articles getting numbers 1 billion
> times wrong, which is only meager 10^9.
 
8 GB is 68,719,476,736 bits
2 Ghz is 2,147,483,648 operations per second
 
68,719,476,736 bits / 2,147,483,648 OPS = 32 seconds.
 
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Oct 25 11:07AM -0500

On 10/25/2020 9:55 AM, Alan Mackenzie wrote:
> "non-halting behaviour" and will fail with an arbitrary input program.
> This is consistent with the theorem saying a halting decider isn't
> possible.
 
The task at hand is not to speculate that a implementation of a halt
decider that is not all knowing may get some answers incorrectly only
because it is not all knowing.
 
The task at hand is to provide a specific input to this function that
can be shown to be impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
> superficial about it. And, as yet, I've seen no evidence you have any
> code whatsoever. But, for the record, I believe you have something
> resembling what you claim in the opening post of this thread.
 
The task at hand is to provide a specific input to this function that
can be shown to be impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
> what you have is not a "proof". Abusing the word "proof" is a strong
> sign of a crank. What more is necessary? Others have pointed out
> detailed flaws, but you won't accept these.
 
The task at hand is to provide a specific input to this function that
can be shown to be impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
> And no, I wouldn't disagree with fully operational code. But I know such
> is not possible. If you want to prove me wrong, produce this code.
 
If that was true then you could meet this challenge:
 
The task at hand is to provide a specific input to this function that
can be shown to be impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
 
> No. Enough people have pointed out errors for it to be unnecessary for
> me to waste time on it. And the burden of proof is on your side, not
> ours.
 
The task at hand is to provide a specific input to this function that
can be shown to be impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
> You didn't answer the question: when's your software going to be ready?
 
Quite soon. I got totally burned out working all-the-time for months and
months. I may reduce the time spent on it to as little as 40 hours per
week. I am still aiming for the 2020-12-13 7:00 PM deadline of my two
year anniversary of refuting the conclusion the conventional
self-referential halting problem proof counter-examples.
 
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Oct 25 11:12AM -0500

On 10/25/2020 10:16 AM, Mr Flibble wrote:
> kinds of non-halting behaviour for ALL arbitrary UTMs then you haven't
> refuted Turing's proof, dear.
 
> /Flibble
 
The task at hand is not to speculate that a implementation of a halt
decider that is not all knowing may get some answers incorrectly only
because it is not all knowing.
 
This would be required ONLY if my claim is that I have solved the
halting problem.
 
What I have already done is refute all of the conventional
self-referential halting problem proof counter-examples.
Any correct rebuttal of this must meet this burden of proof:
 
Provide a specific input to this function that can be shown to be
impossible to decide correctly:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
 
--
Copyright 2020 Pete Olcott
Richard Damon <Richard@Damon-Family.org>: Oct 24 07:48PM -0400

On 10/24/20 7:00 PM, olcott wrote:
> data than the inner H_Hat(). Because the same code has entirely
> different data one instance can have a completely different execution
> trace than the other.
 
Both the outer H and outer H_Hat invoke the function in identical
manners, if they don't you have translated them right. Thus they invoke
the detection function the same way.
 
The inner H_Hat is supposed to be a faithful representation of the outer
H_Hat, if not, you haven't encoded it properly.
 
Both are calculating the value of H_Hat(H_Hat), one as the actual
program and one as your emulated program. Yes, because you are emulating
the inner H_Hat, your emulator can do what it wants to that inner one,
but the whole purpose of this to let H decide what the running of H_Hat
is going to do. Making the emulated one act differently just isn't going
to help you figure out what the real machine is going to do.
 
 
 
> Different instances of H_Hat() having entirely different data must be
> against your religion, none-the-less fully operational code will totally
> prove my point.
 
There is nothing wrong with running H_Hat with some other data, but it
is meaningless to the Linz proof. Linz everywhere is using H_Hat(H_Hat)
and H(H_Hat, H_Hat).
 
olcott <NoOne@NoWhere.com>: Oct 24 07:29PM -0500

On 10/24/2020 6:48 PM, Richard Damon wrote:
> the detection function the same way.
 
> The inner H_Hat is supposed to be a faithful representation of the outer
> H_Hat, if not, you haven't encoded it properly.
 
The inner H_Hat has the exact same machine code as the outer H_Hat yet
the outer DebugTrace() has seen many more steps of the inner H_Hat()
than this inner H_Hat()'s DebugTrace() have seen of its own inner inner
H_Hat().
 
> but the whole purpose of this to let H decide what the running of H_Hat
> is going to do. Making the emulated one act differently just isn't going
> to help you figure out what the real machine is going to do.
 
Actually you are missing a key detail. The only function in the whole
system that decides halting is
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
 
 
> There is nothing wrong with running H_Hat with some other data, but it
> is meaningless to the Linz proof. Linz everywhere is using H_Hat(H_Hat)
> and H(H_Hat, H_Hat).
 
No one seems to be getting the idea that there are three different
H_Hats() specified by the execution of this code:
 
void H_Hat(u32 M)
{
if (Aborted_Because_Non_Halting_Behavior_Detected(M, M))
MOV_EAX_0 // Execution of M(N) has been aborted
else
{
MOV_EAX_1 // M(N) has halted
HERE: goto HERE;
}
HALT
}
 
 
int main()
{
u32 M = (u32)H_Hat;
H_Hat(M); // MOV_EAX_0
HALT;
}
 
The H_Hat() called by main() is the outermost H_Hat().
 
Aborted_Because_Non_Halting_Behavior_Detected(M, M) creates a whole
brand new process context to execute its own H_Hat() instance
 
which in turn executes a whole other instance of
Aborted_Because_Non_Halting_Behavior_Detected(M, M) in the process
instance of the inner H_Hat()
 
which which in turn creates yet another whole process instance to
execute an inner inner H_Hat().
 
The two instances of the actual halt deciders:
Aborted_Because_Non_Halting_Behavior_Detected(M, M)
have different amounts of data.
 
The outer instance decides to abort the whole process tree. This aborts
both inner and inner H_Hats() and it also aborts the inner instance of
Aborted_Because_Non_Halting_Behavior_Detected(M, M) before it ever
returns a value.
 
Apparently this stuff is simply too difficult to understand without
seeing working code that proves that the execution trace has been
described accurately.
 
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Oct 25 09:35AM -0500

On 10/25/2020 2:45 AM, Malcolm McLean wrote:
 
> The mistake you are making is that if H aborts, you can somehow capture that
> and suppress or invert it. Then its not an abort.
> To make that obvious, I say abort means "smash the machine".
 
We could say that the computer is smashed so that H_Hat() cannot do the
opposite of what the halt decider decided.
 
We also could say that the process containing H_Hat() has been aborted
and its memory has been released so that H_Hat() cannot do the opposite
of what the halt decider decided.
 
And we can finally say that the Universal Turing Machine (UTM) halt
decider that was executing the H_Hat() UTM simply stops executing it so
that H_Hat() cannot do the opposite of what the halt decider decided.
 
In each of these three cases H_Hat() cannot possibly do the opposite of
whatever the halt decider decides as it always does in each of the
conventional self-referential halting problem proof counter-examples.
 
When the halt decider makes its {true,false} halting decision:
Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
The program under test is no longer executing.
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Oct 25 10:07AM -0500

On 10/25/2020 3:07 AM, Malcolm McLean wrote:
 
> That's another way of solving the problem. Pass hidden data to
> Aborted_Because_Non_Halting_Behavior_Detected(M, M). It's the
> route I thought you would take.
 
There is nothing hidden. The x86utm operating system is a master UTM.
As is common knowledge a UTM can see everything that its subordinate TM
does. The x86utm master UTM provides an operating system function that
allows a subordinate TM to execute its own subordinate TMs in
DebugStep() mode.
 
>> Aborted_Because_Non_Halting_Behavior_Detected(M, M) before it ever
>> returns a value.
 
> You mean "both outer and inner H_Hats?". This is crucial. If you abort
 
H_Hat(H_Hat) has one outer H_Hat() and two inner H_Hat()s.
 
When the outer H_Hat()'s
Aborted_Because_Non_Halting_Behavior_Detected(H_Hat, H_Hat)
traces the execution of its first param it detects infinite recursion.
 
The first inner H_Hat invokes its own
Aborted_Because_Non_Halting_Behavior_Detected(H_Hat, H_Hat)
in its own process context.
 
The outer Aborted_Because_Non_Halting_Behavior_Detected(H_Hat, H_Hat)
aborts the first inner H_Hat() before the inner H_Hat()s
The outer Aborted_Because_Non_Halting_Behavior_Detected(H_Hat, H_Hat)
has returned its value. It can do this because it has already seen more
DebugStep() processing steps than the inner process has seen.
 
> H_Hat, it can't halt, and so Linz is side-stepped. (Linz only applies to halt
> detectors that are Turing machines, and by giving the machine an "abort"
> state you've stopped it from being a strict Turing machine. Linz wasn't
 
So you are saying that it is impossible for a UTM to decide to stop
executing its TM. Why do you believe this?
 
 
--
Copyright 2020 Pete Olcott
olcott <NoOne@NoWhere.com>: Oct 25 10:33AM -0500

On 10/25/2020 9:39 AM, Malcolm McLean wrote:
>> Aborted_Because_Non_Halting_Behavior_Detected(u32 P, u32 I)
>> The program under test is no longer executing.
 
> And H is no longer executing either. That's the crucial step.
 
When the halt decider has already terminated the execution of its
program under test, then this PUT cannot possibly implement the
conventional trick of doing the opposite of whatever the halt decider
decides.
 
--
Copyright 2020 Pete Olcott
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Oct 25 01:30PM

My first ever YT coding vlog! The new microphone seems to work. :D https://www.youtube.com/watch?v=JTK8MbvLq84
 
/Flibble
 
--
¬
Mr Flibble <flibbleREMOVETHISBIT@i42.co.uk>: Oct 25 03:06PM

On 25/10/2020 13:30, Mr Flibble wrote:
> My first ever YT coding vlog! The new microphone seems to work. :D https://www.youtube.com/watch?v=JTK8MbvLq84
 
> /Flibble
 
New video URL: https://www.youtube.com/watch?v=8c2nfQrPb6g
 
--
¬
Brian Wood <woodbrian77@gmail.com>: Oct 24 05:16PM -0700

On Tuesday, June 19, 2018 at 10:30:09 AM UTC-5, Scott Lurndal wrote:
 
> >Here's a script to help people switch to east const:
> Why on earth would someone want to do something so silly? Talk
> about churn for the sake of churn.
 
A new name has appeared on the petition:
http://slashslash.info/petition/
 
in the last few months. I encourage you to join us.
 
Brian
https://webEbenezer.net
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to comp.lang.c+++unsubscribe@googlegroups.com.

No comments: