• Re: How to write a self-referencial TM?

    From Richard Heathfield@21:1/5 to wij on Wed May 14 07:02:55 2025
    [I mistakenly sent my reply by email first time round. My
    apologies to wij for the mis-click.]

    On 14/05/2025 06:13, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
    D();
    }

    Easy?



    Yes.

    Here's the tape:
    [0]

    current state: 0
    content of the square being scanned: 0
    new content of the square: 0
    move left, right, or stay: stay
    next state: 0

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to wij on Wed May 14 18:14:03 2025
    On 14/05/2025 17:43, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself): >>>
    void D() {
      D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?

    It doesn't have to simulate anything. All it has to do is to
    restore the state into which the programmer wishes to recurse.
    I've already shown how this can be done.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to wij on Wed May 14 18:49:56 2025
    On 14/05/2025 18:33, wij wrote:
    On Wed, 2025-05-14 at 18:14 +0100, Richard Heathfield wrote:
    On 14/05/2025 17:43, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:

    <snip>


    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?

    It doesn't have to simulate anything. All it has to do is to
    restore the state into which the programmer wishes to recurse.

    So, when you say "A UTM simulates X", it means 'the UTM' doesn't have to do anything. So, 'UTM' is human (e.g. you), not a real TM?

    No, it doesn't mean that.


    I've already shown how this can be done.

    Where?

    Message-ID: <1001bmf$2ao7o$2@dont-email.me>

    Here's the gist of that article...

    Here's the tape:
    [0]

    current state: 0
    content of the square being scanned: 0
    new content of the square: 0
    move left, right, or stay: stay
    next state: 0

    This TM functions by returning the state of the machine to its
    starting state.

    The only functional difference between this code and yours is
    that yours will blow the stack. (Mine doesn't have a stack to blow.)

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to wij on Wed May 14 19:38:48 2025
    On 14/05/2025 19:01, wij wrote:
    On Wed, 2025-05-14 at 18:49 +0100, Richard Heathfield wrote:
    On 14/05/2025 18:33, wij wrote:
    On Wed, 2025-05-14 at 18:14 +0100, Richard Heathfield wrote:
    On 14/05/2025 17:43, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:

    <snip>


    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?

    It doesn't have to simulate anything. All it has to do is to
    restore the state into which the programmer wishes to recurse.

    So, when you say "A UTM simulates X", it means 'the UTM' doesn't have to do
    anything. So, 'UTM' is human (e.g. you), not a real TM?

    No, it doesn't mean that.

    You said "It doesn't have to simulate anything. All it has to do is to restore the state into which the programmer wishes to recurse."

    Yes.


    Then, what is it?

    It's my answer to your question:

    Q: Write a turing machine that performs D function (which calls
    itself):

    void D() {
    D();
    }


    I've already shown how this can be done.
    Here's the gist of that article...

    Here's the tape:
    [0]

    current state: 0
    content of the square being scanned: 0
    new content of the square: 0
    move left, right, or stay: stay
    next state: 0

    This TM functions by returning the state of the machine to its
    starting state.

    The only functional difference between this code and yours is
    that yours will blow the stack. (Mine doesn't have a stack to blow.)


    1. Apparently your TM (one single symbol '0') is not what you say.

    [0] is the *tape*.

    TMs have a tape, a read/write head, a single-stepping tape motor,
    and a finite state machine.

    See <https://plato.stanford.edu/entries/turing-machine/>

    where you can read this:

    "A Turing machine then, or a computing machine as Turing called
    it, in Turing’s original definition is a machine capable of a
    finite set of configurations q1,…,qn (the states of the machine,
    called m-configurations by Turing). It is supplied with a one-way
    infinite and one-dimensional tape divided into squares each
    capable of carrying exactly one symbol. At any moment, the
    machine is scanning the content of one square r which is either
    blank (symbolized by S0) or contains a symbol S1,…,Sm with S1=0
    and S2=1."

    There's more to TMs than tapes.

    2. D() should have at least one final state

    Yours doesn't, so why should mine?

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to olcott on Wed May 14 21:19:04 2025
    On 14/05/2025 21:02, olcott wrote:
    On 5/14/2025 3:00 PM, Keith Thompson wrote:
    Richard Heathfield <rjh@cpax.org.uk> writes:
    [...]
    See <https://plato.stanford.edu/entries/turing-machine/>

    where you can read this:

    "A Turing machine then, or a computing machine as Turing
    called it, in
    Turing’s original definition is a machine capable of a finite
    set of
    configurations q1,…,qn (the states of the machine, called
    m-configurations by Turing). It is supplied with a one-way
    infinite
    and one-dimensional tape divided into squares each capable of
    carrying
    exactly one symbol. At any moment, the machine is scanning the
    content
    of one square r which is either blank (symbolized by S0) or
    contains a
    symbol S1,…,Sm with S1=0 and S2=1."

    There's more to TMs than tapes.
    [...]

    Interesting.  The phrase "one-way infinite" implies that the tape
    is infinite in only one direction, so the cells can be indexed by
    non-negative integers.  Elsewhere on that web page, it
    acknowledges
    that there are variations in Turing machines, including one-way
    vs. two-way infinite tapes.  It's implied that Turings original
    concept had a one-way infinite tape.  I wasn't able to confirm or
    deny that in a very quick look through Turings original paper.

    I've always assumed that a TM tape is two-way infinite.

    I presume that one-way and two-way infinite tapes are
    computationally
    equivalent, so the distinction doesn't matter all that much.
    (Though with a one-way tape, I'm not sure what happens if the TM
    runs off the end of the tape.)


    I don't think that is precisely accurate.
    A unlimited tape is not an infinite tape
    it merely has all of the space that it needs.

    Correct.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Keith Thompson on Wed May 14 21:16:10 2025
    On 14/05/2025 21:00, Keith Thompson wrote:

    <snip>

    I presume that one-way and two-way infinite tapes are computationally equivalent, so the distinction doesn't matter all that much.
    (Though with a one-way tape, I'm not sure what happens if the TM
    runs off the end of the tape.)

    I should imagine that you could build one hell of a stack on
    one-way tape.

    Of course, the tape doesn't /have/ to be infinite. It only has to
    be long enough so that you /don't/ run off the end. Just how long
    that is depends on what problem you're addressing.

    In the Real World, tapes can't be infinite, so an implementor has
    to decide how long 'long enough' is.

    If the TM's alphabet consisted of 256 discrete symbols (no reason
    why not) a megabyte would give you a disk-based 'tape' a million
    cells long.

    Ought to be enough for `take one down and pass it around'.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mr Flibble@21:1/5 to Keith Thompson on Wed May 14 21:13:19 2025
    On Wed, 14 May 2025 13:49:03 -0700, Keith Thompson wrote:

    Richard Heathfield <rjh@cpax.org.uk> writes:
    On 14/05/2025 21:00, Keith Thompson wrote:
    <snip>

    I presume that one-way and two-way infinite tapes are computationally
    equivalent, so the distinction doesn't matter all that much.
    (Though with a one-way tape, I'm not sure what happens if the TM runs
    off the end of the tape.)

    I should imagine that you could build one hell of a stack on one-way
    tape.

    Of course, the tape doesn't /have/ to be infinite. It only has to be
    long enough so that you /don't/ run off the end. Just how long that is
    depends on what problem you're addressing.

    In the Real World, tapes can't be infinite, so an implementor has to
    decide how long 'long enough' is.

    TM's don't necessarily operate in the Real World.

    If the TM's alphabet consisted of 256 discrete symbols (no reason why
    not) a megabyte would give you a disk-based 'tape' a million cells
    long.

    Ought to be enough for `take one down and pass it around'.

    Sure. "Infinite tape" might be more precisely expressed as "sufficient tape". But a TM that advances in one direction along the tape in a loop
    will require more than any finite length of tape if you leave it running
    long enough, though the amount of tape it consumes in any finite number
    of steps is still finite. For that kind of TM in particular, "infinite
    tape" is a convenient shorthand.

    Flibble's Law still applies:

    If a problem permits infinite behavior in its formulation, it permits
    infinite analysis of that behavior in its decidability scope.

    /Flibble

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Keith Thompson on Wed May 14 22:28:54 2025
    On 14/05/2025 21:49, Keith Thompson wrote:
    Richard Heathfield <rjh@cpax.org.uk> writes:

    <snip>


    In the Real World, tapes can't be infinite, so an implementor has to
    decide how long 'long enough' is.

    TM's don't necessarily operate in the Real World.

    Of course. HP is a thought experiment, not an exercise for
    hardware engineers (or indeed software engineers). I just can't
    help turning my thoughts in that direction.


    If the TM's alphabet consisted of 256 discrete symbols (no reason why
    not) a megabyte would give you a disk-based 'tape' a million cells
    long.

    Ought to be enough for `take one down and pass it around'.

    Sure. "Infinite tape" might be more precisely expressed as
    "sufficient tape".

    Quite so.

    But a TM that advances in one direction along
    the tape in a loop will require more than any finite length of tape
    if you leave it running long enough, though the amount of tape it
    consumes in any finite number of steps is still finite. For that
    kind of TM in particular, "infinite tape" is a convenient shorthand.

    All acknowledged, all agreed.

    Using a highly questionable collection of approximations about
    the physical properties of 4mm mylar tape and the number of atoms
    in the universe, I calculated that by devoting /everything/ to
    this tape we could make it

    5285412262156448202959830866807610993657505285

    lightyears long (exACtly, of course).

    It's still a long way off infinite, but I think it could possibly
    qualify as 'long enough'.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Keith Thompson on Wed May 14 23:02:01 2025
    On 14/05/2025 22:40, Keith Thompson wrote:
    Richard Heathfield <rjh@cpax.org.uk> writes:
    [...]
    Using a highly questionable collection of approximations about the
    physical properties of 4mm mylar tape and the number of atoms in the
    universe, I calculated that by devoting /everything/ to this tape we
    could make it

    5285412262156448202959830866807610993657505285

    lightyears long (exACtly, of course).

    It's still a long way off infinite, but I think it could possibly
    qualify as 'long enough'.

    It's still not long enough for a TM that repeatedly advances its
    position in one direction while indefinitely repeating the same state.

    Indeed, but the existence of TMs for which it isn't long enough
    doesn't mean there aren't plenty of TMs for which a C90 would be
    more than adequate.

    A hobbyist wishing to code up a TM shouldn't be put off by the
    fact that his laptop doesn't have an infinitely large hard disk.

    <read and snipped>
    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Ben Bacarisse@21:1/5 to Keith Thompson on Thu May 15 00:55:48 2025
    Keith Thompson <Keith.S.Thompson+u@gmail.com> writes:

    Richard Heathfield <rjh@cpax.org.uk> writes:
    [...]
    See <https://plato.stanford.edu/entries/turing-machine/>

    where you can read this:

    "A Turing machine then, or a computing machine as Turing called it, in
    Turing’s original definition is a machine capable of a finite set of
    configurations q1,…,qn (the states of the machine, called
    m-configurations by Turing). It is supplied with a one-way infinite
    and one-dimensional tape divided into squares each capable of carrying
    exactly one symbol. At any moment, the machine is scanning the content
    of one square r which is either blank (symbolized by S0) or contains a
    symbol S1,…,Sm with S1=0 and S2=1."

    There's more to TMs than tapes.
    [...]

    Interesting. The phrase "one-way infinite" implies that the tape
    is infinite in only one direction, so the cells can be indexed by non-negative integers. Elsewhere on that web page, it acknowledges
    that there are variations in Turing machines, including one-way
    vs. two-way infinite tapes. It's implied that Turings original
    concept had a one-way infinite tape. I wasn't able to confirm or
    deny that in a very quick look through Turings original paper.

    I don't think it's explicit, but the paper does refer to input being "on
    the beginning" of the tape.

    I've always assumed that a TM tape is two-way infinite.

    That is by far the more usual presentation these days. A lot about
    Turing's presentation has been tidied up over the years.

    I presume that one-way and two-way infinite tapes are computationally equivalent, so the distinction doesn't matter all that much.

    Yes. That's often presented as an "exercise to the reader". There are
    also multi-tape TMs, non-deterministic TMs and random TMs that can
    access a tape of randomly chosen symbols.

    (Though with a one-way tape, I'm not sure what happens if the TM
    runs off the end of the tape.)

    The usual presentation just says that TM stops if the action can't be
    taken. It need be no different to what happens if the state transition function does not include the current state/input pair in its domain.

    --
    Ben.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andy Walker@21:1/5 to Richard Heathfield on Thu May 15 01:09:34 2025
    On 14/05/2025 21:16, Richard Heathfield wrote:
    On 14/05/2025 21:00, Keith Thompson wrote:
    I presume that one-way and two-way infinite tapes are computationally
    equivalent, so the distinction doesn't matter all that much.

    Indeed, there are lots of computationally equivalent versions:

    -- two or more tapes [indeed, two-dimensional tapes]
    -- one-way or two-way
    -- "paper" tapes where you can punch holes to change the content but not
    stick the chad back in to "unpunch" the holes
    -- two symbol, three symbol, ...
    -- move two or more spaces at a time
    -- others I've forgotten

    Once you've shown they're equivalent, you can use a convenient version to
    solve problems and the simplest versions to investigate theoretical limits.
    See below for more info.

    (Though with a one-way tape, I'm not sure what happens if the TM
    runs off the end of the tape.)

    It's helpful to have an end-of-tape "marker" [could be a symbol
    used only for this purpose].

    I should imagine that you could build one hell of a stack on one-way tape.

    Yes, but for theoretical purposes you probably need two stacks [or
    near equivalents] to hold two arbitrary-length integers. On the other hand, the tape can be read as two integers reading outwards from the head position, and the TM transitions then correspond to fiddling with the least-significant digits of these integers. See also below.

    Of course, the tape doesn't /have/ to be infinite. It only has to be long enough so that you /don't/ run off the end. Just how long that is depends
    on what problem you're addressing.
    In the Real World, tapes can't be infinite, so an implementor has to decide how long 'long enough' is.

    An alternative view is that you can attach a "tape factory" to your
    TM, and add a new square or three when you would otherwise run off the end.

    If the TM's alphabet consisted of 256 discrete symbols (no reason why not)
    a megabyte would give you a disk-based 'tape' a million cells long.
    When I was lecturing this stuff, it was common for software to be delivered as a stack of floppy discs accompanied by instructions such as
    "now mount the next disc". So I used to point out to the students that
    this was quite precisely a TM. The PC was a FSM which could read/write "squares" consisting of one floppy disc each containing several million
    binary digits depending on the state of the PC, from time to time going to
    the next or previous floppy. If you didn't have a next floppy, you went
    to a shop and bought some more.

    All the material described above is discussed in my lecture notes,
    on the Web starting at

    https://www.cuboid.me.uk/anw/G12FCO/header.html

    [see especially the last few lectures/problem classes/courseworks, all
    linked from the header page]. Of course, there are many other excellent
    web pages and books that discuss this stuff with varying degrees of
    formality and level of maths/logic required as a pre-requisite.

    [May be worth noting that the references to emulation and to self- referential programs in lecture 18 pre-date musings by Messrs Olcott and Flibble by years, and they certainly weren't original to me.]

    --
    Andy Walker, Nottingham.
    Andy's music pages: www.cuboid.me.uk/andy/Music
    Composer of the day: www.cuboid.me.uk/andy/Music/Composers/Heller

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to wij on Thu May 15 10:07:54 2025
    On 2025-05-14 05:13:40 +0000, wij said:

    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
    D();
    }

    Easy?

    The function has no arguments so we may require that the tape of the
    Turing machine is initally empty. The the Turing machine needs only
    one rule:

    in the initial state, if the tape position under the head is empty,
    leave the tape psition under the head empty and move forward and
    continue in the initial state.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to Keith Thompson on Thu May 15 10:17:54 2025
    On 2025-05-14 20:00:13 +0000, Keith Thompson said:

    Richard Heathfield <rjh@cpax.org.uk> writes:
    [...]
    See <https://plato.stanford.edu/entries/turing-machine/>

    where you can read this:

    "A Turing machine then, or a computing machine as Turing called it, in
    Turing’s original definition is a machine capable of a finite set of
    configurations q1,…,qn (the states of the machine, called
    m-configurations by Turing). It is supplied with a one-way infinite
    and one-dimensional tape divided into squares each capable of carrying
    exactly one symbol. At any moment, the machine is scanning the content
    of one square r which is either blank (symbolized by S0) or contains a
    symbol S1,…,Sm with S1=0 and S2=1."

    There's more to TMs than tapes.
    [...]

    Interesting. The phrase "one-way infinite" implies that the tape
    is infinite in only one direction, so the cells can be indexed by non-negative integers. Elsewhere on that web page, it acknowledges
    that there are variations in Turing machines, including one-way
    vs. two-way infinite tapes. It's implied that Turings original
    concept had a one-way infinite tape. I wasn't able to confirm or
    deny that in a very quick look through Turings original paper.

    I've always assumed that a TM tape is two-way infinite.

    Post found that Turing's original machine could be simplified so that
    every computation possible with the original machie is possible with
    the simplified machine but reasoning about the simpified macnies is
    simpler and easier than about the original machines. One of the
    simplifications is that the tape has no beginning.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to Mr Flibble on Thu May 15 10:24:34 2025
    On 2025-05-14 21:13:19 +0000, Mr Flibble said:

    On Wed, 14 May 2025 13:49:03 -0700, Keith Thompson wrote:

    Richard Heathfield <rjh@cpax.org.uk> writes:
    On 14/05/2025 21:00, Keith Thompson wrote:
    <snip>

    I presume that one-way and two-way infinite tapes are computationally
    equivalent, so the distinction doesn't matter all that much.
    (Though with a one-way tape, I'm not sure what happens if the TM runs
    off the end of the tape.)

    I should imagine that you could build one hell of a stack on one-way
    tape.

    Of course, the tape doesn't /have/ to be infinite. It only has to be
    long enough so that you /don't/ run off the end. Just how long that is
    depends on what problem you're addressing.

    In the Real World, tapes can't be infinite, so an implementor has to
    decide how long 'long enough' is.

    TM's don't necessarily operate in the Real World.

    If the TM's alphabet consisted of 256 discrete symbols (no reason why
    not) a megabyte would give you a disk-based 'tape' a million cells
    long.

    Ought to be enough for `take one down and pass it around'.

    Sure. "Infinite tape" might be more precisely expressed as "sufficient
    tape". But a TM that advances in one direction along the tape in a loop
    will require more than any finite length of tape if you leave it running
    long enough, though the amount of tape it consumes in any finite number
    of steps is still finite. For that kind of TM in particular, "infinite
    tape" is a convenient shorthand.

    Flibble's Law still applies:

    If a problem permits infinite behavior in its formulation, it permits infinite analysis of that behavior in its decidability scope.

    You cannot pose in finite time a problem that has an infinite behaviour
    in its formulation. If the problem will not be posed in a finite time
    it will never be solved.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to wij on Thu May 15 17:08:11 2025
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself): >>>>>
    void D() {
       D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM. >>>
    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that is to be simulated. The
    scheme says how to turn the (TM + input tape) into a string of symbols that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the result of applying the UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to specify the exact UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Thu May 15 19:37:14 2025
    On 5/15/25 12:47 PM, olcott wrote:
    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls
    itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a
    equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape)
    that is to be simulated.  The scheme says how to turn the (TM + input
    tape) into a string of symbols that represent that computation.

    So to answer your question, the "source-code on its tape" is the
    result of applying the UTM's particular scheme to the combination
    (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would
    need to specify the exact UTM being used, because every UTM will have
    a different answer to your question.


    Mike.


    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Sure there are. In fact, a few years ago when you were trying to learn
    about TM's we showed you a PC program that would simulate an arbitrary
    TM. You just didn't like it as its symbol set was too restricted for you
    taste.


    If there was such a UTM then examining things
    like a termination analyzer would be too difficult
    because of the volume of details. Even moving a
    single value to a specific memory location can
    take many many steps.

    That is just your own problem. Your problem is you don't know how to
    think it TM operations. Your rarely want to place a specific number at a specific place on the tape (the closest thing to a memory location)


    A RASP machine https://en.wikipedia.org/wiki/Random-access_stored-program_machine
    is a much better fit for examining the details of any
    complex algorithm.

    The x86 language is essentially the same thing as a RASP
    machine for all computations that can be accomplished
    with the amount of memory that is available.

    Nope, quite different. There are a few simularities, but there are also
    major differences. Now, RASP machine do have the same fault as the x86
    that program fragments in them are not necessarily programs/compuations anymore. That is the key feature of Turing Machines, ANY Turing Machine represent a computation if it halts.


    To be a computable function within a model of computation
    a sequence of the steps of a specific algorithm must be
    applied to (an often finite string) input to derive an output. https://en.wikipedia.org/wiki/Computable_function

    Right, but not all functions are computable, like the Halting Funciton.


    When computing the sum() function the steps of the algorithm
    of arithmetic must be applied to the inputs.

    Right, as that is the mapping defined by itl


    *When computing the halt() function steps with a simulating*
    *termination analyzer the behavioral steps specified by the*
    *input must be simulated according to the computer language*
    *of this input*

    Right, but that simulation might be of infinite length, and thus the
    decider can't do that an still answer in finite time.


    *I may be wrong yet it seems to me that*
    Computer science never knew these things before in that
    it never placed any limit on the type of algorithm that
    must be performed.


    The problem is you don't understand a few of the basics, like the
    mapping can be based on the infinite processing, but the decider can't


    I think that it was Ben that said that one of two
    functions that do nothing besides return true or false
    is correct on all of the counter-example inputs
    to the halting problem.

    That is true. Deciders are rated STRICTLY by comparing the answer they
    give to the required answer. Computability theory does not care about
    the details of how the answer came about, as long is it was built on a
    finite number of deterministic instructions.

    Thus one of the two machine


    When we require that a mapping be computed from an
    input, then this idea is rejected.


    Nope, as doing x = 1 *IS* a computation.

    You just don't knwo what the words you are using mean.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Heathfield@21:1/5 to Mike Terry on Fri May 16 01:59:34 2025
    On 16/05/2025 01:40, Mike Terry wrote:
    If you're just playing/learning about TMs then probably you
    really just want a very basic TM emulator

    I found this: <https://turingmachinesimulator.com/>

    Very frustrating, but that's the nature of the beast.

    --
    Richard Heathfield
    Email: rjh at cpax dot org dot uk
    "Usenet is a strange place" - dmr 29 July 1999
    Sig line 4 vacant - apply within

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to wij on Fri May 16 01:40:06 2025
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM. >>>>>
    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that is to be simulated.  The
    scheme says how to turn the (TM + input tape) into a string of symbols that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the result of applying the UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to specify the exact UTM
    being used, because every UTM will have a different answer to your question. >>

    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM. Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself. (Nothing magical changes when a UTM simulates
    itself, as opposed to some other TM.)

    Your question "what is the source of such UTM?" seems to be asking to be pointed to some sample
    source code for a UTM? I don't have any! But I'm sure someone somewhere will have gone to all the
    trouble of coding an actual UTM, and will have made that available online somewhere. Note that a
    UTM is a firstly a TM, but TMs can be described as text "source code" and someone could have made
    that available online.

    Perhaps someone else here knows of useful sources for this? Otherwise you would need to search for
    it with Google or whatever. IF THIS IS WHAT YOU REALLY WANT, which seems unlikely to me.

    Most people aren't interested in specific source code for an actual UTM, because the role of a UTM
    is /theoretical/, and most people can /see/ what a UTM needs to do, and how it can do it, so there
    is no doubt in their mind that such a UTM /could/ be written. I daresay that most programmers could
    easily write one themselves, were it not for the huge burden of having to work within the TM
    architecture with only the low level facilities TMs provide. So they consider it a lot of work, and
    at the end they would have a UTM source code, but /what would they plan to do with it/ ?? You would
    only do all this work if you needed to actually /use/ the UTM, but TMs are not /intended/ as a
    practical programming tool.

    So... Do you /really/ need an actual UTM source code? I wonder. What do you intend to use it for?

    If you need to develop/test/debug your own TMs, rather than a UTM source code you need some kind of
    TM development environment. I don't know if such a thing exists for serious use!

    If you're just playing/learning about TMs then probably you really just want a very basic TM
    emulator (NOT a UTM) that can take a TM description and output for you the successive steps of its
    execution, showing the tape contents and position of the tape head. Loads of (most?) CS students
    will have done this themselves at some point, using their own favourite language - you could use
    Python, C++, Java, whatever you like. I once wrote myself one of these as a play thing in C++ and
    it took a few hours perhaps. (Most of the time was fiddling with output formats to make the output
    appear in a way I liked. I got bored eventually!) You could do this yourself...

    Or... is it that you don't /understand/ something about UTMs and need convincing? I think just
    explaining what is confusing you and asking questions would be a better way to go!

    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to wij on Fri May 16 03:26:28 2025
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
         D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that is to be simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the result of applying the UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to specify the exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes when a UTM simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the encoding of a TM. And, U(X) should function the same like X.
    Given instance U(U(f)), it should function like f from the above definition. But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    - f represents some computation.
    - U(f) represents U being run with f on its tape.
    Note this is itself a computation, distinct from f of course
    but having the same behaviour.
    - U(U(f)) represents U simulating the previous computation.

    There is no reason U(f) cannot be simulated by U. U will have no knowledge that it is "simulating
    itself", and will just simulate what it is given.


    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri May 16 10:24:19 2025
    On 2025-05-14 17:24:36 +0000, olcott said:

    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself): >>>>
    void D() {
      D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?

    You run a UTM that has its own source-code on its tape.

    A UTM requires a translation to its input language. A source code cannot
    be used unless it happens to be written in the UTM's input language.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri May 16 10:27:05 2025
    On 2025-05-15 16:47:49 +0000, olcott said:

    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM. >>>>>
    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape)
    that is to be simulated.  The scheme says how to turn the (TM + input
    tape) into a string of symbols that represent that computation.

    So to answer your question, the "source-code on its tape" is the result
    of applying the UTM's particular scheme to the combination (UTM, input
    tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would
    need to specify the exact UTM being used, because every UTM will have a
    different answer to your question.


    Mike.

    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Investigations do not need a standard language. For an investigation an
    ad hoc language is good enough and usually better.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri May 16 10:33:08 2025
    On 2025-05-15 20:50:34 +0000, olcott said:

    On 5/15/2025 2:57 PM, wij wrote:
    On Thu, 2025-05-15 at 11:47 -0500, olcott wrote:
    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls >>>>>>>>> itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent >>>>>>> TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape)
    that is to be simulated.  The scheme says how to turn the (TM + input >>>> tape) into a string of symbols that represent that computation.

    So to answer your question, the "source-code on its tape" is the result >>>> of applying the UTM's particular scheme to the combination (UTM, input >>>> tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need >>>> to specify the exact UTM being used, because every UTM will have a
    different answer to your question.


    Mike.


    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Sort of.

    If there was such a UTM then examining things
    like a termination analyzer would be too difficult
    because of the volume of details. Even moving a
    single value to a specific memory location can
    take many many steps.

    So, which part of POOH is "fully encoded UTM"

    A RASP machine
    https://en.wikipedia.org/wiki/Random-access_stored-program_machine
    is a much better fit for examining the details of any
    complex algorithm.

    The x86 language is essentially the same thing as a RASP
    machine for all computations that can be accomplished
    with the amount of memory that is available.

    Absolutely false. POOH is the example that rejected TM/RASP instead of C.

    In trying making P!=NP proof (may have defects, I just leave it there
    to improve)
    https://sourceforge.net/projects/cscall/files/MisFiles/PNP-proof-en.txt/download

    I feel TM would be very long and tedious, so I claimed that no *algorithm* can
    solve NPC (algorithmic) problems. (thanks to olcott, this proof was inspired in
    refuting POOH.)

    See also Spu in my recent post. TM is very low-level to solve many idea
    of problems.

    To be a computable function within a model of computation
    a sequence of the steps of a specific algorithm must be
    applied to (an often finite string) input to derive an output.
    https://en.wikipedia.org/wiki/Computable_function

    When computing the sum() function the steps of the algorithm
    of arithmetic must be applied to the inputs.

    *When computing the halt() function steps with a simulating*
    *termination analyzer the behavioral steps specified by the*
    *input must be simulated according to the computer language*
    *of this input*

    *I may be wrong yet it seems to me that*
    Computer science never knew these things before in that
    it never placed any limit on the type of algorithm that
    must be performed.

    I think that it was Ben that said that one of two
    functions that do nothing besides return true or false
    is correct on all of the counter-example inputs
    to the halting problem.

    When we require that a mapping be computed from an
    input, then this idea is rejected.


    You are excellent in quoting tautology to support your claims.


    Most people don't know that a mapping must be
    computed from the inputs, hence Ben's mistake.

    Most people don't even know what mappings are. Most people don't
    make mistakes just because they don't know what mappings are.

    Ben does not make mistakes just because most people don't know
    something that Ben does know.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Fri May 16 10:40:39 2025
    On 2025-05-15 19:15:32 +0000, olcott said:

    On 5/15/2025 1:49 PM, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM. >>>>>>
    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape)
    that is to be simulated.  The
    scheme says how to turn the (TM + input tape) into a string of symbols
    that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the result
    of applying the UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would
    need to specify the exact UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    The TM description language is more accurately
    referred to as the TM specification language.

    Not really. The terms "description language" and "specification language"
    refer to differenct uses of the languages, not ingerently different
    languages. A specification may omit details that a description must
    not omit but the choice of such details must a choice of the specifier
    and not forced by the language.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to wij on Fri May 16 10:45:11 2025
    On 2025-05-15 20:08:54 +0000, wij said:

    On Thu, 2025-05-15 at 14:15 -0500, olcott wrote:
    On 5/15/2025 1:49 PM, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
         D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape)
    that is to be simulated. 
    The
    scheme says how to turn the (TM + input tape) into a string of symbols >>>> that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the result >>>> of applying the UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would
    need to specify the exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?



    The TM description language is more accurately
    referred to as the TM specification language.

    A UTM is a hypothetical thing that is specified
    to have some source source-code that it operates
    on yet none of the details of this are ever
    fully elaborated.

    That is why I needed to use the x86 language
    as a fully specified proxy. With my x86utm
    operating system we make a 100% concrete
    simulating termination analyzer such that
    zero of the details are "abstracted away".

    It is the details that have been "abstracted away"
    by the abstractions that cause the conventional
    halting problem proofs to be insufficiently
    understood.

    Unfortunely, refuting HP suggests halting decider is a real thing.
    Proving by "abstracted away" the real part?

    In which way can a proof that a halting decider does not exist
    suggest that a halting decider is a real thing?

    The concept of halting decider is a real concept in the same sense
    as Arsitotle's concept of unicorn is a real concept but does that
    mean that a unicorn and a halting decider are real things?

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andy Walker@21:1/5 to Mike Terry on Fri May 16 12:22:57 2025
    On 16/05/2025 01:40, Mike Terry wrote:
    [...]
    [wij's] question "what is the source of such UTM?" seems to be asking
    to be pointed to some sample source code for a UTM? I don't have
    any! But I'm sure someone somewhere will have gone to all the
    trouble of coding an actual UTM, and will have made that available
    online somewhere. Note that a UTM is a firstly a TM, but TMs can be described as text "source code" and someone could have made that
    available online.
    Perhaps someone else here knows of useful sources for this?

    Minsky's "Computation" has on its front cover [at least in the
    Open University edition] and inside, as Fig. 7.2.9 on p142, a complete
    UTM as a state-transition diagram. ICBA to count [or to look for more
    details in the text], but it has ~20 states and uses ~10 symbols. It
    would represent perhaps an hour's [routine] work to convert into the
    standard quintuples, or a similar amount of work to convert to C. The
    text describes fully how an arbitrary TM, expressed as quintuples, and
    its input tape, should be represented on the UTM's tape.

    In particular, there is no difficulty [and no self-reference]
    in describing Minsky's UTM and its tape to Minsky's UTM. It's not
    as hard as writing a C compiler in C and compiling it using an extant
    C compiler.

    Meanwhile, may be worth pointing out that almost everyone here
    will be using a UTM right /now/, as you read this. What do you think
    is executing your Thunderbird or whichever other mail agent / browser
    you are using? We no longer use the hard-wired programs that Turing
    and others in the 1930s to 1950s used when developing the theory of
    computing and the first computer languages. It must have seemed like
    a miracle when the first HLLs enabled us to write descriptions of our computations and have them executed on a computer. The very idea that
    you could have hundreds and thousands of programs stashed away and
    execute any of them, perhaps dozens concurrently, on one single machine conveniently stored in your home or even your pocket would have been
    pure fantasy. But the CPU [or near equivalent] in your computer can
    take any of those stored programs and run them with whatever files you
    supply as input, and even generate new executables from source code
    written in any convenient language. Some CPUs can even be switched
    from emulating [eg] a Mac to emulating a 386 or whatever. How U do
    you need your TMs to be? Of course, such UTMs are a tad more complex
    than the UTMs used as examples in CS courses.

    --
    Andy Walker, Nottingham.
    Andy's music pages: www.cuboid.me.uk/andy/Music
    Composer of the day: www.cuboid.me.uk/andy/Music/Composers/Chopin

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to wij on Fri May 16 16:33:12 2025
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
          D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that is to be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the result of applying the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to specify the
    exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM. >>>>> Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes when a UTM simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X.
    Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
        Note this is itself a computation, distinct from f of course
        but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation.

    There is no reason U(f) cannot be simulated by U.  U will have no knowledge that it is "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several things in one post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape would not be defined. Saying "UTM can simulate any TM" is misleading because no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"? A TM is /equipped/ with an
    infinite tape, but the /contents/ of that tape are not a part of that TM's definition.

    For example we could build a TM P that decides whether a number is prime. Given a number n, we
    convert n into the input tape representation of n, and run P with that tape as input.

    It's essentially no different for UTMs. Such a UTM certainly is a "complete TM", equipped with its
    own input tape. Of course we don't know what's on the input tape because nobody has said yet what
    computation we are asking it to simulate! [Similarly we don't know what's on P's input tape, until
    we know what n we want it to test for primeness.] Once you say what computation you want the UTM to
    simulate we can build a tape string to perform that particular simulation. That is the case
    /whatever/ computation we come up with, so it is simply the case [not misleading] that the UTM can
    simulate any computation.


    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to Andy Walker on Fri May 16 16:57:33 2025
    On 16/05/2025 12:22, Andy Walker wrote:
    On 16/05/2025 01:40, Mike Terry wrote:
    [...]
    [wij's] question "what is the source of such UTM?" seems to be asking
    to be pointed to some sample source code for a UTM?  I don't have
    any!  But I'm sure someone somewhere will have gone to all the
    trouble of coding an actual UTM, and will have made that available
    online somewhere.  Note that a UTM is a firstly a TM, but TMs can be
    described as text "source code" and someone could have made that
    available online.
    Perhaps someone else here knows of useful sources for this?

        Minsky's "Computation" has on its front cover [at least in the
    Open University edition] and inside, as Fig. 7.2.9 on p142, a complete
    UTM as a state-transition diagram.  ICBA to count [or to look for more details in the text], but it has ~20 states and uses ~10 symbols.  It
    would represent perhaps an hour's [routine] work to convert into the
    standard quintuples, or a similar amount of work to convert to C.  The
    text describes fully how an arbitrary TM, expressed as quintuples, and
    its input tape, should be represented on the UTM's tape.

    I found it on Amazon, and sure enough there on its front cover is the state transition diagram! It
    sounds like a great book, but realistically I've already got too many books in my reading list...
    Maybe I should stop following comp.theory. :)

    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Fri May 16 12:10:09 2025
    On 5/16/25 11:43 AM, olcott wrote:
    On 5/16/2025 2:33 AM, Mikko wrote:
    On 2025-05-15 20:50:34 +0000, olcott said:

    On 5/15/2025 2:57 PM, wij wrote:
    On Thu, 2025-05-15 at 11:47 -0500, olcott wrote:
    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls >>>>>>>>>>> itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a
    equivalent
    TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) >>>>>> that is to be simulated.  The scheme says how to turn the (TM + input >>>>>> tape) into a string of symbols that represent that computation.

    So to answer your question, the "source-code on its tape" is the
    result
    of applying the UTM's particular scheme to the combination (UTM,
    input
    tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you
    would need
    to specify the exact UTM being used, because every UTM will have a >>>>>> different answer to your question.


    Mike.


    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Sort of.

    If there was such a UTM then examining things
    like a termination analyzer would be too difficult
    because of the volume of details. Even moving a
    single value to a specific memory location can
    take many many steps.

    So, which part of POOH is "fully encoded UTM"

    A RASP machine
    https://en.wikipedia.org/wiki/Random-access_stored-program_machine
    is a much better fit for examining the details of any
    complex algorithm.

    The x86 language is essentially the same thing as a RASP
    machine for all computations that can be accomplished
    with the amount of memory that is available.

    Absolutely false. POOH is the example that rejected TM/RASP instead
    of C.

    In trying making P!=NP proof (may have defects, I just leave it
    there to improve)
    https://sourceforge.net/projects/cscall/files/MisFiles/PNP-proof-
    en.txt/download
    I feel TM would be very long and tedious, so I claimed that no
    *algorithm* can
    solve NPC (algorithmic) problems. (thanks to olcott, this proof was
    inspired in
    refuting POOH.)

    See also Spu in my recent post. TM is very low-level to solve many
    idea of problems.

    To be a computable function within a model of computation
    a sequence of the steps of a specific algorithm must be
    applied to (an often finite string) input to derive an output.
    https://en.wikipedia.org/wiki/Computable_function

    When computing the sum() function the steps of the algorithm
    of arithmetic must be applied to the inputs.

    *When computing the halt() function steps with a simulating*
    *termination analyzer the behavioral steps specified by the*
    *input must be simulated according to the computer language*
    *of this input*

    *I may be wrong yet it seems to me that*
    Computer science never knew these things before in that
    it never placed any limit on the type of algorithm that
    must be performed.

    I think that it was Ben that said that one of two
    functions that do nothing besides return true or false
    is correct on all of the counter-example inputs
    to the halting problem.

    When we require that a mapping be computed from an
    input, then this idea is rejected.


    You are excellent in quoting tautology to support your claims.


    Most people don't know that a mapping must be
    computed from the inputs, hence Ben's mistake.

    Most people don't even know what mappings are. Most people don't
    make mistakes just because they don't know what mappings are.

    Ben does not make mistakes just because most people don't know
    something that Ben does know.


    Ben was wrong when he said that there are a
    pair of computable functions such that one
    of them always gets the correct halt status
    decision. IGNORING THE INPUTS IT NOT ALLOWED


    Who says?

    suppose I am asked to create a program that computes the difference
    between a natural number and itself.

    int selfdiff(int x);

    Would it not be correct to just write:

    int selfdiff(int x) { return 0; }

    Since the difference between a number and itself is always 0.

    Just like a function that given two numbers, compute the sum of 2 + 3

    WHCH WAS THE PROBLEM YOU STATED, write a program to compute sum(2, 3)

    can be writen as int sum5(int x, int y) { return 5; }, as the input
    values are not needed to compute the result.

    The method used to reach the answer is irrelvent in computation theory,
    as long is it is a finite deterministic algorithm working on nothing but
    its defined input. If it can get the right answer ignoring some of its
    inputs, that is fine, and just shows that the mapping it is computing
    wasn't dependent on that input.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Fri May 16 21:34:47 2025
    Op 16.mei.2025 om 17:47 schreef olcott:
    On 5/16/2025 2:45 AM, Mikko wrote:
    On 2025-05-15 20:08:54 +0000, wij said:

    On Thu, 2025-05-15 at 14:15 -0500, olcott wrote:
    On 5/15/2025 1:49 PM, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which >>>>>>>>>>> calls itself):

    void D() {
         D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a
    equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input
    tape) that is to be simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of
    symbols that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the
    result of applying the UTM's
    particular scheme to the combination (UTM, input tape) that is to
    be simulated.

    If you're looking for the exact string symbols, obviously you
    would need to specify the exact
    UTM
    being used, because every UTM will have a different answer to your >>>>>> question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM. >>>>> Because you said "Every UTM ...", so what is the source of such UTM? >>>>>


    The TM description language is more accurately
    referred to as the TM specification language.

    A UTM is a hypothetical thing that is specified
    to have some source source-code that it operates
    on yet none of the details of this are ever
    fully elaborated.

    That is why I needed to use the x86 language
    as a fully specified proxy. With my x86utm
    operating system we make a 100% concrete
    simulating termination analyzer such that
    zero of the details are "abstracted away".

    It is the details that have been "abstracted away"
    by the abstractions that cause the conventional
    halting problem proofs to be insufficiently
    understood.

    Unfortunely, refuting HP suggests halting decider is a real thing.
    Proving by "abstracted away" the real part?

    In which way can a proof that a halting decider does not exist
    suggest that a halting decider is a real thing?

    The concept of halting decider is a real concept in the same sense
    as Arsitotle's concept of unicorn is a real concept but does that
    mean that a unicorn and a halting decider are real things?


    I have only refuted the standard proof.
    A halt decider HHH having a domain of DD and DDD
    correctly maps its inputs to the actual behavior
    that they actually specify.
    You didn't. The input specifies a halting program, but the programmer of
    HHH made it blind by programming a premature abort, so that it does not
    see the full behaviour that is specified in the input. In particular, it
    skips the part where the abort was coded that makes the program halt.
    That HHH is blind for a part of the specification, does not mean that
    the specification is not there.
    Apparently, Olcott does not know how to bring anything against this
    reasoning, either because he does not understand it, or because it
    disturbs his dreams too much. Therefore, he ignores it, and just repeat
    his claims again saying that nobody has refuted his proof.
    Please, face the facts, not your dreams. Come out of rebuttal mode and
    try to think.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Andy Walker@21:1/5 to All on Fri May 16 21:04:15 2025
    On 16/05/2025 16:57, Mike Terry wrote:
    [I wrote:]
         Minsky's "Computation" has on its front cover [at least in the
    Open University edition] and inside, as Fig. 7.2.9 on p142, a complete
    UTM as a state-transition diagram. [...]

    I found it on Amazon, and sure enough there on its front cover is
    the state transition diagram! It sounds like a great book, but
    realistically I've already got too many books in my reading list...

    It /is/ a great book. Get* it, and re-order your reading
    list to put it first. The only other CS book that I couldn't put
    down was the Algol 68 Revised Report.

    * Somewhat on the other hand, I see that it's $silly on Amazon
    and on Abe, so perhaps you should rather borrow it from a
    library. In the UK, it was going to be an Open University
    set book, with therefore guaranteed sales of many thousands,
    But then the OU pulled out, the book was remaindered, and I
    got a brand new copy for £tiny.

    --
    Andy Walker, Nottingham.
    Andy's music pages: www.cuboid.me.uk/andy/Music
    Composer of the day: www.cuboid.me.uk/andy/Music/Composers/Chopin

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Fri May 16 17:59:05 2025
    On 5/16/25 4:38 PM, olcott wrote:
    On 5/16/2025 3:04 PM, Andy Walker wrote:
    On 16/05/2025 16:57, Mike Terry wrote:
    [I wrote:]
         Minsky's "Computation" has on its front cover [at least in the >>>> Open University edition] and inside, as Fig. 7.2.9 on p142, a complete >>>> UTM as a state-transition diagram. [...]

    I found it on Amazon, and sure enough there on its front cover is
    the state transition diagram!  It sounds like a great book, but
    realistically I've already got too many books in my reading list...

         It /is/ a great book.  Get* it, and re-order your reading
    list to put it first.  The only other CS book that I couldn't put
    down was the Algol 68 Revised Report.

       * Somewhat on the other hand, I see that it's $silly on Amazon
         and on Abe, so perhaps you should rather borrow it from a
         library.  In the UK, it was going to be an Open University
         set book, with therefore guaranteed sales of many thousands,
         But then the OU pulled out, the book was remaindered, and I
         got a brand new copy for £tiny.


    This repository contains any material needed to run Marvin Minsky's
    Universal Turing Machine in Martin Ugarte's "Turing Machine Simulator"
    and to demonstrate its vulnerability as described by Pontus Johnson https://github.com/rozek/Universal-Turing-Machine


    Desn't sound like a "vulnerability" to me. It sounds like there is a
    slight different in defintion of Turing Machine between the Simulator
    and the UTM, the Simulator being defined to only start at the beginning
    of the tape, while the UTM was defined as strarting the tape at a
    specified location, (both valid variants of the definition)

    The vulerability seems to be that to convert an input based on the
    second to an input needed for the first you need to add a preamble to do
    the converstion, and that preamble could be "misdefined" to do something different.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to wij on Fri May 16 23:51:26 2025
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
           D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that is to be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result of applying the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to specify the
    exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM. >>>>>>> Because you said "Every UTM ...", so what is the source of such UTM? >>>>>>
    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes when a UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X.
    Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
         Note this is itself a computation, distinct from f of course
         but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation.

    There is no reason U(f) cannot be simulated by U.  U will have no knowledge that it is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several things in one post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM is /equipped/ with an
    infinite tape, but the /contents/ of that tape are not a part of that TM's definition.

    For example we could build a TM P that decides whether a number is prime.  Given a number n, we
    convert n into the input tape representation of n, and run P with that tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is a "complete TM", equipped with its
    own input tape.  Of course we don't know what's on the input tape because nobody has said yet what
    computation we are asking it to simulate!  [Similarly we don't know what's on P's input tape, until
    we know what n we want it to test for primeness.]  Once you say what computation you want the UTM to
    simulate we can build a tape string to perform that particular simulation.  That is the case
    /whatever/ computation we come up with, so it is simply the case [not misleading] that the UTM can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"?


    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Fri May 16 20:32:00 2025
    On 5/16/25 5:40 PM, olcott wrote:
    On 5/16/2025 4:21 PM, wij wrote:
    On Fri, 2025-05-16 at 15:38 -0500, olcott wrote:
    On 5/16/2025 3:04 PM, Andy Walker wrote:
    On 16/05/2025 16:57, Mike Terry wrote:
    [I wrote:]
          Minsky's "Computation" has on its front cover [at least in the
    Open University edition] and inside, as Fig. 7.2.9 on p142, a
    complete
    UTM as a state-transition diagram. [...]

    I found it on Amazon, and sure enough there on its front cover is
    the state transition diagram!  It sounds like a great book, but
    realistically I've already got too many books in my reading list...

          It /is/ a great book.  Get* it, and re-order your reading >>>> list to put it first.  The only other CS book that I couldn't put
    down was the Algol 68 Revised Report.

        * Somewhat on the other hand, I see that it's $silly on Amazon
          and on Abe, so perhaps you should rather borrow it from a
          library.  In the UK, it was going to be an Open University >>>>       set book, with therefore guaranteed sales of many thousands, >>>>       But then the OU pulled out, the book was remaindered, and I >>>>       got a brand new copy for £tiny.


    This repository contains any material needed to run Marvin Minsky's
    Universal Turing Machine in Martin Ugarte's "Turing Machine Simulator"
    and to demonstrate its vulnerability as described by Pontus Johnson
    https://github.com/rozek/Universal-Turing-Machine


    Thanks for the info. that reminds me of your famous words "read by rote"


    Misquote. "Learned by rote" with zero depth of actual understanding.
    Not able to do much more than parrot quotes from textbooks.



    And all you can do is parrot by rote phrases that you don't understand
    what they mean.

    The fact that you have admitted that you like to change the fundamental definitions means you admit that we can't trust anything you say to
    actually have the right meaning in the system.

    That might be ok if you were actually working on a new system and
    stopped talking about what it does to the existing system, but since you
    don't actually care about the theory, just what it does to your logic
    ideas, that doesn't actually meet your goals.

    So, you just need to try to live a life of lying and hope people don't
    notice, but we have gone past that and your theory is just sunk to the
    bottom of that lake of fire and burnt up.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sat May 17 11:58:13 2025
    On 2025-05-16 15:43:02 +0000, olcott said:

    On 5/16/2025 2:33 AM, Mikko wrote:
    On 2025-05-15 20:50:34 +0000, olcott said:

    On 5/15/2025 2:57 PM, wij wrote:
    On Thu, 2025-05-15 at 11:47 -0500, olcott wrote:
    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls >>>>>>>>>>> itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent >>>>>>>>> TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) >>>>>> that is to be simulated.  The scheme says how to turn the (TM + input >>>>>> tape) into a string of symbols that represent that computation.

    So to answer your question, the "source-code on its tape" is the result >>>>>> of applying the UTM's particular scheme to the combination (UTM, input >>>>>> tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need >>>>>> to specify the exact UTM being used, because every UTM will have a >>>>>> different answer to your question.


    Mike.


    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Sort of.

    If there was such a UTM then examining things
    like a termination analyzer would be too difficult
    because of the volume of details. Even moving a
    single value to a specific memory location can
    take many many steps.

    So, which part of POOH is "fully encoded UTM"

    A RASP machine
    https://en.wikipedia.org/wiki/Random-access_stored-program_machine
    is a much better fit for examining the details of any
    complex algorithm.

    The x86 language is essentially the same thing as a RASP
    machine for all computations that can be accomplished
    with the amount of memory that is available.

    Absolutely false. POOH is the example that rejected TM/RASP instead of C. >>>>
    In trying making P!=NP proof (may have defects, I just leave it there
    to improve)
    https://sourceforge.net/projects/cscall/files/MisFiles/PNP-proof-
    en.txt/download
    I feel TM would be very long and tedious, so I claimed that no *algorithm* can
    solve NPC (algorithmic) problems. (thanks to olcott, this proof was inspired in
    refuting POOH.)

    See also Spu in my recent post. TM is very low-level to solve many idea >>>> of problems.

    To be a computable function within a model of computation
    a sequence of the steps of a specific algorithm must be
    applied to (an often finite string) input to derive an output.
    https://en.wikipedia.org/wiki/Computable_function

    When computing the sum() function the steps of the algorithm
    of arithmetic must be applied to the inputs.

    *When computing the halt() function steps with a simulating*
    *termination analyzer the behavioral steps specified by the*
    *input must be simulated according to the computer language*
    *of this input*

    *I may be wrong yet it seems to me that*
    Computer science never knew these things before in that
    it never placed any limit on the type of algorithm that
    must be performed.

    I think that it was Ben that said that one of two
    functions that do nothing besides return true or false
    is correct on all of the counter-example inputs
    to the halting problem.

    When we require that a mapping be computed from an
    input, then this idea is rejected.


    You are excellent in quoting tautology to support your claims.


    Most people don't know that a mapping must be
    computed from the inputs, hence Ben's mistake.

    Most people don't even know what mappings are. Most people don't
    make mistakes just because they don't know what mappings are.

    Ben does not make mistakes just because most people don't know
    something that Ben does know.

    Ben was wrong when he said that there are a
    pair of computable functions such that one
    of them always gets the correct halt status
    decision. IGNORING THE INPUTS IT NOT ALLOWED

    No, Ben was not wrong about that. The meaning of the word function
    does allow ignoring a part or all of the inputs.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sat May 17 12:02:56 2025
    On 2025-05-16 15:44:49 +0000, olcott said:

    On 5/16/2025 2:40 AM, Mikko wrote:
    On 2025-05-15 19:15:32 +0000, olcott said:

    On 5/15/2025 1:49 PM, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) >>>>> that is to be simulated.  The
    scheme says how to turn the (TM + input tape) into a string of symbols >>>>> that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the result >>>>> of applying the UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would
    need to specify the exact UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM. >>>> Because you said "Every UTM ...", so what is the source of such UTM?

    The TM description language is more accurately
    referred to as the TM specification language.

    Not really. The terms "description language" and "specification language"
    refer to differenct uses of the languages, not ingerently different
    languages. A specification may omit details that a description must
    not omit but the choice of such details must a choice of the specifier
    and not forced by the language.

    The term "specification" typically means all of the relevant details.

    What is relevant depends on purpose.

    The term "description" typically means some of the details.

    Typically the relevant ones.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sat May 17 09:02:16 2025
    On 5/16/25 11:12 PM, olcott wrote:
    On 5/16/2025 10:01 PM, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function >>>>>>>>>>>>>>>> (which calls itself):

    void D() {
             D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a >>>>>>>>>>>>>> equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & >>>>>>>>>>> input tape) that is to be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string >>>>>>>>>>> of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is >>>>>>>>>>> the result of applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that >>>>>>>>>>> is to be simulated.

    If you're looking for the exact string symbols, obviously you >>>>>>>>>>> would need to specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to >>>>>>>>>>> your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing >>>>>>>>>> such a UTM.
    Because you said "Every UTM ...", so what is the source of >>>>>>>>>> such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing
    magical changes when a UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape
    contents of the
    encoding of a TM. And, U(X) should function the same like X.
    Given instance U(U(f)), it should function like f from the above >>>>>>>> definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
           Note this is itself a computation, distinct from f of course
           but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation.

    There is no reason U(f) cannot be simulated by U.  U will have no >>>>>>> knowledge that it is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean
    several things in one post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents
    of the tape
    would not be defined. Saying "UTM can simulate any TM" is
    misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?
    A TM is /equipped/ with an
    infinite tape, but the /contents/ of that tape are not a part of
    that TM's definition.

    For example we could build a TM P that decides whether a number is
    prime.  Given a number n, we
    convert n into the input tape representation of n, and run P with
    that tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is a
    "complete TM", equipped with
    its
    own input tape.  Of course we don't know what's on the input tape
    because nobody has said yet
    what
    computation we are asking it to simulate!  [Similarly we don't know >>>>> what's on P's input tape,
    until
    we know what n we want it to test for primeness.]  Once you say
    what computation you want the
    UTM to
    simulate we can build a tape string to perform that particular
    simulation.  That is the case
    /whatever/ computation we come up with, so it is simply the case
    [not misleading] that the UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of
    the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be
    defined.

    I was considering also expressing the idea that undecidable is caused
    by 'semantic
    self reference'.
    Ex1: The truth value of "This sentence is true" is also undecidable.


    You have to know what a truth-bearer is to understand
    that the Liar Paradox has the same truth value as this
    sentence: "What time is it?" I have been working on
    that for 22 years too.


    Yes, you need to know that, but it seems you don't.

    You can't ask a Halt Decider about something that isn't a program, that includes all the code it is using.

    Thus, your argument fails on that category error, since you stipulate
    that your DDD isn't a program, and doesn't contain the code of the HHH
    that it calls.

    Sorry, you sunk your own argument when you made it clear where one of
    your fundamental lies was. Lies can't be used in a proof.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to wij on Sat May 17 15:45:24 2025
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
            D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that is to be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result of applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM? >>>>>>>>
    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes when a UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X.
    Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
          Note this is itself a computation, distinct from f of course >>>>>>       but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation.

    There is no reason U(f) cannot be simulated by U.  U will have no knowledge that it is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several things in one post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM is /equipped/ with an
    infinite tape, but the /contents/ of that tape are not a part of that TM's definition.

    For example we could build a TM P that decides whether a number is prime.  Given a number n, we
    convert n into the input tape representation of n, and run P with that tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is a "complete TM", equipped with
    its
    own input tape.  Of course we don't know what's on the input tape because nobody has said yet
    what
    computation we are asking it to simulate!  [Similarly we don't know what's on P's input tape,
    until
    we know what n we want it to test for primeness.]  Once you say what computation you want the
    UTM to
    simulate we can build a tape string to perform that particular simulation.  That is the case
    /whatever/ computation we come up with, so it is simply the case [not misleading] that the UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be defined.

    Eh? The f was something /you/ introduced! You said it represents some computation which UTM U
    simulates. How can f suddenly become undefined after you defined it?

    Do you mean that f would not be on the input tape for (outer)U? That's not the case at all. In
    U(f), the input tape for U contains a representation of f. When (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of computation U(f), which internally
    contains the original representation of f. The f is still there and equally well defined in U(U(f)).

    I think you would benefit from being more explicit and generally more careful in your notation!

    Using notation <P,I> to mean U's input tape representation of "TM P, running with input I":

    Your U(f) is U(<fp,fi>) // fp = TM(f), fi=InputTape(f)
    Your U(U(f)) is U((<U,<fp,fi>>)

    f is still there! It has not become "undefined".

    You gloss over the details and become confused - just think it through step by step.


    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mike Terry@21:1/5 to wij on Sat May 17 20:46:23 2025
    On 17/05/2025 20:26, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls
    itself):

    void D() {
             D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes when a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>> Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
           Note this is itself a computation, distinct from f of course >>>>>>>>        but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation.

    There is no reason U(f) cannot be simulated by U.  U will have no knowledge that it is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several things in one post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM is /equipped/ with
    an
    infinite tape, but the /contents/ of that tape are not a part of that TM's definition.

    For example we could build a TM P that decides whether a number is prime.  Given a number n,
    we
    convert n into the input tape representation of n, and run P with that tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is a "complete TM", equipped
    with
    its
    own input tape.  Of course we don't know what's on the input tape because nobody has said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't know what's on P's input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say what computation you want
    the
    UTM to
    simulate we can build a tape string to perform that particular simulation.  That is the case
    /whatever/ computation we come up with, so it is simply the case [not misleading] that the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"? >>>>

    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be defined. >>
    Eh?  The f was something /you/ introduced!  You said it represents some computation which UTM U
    simulates.  How can f suddenly become undefined after you defined it?

    Do you mean that f would not be on the input tape for (outer)U?  That's not the case at all.  In
    U(f), the input tape for U contains a representation of f.  When (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of computation U(f), which internally
    contains the original representation of f.  The f is still there and equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally more careful in your notation!

    Using notation <P,I> to mean U's input tape representation of "TM P, running with input I":

        Your U(f)      is U(<fp,fi>) // fp = TM(f), fi=InputTape(f) >>     Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it through step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly attacking that a variable cannot be undefined because it is there. And said I should not gloss over the detail and should think it through step by step.
    No idea what you are talking about.


    Ok we definitely have a two way communication problem! :)

    I'll just let you get on with things then... Good luck questing your UTM. Hopefully you can find
    out what is source of it, and locate your undefined tape contents, including the f bit!


    Mike.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sat May 17 16:07:14 2025
    On 5/17/25 3:55 PM, olcott wrote:
    On 5/17/2025 2:46 PM, Mike Terry wrote:
    On 17/05/2025 20:26, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function >>>>>>>>>>>>>>>>>>> (which calls
    itself):

    void D() {
              D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be >>>>>>>>>>>>>>>>> a equivalent TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & >>>>>>>>>>>>>> input tape) that is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a >>>>>>>>>>>>>> string of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" >>>>>>>>>>>>>> is the result of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) >>>>>>>>>>>>>> that is to be simulated.

    If you're looking for the exact string symbols, obviously >>>>>>>>>>>>>> you would need to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer >>>>>>>>>>>>>> to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing >>>>>>>>>>>>> such a UTM.
    Because you said "Every UTM ...", so what is the source of >>>>>>>>>>>>> such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing >>>>>>>>>>>> magical changes when a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape >>>>>>>>>>> contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>> Given instance U(U(f)), it should function like f from the >>>>>>>>>>> above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
            Note this is itself a computation, distinct from f of >>>>>>>>>> course
            but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will have >>>>>>>>>> no knowledge that it is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean >>>>>>>>> several things in one post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the
    contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is
    misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be
    defined"?  A TM is /equipped/ with
    an
    infinite tape, but the /contents/ of that tape are not a part of >>>>>>>> that TM's definition.

    For example we could build a TM P that decides whether a number >>>>>>>> is prime.  Given a number n,
    we
    convert n into the input tape representation of n, and run P
    with that tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is >>>>>>>> a "complete TM", equipped
    with
    its
    own input tape.  Of course we don't know what's on the input
    tape because nobody has said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't >>>>>>>> know what's on P's input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say >>>>>>>> what computation you want
    the
    UTM to
    simulate we can build a tape string to perform that particular >>>>>>>> simulation.  That is the case
    /whatever/ computation we come up with, so it is simply the case >>>>>>>> [not misleading] that the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents >>>>>>> of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be
    defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be
    defined.

    Eh?  The f was something /you/ introduced!  You said it represents
    some computation which UTM U
    simulates.  How can f suddenly become undefined after you defined it? >>>>
    Do you mean that f would not be on the input tape for (outer)U?
    That's not the case at all.  In
    U(f), the input tape for U contains a representation of f.  When
    (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of
    computation U(f), which internally
    contains the original representation of f.  The f is still there and
    equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally
    more careful in your notation!

    Using notation <P,I> to mean U's input tape representation of "TM P,
    running with input I":

         Your U(f)      is U(<fp,fi>)        // fp = TM(f), fi=InputTape(f)
         Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it
    through step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly
    attacking
    that a variable cannot be undefined because it is there. And said I
    should
    not gloss over the detail and should think it through step by step.
    No idea what you are talking about.


    Ok we definitely have a two way communication problem!  :)

    I'll just let you get on with things then...  Good luck questing your
    UTM.  Hopefully you can find out what is source of it, and locate your
    undefined tape contents, including the f bit!


    Mike.


    That is the problem with imaginary abstractions.
    No one can look at the imaginary tape and see that
    it is empty.


    The issue is that it isn't an imaginary abstraction. IF anything the
    problem is that are too many ways to implement it.

    Of course, trying to understand something of its complexity without
    first understanding the basic theory is a good way to confuse yourself.

    The idea of how to actually implememt a UTM is a fairly advanced
    concept, sort of like how to program a full emulator for a complecated
    CPU, (Note, you needed to find an existing implementation to try to
    tweak into what you wanted). SInce you flunked out of your Turing
    Machine classes a few years ago, you are not much of an expert on the topic.

    You showed you did not understand the concept of "representation" and
    how we can map somewhat abstract concepts into finite strings of a
    specified alphabet in a defined language. (or even what those terms mean).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Sun May 18 11:20:27 2025
    On 2025-05-17 19:39:24 +0000, olcott said:

    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls
    itself):

    void D() {
             D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape)
    that is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would need to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing magical >>>>>>>>>>> changes when a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>> Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
           Note this is itself a computation, distinct from f of course
           but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will have no >>>>>>>>> knowledge that it is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several >>>>>>>> things in one post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM
    is /equipped/ with
    an
    infinite tape, but the /contents/ of that tape are not a part of that >>>>>>> TM's definition.

    For example we could build a TM P that decides whether a number is >>>>>>> prime.  Given a number n,
    we
    convert n into the input tape representation of n, and run P with that >>>>>>> tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is a >>>>>>> "complete TM", equipped
    with
    its
    own input tape.  Of course we don't know what's on the input tape >>>>>>> because nobody has said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't know >>>>>>> what's on P's input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say what >>>>>>> computation you want
    the
    UTM to
    simulate we can build a tape string to perform that particular
    simulation.  That is the case
    /whatever/ computation we come up with, so it is simply the case [not >>>>>>> misleading] that the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"? >>>>>

    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be defined. >>>
    Eh?  The f was something /you/ introduced!  You said it represents some >>> computation which UTM U
    simulates.  How can f suddenly become undefined after you defined it?

    Do you mean that f would not be on the input tape for (outer)U?  That's >>> not the case at all.  In
    U(f), the input tape for U contains a representation of f.  When
    (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of computation
    U(f), which internally
    contains the original representation of f.  The f is still there and
    equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally more
    careful in your notation!

    Using notation <P,I> to mean U's input tape representation of "TM P,
    running with input I":

        Your U(f)      is U(<fp,fi>) // fp = TM(f), fi=InputTape(f)
        Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it through
    step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly attacking >> that a variable cannot be undefined because it is there. And said I should >> not gloss over the detail and should think it through step by step.
    No idea what you are talking about.

    U(<U>) is the most conventional notation
    for U simulating its own source-code.

    Conventionally <U> does not mean the source code of U. It means some
    coding of U, usually a translation. The source code is usually not
    in the required language. For eample, your HHH cannot use the source
    code of your DDD but a translation of it, and there is a reason why
    you have designed it that way.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?B?QW5kcsOpIEcuIElzYWFr?=@21:1/5 to olcott on Sun May 18 15:58:33 2025
    On 2025-05-18 14:57, olcott wrote:

    TM description is a misnomer in that they never
    merely describe some of the details of the TM
    (as all mere descriptions always do).

    Instead they specify ALL of the details, thus have
    always actually been a TM specification language more
    commonly understood as the source-code for a TM.

    You seem to be getting bogged down in a relatively inconsequential terminological issue here which contributes nothing to the overall debate.

    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.

    When people talk about passing a UTM a description of a TM, it is
    understood that this refers to a *complete* description rather than a
    partial one.

    If you prefer the term 'specification', you're free to use it, but
    there's no sense in which 'description' is a misnomer.

    André


    --
    To email remove 'invalid' & replace 'gm' with well known Google mail
    service.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sun May 18 17:45:07 2025
    On 5/18/25 4:57 PM, olcott wrote:
    On 5/18/2025 3:35 PM, wij wrote:
    On Sat, 2025-05-17 at 14:39 -0500, olcott wrote:
    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function >>>>>>>>>>>>>>>>>>>> (which calls
    itself):

    void D() {
               D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must >>>>>>>>>>>>>>>>>> be a equivalent
    TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & >>>>>>>>>>>>>>> input tape) that
    is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a >>>>>>>>>>>>>>> string of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" >>>>>>>>>>>>>>> is the result of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) >>>>>>>>>>>>>>> that is to be
    simulated.

    If you're looking for the exact string symbols, obviously >>>>>>>>>>>>>>> you would need to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different >>>>>>>>>>>>>>> answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing >>>>>>>>>>>>>> such a UTM.
    Because you said "Every UTM ...", so what is the source of >>>>>>>>>>>>>> such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing >>>>>>>>>>>>> magical changes when
    a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape >>>>>>>>>>>> contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>>> Given instance U(U(f)), it should function like f from the >>>>>>>>>>>> above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
             Note this is itself a computation, distinct from f >>>>>>>>>>> of course
             but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will >>>>>>>>>>> have no knowledge that it
    is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean >>>>>>>>>> several things in one
    post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the
    contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is
    misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be
    defined"?  A TM is /equipped/
    with
    an
    infinite tape, but the /contents/ of that tape are not a part >>>>>>>>> of that TM's definition.

    For example we could build a TM P that decides whether a number >>>>>>>>> is prime.  Given a
    number n,
    we
    convert n into the input tape representation of n, and run P >>>>>>>>> with that tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly >>>>>>>>> is a "complete TM",
    equipped
    with
    its
    own input tape.  Of course we don't know what's on the input >>>>>>>>> tape because nobody has
    said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't >>>>>>>>> know what's on P's input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say >>>>>>>>> what computation you
    want
    the
    UTM to
    simulate we can build a tape string to perform that particular >>>>>>>>> simulation.  That is the
    case
    /whatever/ computation we come up with, so it is simply the
    case [not misleading] that
    the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents >>>>>>>> of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be
    defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be
    defined.

    Eh?  The f was something /you/ introduced!  You said it represents >>>>> some computation which UTM U
    simulates.  How can f suddenly become undefined after you defined it? >>>>>
    Do you mean that f would not be on the input tape for (outer)U?
    That's not the case at all.  In
    U(f), the input tape for U contains a representation of f.  When
    (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of
    computation U(f), which internally
    contains the original representation of f.  The f is still there
    and equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally
    more careful in your notation!

    Using notation <P,I> to mean U's input tape representation of "TM
    P, running with input I":

          Your U(f)      is U(<fp,fi>)        // fp = TM(f), >>>>> fi=InputTape(f)
          Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it
    through step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly
    attacking
    that a variable cannot be undefined because it is there. And said I
    should
    not gloss over the detail and should think it through step by step.
    No idea what you are talking about.



    U(<U>)    is the most conventional notation

    U is not a complete TM. U(<U>) is worst, also not a TM.


    It is stipulated that U is a UTM that
    has its own source-code as its input.

    The problem is that


    TM description is a misnomer in that they never
    merely describe some of the details of the TM
    (as all mere descriptions always do).

    Sure they can, the "description" just needs to completely represent the algorithm to a detail enough to specify exactly what the desription
    represents. Yes, it can't be just a generic description, but description
    can be uses


    Instead they specify ALL of the details, thus have
    always actually been a TM specification language more
    commonly understood as the source-code for a TM.


    No, since the "source code TM Specification language" for a Turing
    Machihe is a mathematical notation that needs to be put through a representation step to become what you are thinking of as "source code".

    The Specification language for a Turing Machine is first an enumeration
    of the allowed symbol on the tape, and the states used by the Turing
    Machine (if not defined to be assumed from the next step), and then a
    listing of a series of tuples of input-state and tape-symbole and their resultant next-state, and tape-operation (normally new-tape-symbol, plus tape-movement command). "Final States" are either explicitly listed (and
    these will have not entry in the above listing, as they can't go
    anywhere) or are presumed as a missing entry in the current-state,
    tape-symbol listing (or perhaps all combinations are listed with some
    listed as FINAL instead of a tape-motion operation), and lastly many
    version of the system include the initial-tape contents (and perhaps the starting position) as part of the machine, while some others call just
    that algoritmic part as the Turing Machine that needs a input tape to
    run it.

    If we require an input to be a Turing Machine, then since just U isn't a
    Turing Machine, <U> isn't the description of a Turing Machine either, so
    can't be the full input to validly give to U.

    Note, the version of the Halting Problem described by Linz uses the term
    Turing Machine to refer to just that algorithmic part,

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sun May 18 19:19:55 2025
    On 5/18/25 6:08 PM, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:
    On 2025-05-18 14:57, olcott wrote:

    TM description is a misnomer in that they never
    merely describe some of the details of the TM
    (as all mere descriptions always do).

    Instead they specify ALL of the details, thus have
    always actually been a TM specification language more
    commonly understood as the source-code for a TM.

    You seem to be getting bogged down in a relatively inconsequential
    terminological issue here which contributes nothing to the overall
    debate.


    It is not inconsequential. It is the misnomer that an
    input is merely described that enables people to believe
    that DDD simulated by HHH must have the same behavior
    as DDD simulated by HHH1 even when they SPECIFY different
    behavior.

    No, it just says you don't understand the Term-of-Art meaning of the
    word "Described" as used here.


    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.

    "Typically", but not in this case.

    That is the danger of trying to use "common" meanings for Terms-of-Art.

    One key point is that in this case, "Description" allows for the use of
    "Higher Level Terms" perhaps the "Turing Machine Description Language"
    that the decider/UTM uses includes short-cuts to call up a macro-library
    of predefined operations that might have been encoded in the actual
    program, but described with the higher level description. (The key is
    such higher level descriptions must reflect a specific set of
    instrucitosn that are equivalent to how the actual machine was coded.


    When people talk about passing a UTM a description of a TM, it is
    understood that this refers to a *complete* description rather than a
    partial one.


    If this was true then they would understand that
    the input to HHH(DDD) specifies behavior that is
    not the same behavior as DDD().

    Then the description is incorrect.

    As the requirements are that the description specify that program, and
    thus the behavior of that program.

    This is your problme with you non-program input, the description of it
    doesn't actually fully describe the behavior of the call to HHH. Saying
    it calls whatever is at that location is *NOT* a sufficient description,
    as that doesn't specify what that actually does.


    _DDD()
    [00002172] 55         push ebp      ; housekeeping
    [00002173] 8bec       mov ebp,esp   ; housekeeping
    [00002175] 6872210000 push 00002172 ; push DDD
    [0000217a] e853f4ffff call 000015d2 ; call HHH(DDD)
    [0000217f] 83c404     add esp,+04
    [00002182] 5d         pop ebp
    [00002183] c3         ret
    Size in bytes:(0018) [00002183]

    They would understand that no matter how many
    instructions of DDD are emulated by HHH according
    to the rules of the x86 language that this
    correctly emulated DDD cannot possibly halt.

    But "simulated by HHH" is not the criteria of a description, or more
    precisely, HHH must define a way to describe as an input the exact
    behavior of every program, including the DDD that is based on that HHH,
    and that is what needed to have been given to that HHH. So the
    "behavior" of that input must be the behavior of the PROGRAM DDD when
    run (and that program by the proof calls the HHH that is claimed to be correctly answering).

    All you are doing is admitting that your setup is just not meeting the requirments, and all your claims are thus just pathoolgoical lies.


    If you prefer the term 'specification', you're free to use it, but
    there's no sense in which 'description' is a misnomer.

    André





    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Sun May 18 19:09:00 2025
    On 5/18/25 6:09 PM, olcott wrote:
    On 5/18/2025 4:46 PM, wij wrote:
    On Sun, 2025-05-18 at 15:57 -0500, olcott wrote:
    On 5/18/2025 3:35 PM, wij wrote:
    On Sat, 2025-05-17 at 14:39 -0500, olcott wrote:
    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote: >>>>>>>>>>>>>>> On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function >>>>>>>>>>>>>>>>>>>>>> (which
    calls
    itself):

    void D() {
                D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must >>>>>>>>>>>>>>>>>>>> be a
    equivalent
    TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>>>>
    What is exactly the source-code on its tape? >>>>>>>>>>>>>>>>>>

    Every UTM has some scheme which can be applied to a (TM >>>>>>>>>>>>>>>>> & input tape)
    that
    is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a >>>>>>>>>>>>>>>>> string of symbols
    that
    represent
    that
    computation.

    So to answer your question, the "source-code on its >>>>>>>>>>>>>>>>> tape" is the result
    of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) >>>>>>>>>>>>>>>>> that is to be
    simulated.

    If you're looking for the exact string symbols, >>>>>>>>>>>>>>>>> obviously you would need
    to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different >>>>>>>>>>>>>>>>> answer to your
    question.


    Mike.

    People used to say UTM can simulate all TM. I was >>>>>>>>>>>>>>>> questing such a UTM.
    Because you said "Every UTM ...", so what is the source >>>>>>>>>>>>>>>> of such UTM?

    Yes, a UTM can simulate any TM including itself. >>>>>>>>>>>>>>> (Nothing magical changes
    when
    a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the >>>>>>>>>>>>>> tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>>>>> Given instance U(U(f)), it should function like f from the >>>>>>>>>>>>>> above definition.
    But, U(U(f)) would fall into a 'self-reference' trap. >>>>>>>>>>>>>
    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
              Note this is itself a computation, distinct from
    f of course
              but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will >>>>>>>>>>>>> have no knowledge that
    it
    is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean >>>>>>>>>>>> several things in one
    post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the >>>>>>>>>>>> contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is >>>>>>>>>>>> misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be
    defined"?  A TM is
    /equipped/
    with
    an
    infinite tape, but the /contents/ of that tape are not a part >>>>>>>>>>> of that TM's
    definition.

    For example we could build a TM P that decides whether a >>>>>>>>>>> number is prime.  Given a
    number n,
    we
    convert n into the input tape representation of n, and run P >>>>>>>>>>> with that tape as
    input.

    It's essentially no different for UTMs.  Such a UTM certainly >>>>>>>>>>> is a "complete TM",
    equipped
    with
    its
    own input tape.  Of course we don't know what's on the input >>>>>>>>>>> tape because nobody has
    said
    yet
    what
    computation we are asking it to simulate!  [Similarly we >>>>>>>>>>> don't know what's on P's
    input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you >>>>>>>>>>> say what computation you
    want
    the
    UTM to
    simulate we can build a tape string to perform that
    particular simulation.  That is
    the
    case
    /whatever/ computation we come up with, so it is simply the >>>>>>>>>>> case [not misleading]
    that
    the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the
    contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be >>>>>>>>> defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not >>>>>>>> be defined.

    Eh?  The f was something /you/ introduced!  You said it
    represents some computation which
    UTM U
    simulates.  How can f suddenly become undefined after you defined >>>>>>> it?

    Do you mean that f would not be on the input tape for (outer)U?
    That's not the case at
    all.  In
    U(f), the input tape for U contains a representation of f.  When >>>>>>> (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of
    computation U(f), which
    internally
    contains the original representation of f.  The f is still there >>>>>>> and equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally >>>>>>> more careful in your
    notation!

    Using notation <P,I> to mean U's input tape representation of "TM >>>>>>> P, running with input I":

           Your U(f)      is U(<fp,fi>)        // fp = TM(f),
    fi=InputTape(f)
           Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it
    through step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly
    attacking
    that a variable cannot be undefined because it is there. And said
    I should
    not gloss over the detail and should think it through step by step. >>>>>> No idea what you are talking about.



    U(<U>)    is the most conventional notation

    U is not a complete TM. U(<U>) is worst, also not a TM.


    It is stipulated that U is a UTM that
    has its own source-code as its input.

    UTM is not a complete TM.

    Textbooks define a UTM as a complete TM.


    As I pointed out, there are two definitions of what a Turing Macine is.

    It can be just the algorithm part, or the combination of the Algorithm
    and Input.

    In either case

    "U <U>" isn't a valid computation, as in the TM is just tha algoritm
    case, where <U> is a valid string for the representation of the TM, a
    UTM needs as its input the combination of the representation of the
    input program and the representation of its input (if it takes any), so,
    since the program is a UTM, and that needs an input, you need to add it.

    This causes the problem of simulating a UTM with a copy of itself blow
    up, as you keep needing to add more inputs for every representaiton of a
    UTM added to the tape.

    That is why H^ is defined to take just one piece of input, the
    representation of a program (which will be of itself) and it duplicates
    that to pass it to the decider, which needs a program and its input.

    Thus H^ <H^> -> H <H^> <H^> which decides on H^ <H^> which is where we
    started.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?B?QW5kcsOpIEcuIElzYWFr?=@21:1/5 to olcott on Sun May 18 21:21:36 2025
    On 2025-05-18 16:08, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:

    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.


    I don't think you'll find that most people will agree with this. That
    might be your usage.

    The problem is that 'specification' has already been used in much of
    this discussion to mean something else. A TM's specification outlines
    what it is that that TM is supposed to do without going into the details
    of how it actually does it.

    For example, the specification of a Parity Decider would be a TM takes a representation of a natural number as its initial tape content and
    accepts it only if it is even.

    The description of that machine, on the other hand, would describe what
    the alphabet of this machine is, what it's state transitions are, etc.
    i.e. it would give all the information necessary to actually construct
    the machine.

    André

    --
    To email remove 'invalid' & replace 'gm' with well known Google mail
    service.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Mon May 19 09:54:44 2025
    Op 19.mei.2025 om 06:07 schreef olcott:
    On 5/18/2025 10:21 PM, André G. Isaak wrote:
    On 2025-05-18 16:08, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:

    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.


    I don't think you'll find that most people will agree with this. That
    might be your usage.

    The problem is that 'specification' has already been used in much of
    this discussion to mean something else. A TM's specification outlines
    what it is that that TM is supposed to do without going into the
    details of how it actually does it.


    When you refer to the spec of an algorithm you
    are correct. When you refer to the every single
    step of the exact behavior that a finite string
    specified you are wrong.

    For example, the specification of a Parity Decider would be a TM takes
    a representation of a natural number as its initial tape content and
    accepts it only if it is even.

    The description of that machine, on the other hand, would describe
    what the alphabet of this machine is, what it's state transitions are,
    etc. i.e. it would give all the information necessary to actually
    construct the machine.

    André


    I already know how TM machine descriptions actually work.

    DDD simulated by HHH1 has the exact same
    sequence of steps as the directly executed DDD().

    People here think that when DDD is simulated by
    the same simulator that it calls (thus causing
    recursive simulation) that DDD must have the same
    behavior as DDD simulated by HHH1 that DDD does
    not call.

    _DDD()
    [00002172] 55         push ebp      ; housekeeping
    [00002173] 8bec       mov ebp,esp   ; housekeeping
    [00002175] 6872210000 push 00002172 ; push DDD
    [0000217a] e853f4ffff call 000015d2 ; call HHH(DDD)
    [0000217f] 83c404     add esp,+04
    [00002182] 5d         pop ebp
    [00002183] c3         ret
    Size in bytes:(0018) [00002183]

    There is no way that DDD simulated by any HHH can
    possibly reach its "ret" instruction and halt. People
    have consistently ignored this basic fact for 2.5 years.


    No it can't reach the 'ret' instruction. The only thing being ignored is
    that we agree that HHH fails to follow the rules of the x86 language and
    reach the 'ret' instruction. Open your eyes! Face the facts! The input specifies a reachable 'ret' instruction, but HHH is unable to reach it.
    That failure of HHH does not says anything about what the input specifies. Olcott seems to think that it is correct for HHH to violate the x86
    language by halting the simulation and ignoring what the input specifies
    in the part of the code that contains the abort.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Mon May 19 10:21:16 2025
    Op 16.mei.2025 om 17:40 schreef olcott:
    On 5/16/2025 2:27 AM, Mikko wrote:
    On 2025-05-15 16:47:49 +0000, olcott said:

    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls >>>>>>>>> itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a
    equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input
    tape) that is to be simulated.  The scheme says how to turn the (TM
    + input tape) into a string of symbols that represent that computation. >>>>
    So to answer your question, the "source-code on its tape" is the
    result of applying the UTM's particular scheme to the combination
    (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would
    need to specify the exact UTM being used, because every UTM will
    have a different answer to your question.


    Mike.

    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Investigations do not need a standard language. For an investigation an
    ad hoc language is good enough and usually better.


    Until I made this concrete people kept assuming that
    an input DD could be defined that actually does the
    opposite of whatever value that its simulating termination
    analyzer HHH returns.

    int main()
    {
      DD(); // HHH cannot report on the behavior of its caller.
    }


    HHH cannot simulate itself. It is programmed to do a wild guess about
    its own behaviour. Therefore, it produces false negatives. It reports non-halting when it halts:

    int main() {
    return HHH(main);
    }

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Mon May 19 13:39:15 2025
    On 2025-05-16 15:40:29 +0000, olcott said:

    On 5/16/2025 2:27 AM, Mikko wrote:
    On 2025-05-15 16:47:49 +0000, olcott said:

    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape)
    that is to be simulated.  The scheme says how to turn the (TM + input >>>> tape) into a string of symbols that represent that computation.

    So to answer your question, the "source-code on its tape" is the result >>>> of applying the UTM's particular scheme to the combination (UTM, input >>>> tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would
    need to specify the exact UTM being used, because every UTM will have a >>>> different answer to your question.


    Mike.

    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Investigations do not need a standard language. For an investigation an
    ad hoc language is good enough and usually better.

    Until I made this concrete people kept assuming that
    an input DD could be defined that actually does the
    opposite of whatever value that its simulating termination
    analyzer HHH returns.

    That need not and should not be assumed. That can be constructively
    proven.

    Which doesn't matter to any investigation.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to wij on Mon May 19 13:41:28 2025
    On 2025-05-18 20:35:01 +0000, wij said:

    On Sat, 2025-05-17 at 14:39 -0500, olcott wrote:
    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls
    itself):

    void D() {
              D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent
    TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that
    is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be
    simulated.

    If you're looking for the exact string symbols, obviously you would need to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes when
    a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>> Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
            Note this is itself a computation, distinct from f of course
            but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will have no >>>>>>>>>> knowledge that it
    is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several >>>>>>>>> things in one
    post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM
    is /equipped/
    with
    an
    infinite tape, but the /contents/ of that tape are not a part of that >>>>>>>> TM's definition.

    For example we could build a TM P that decides whether a number is >>>>>>>> prime.  Given a
    number n,
    we
    convert n into the input tape representation of n, and run P with that >>>>>>>> tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is a >>>>>>>> "complete TM",
    equipped
    with
    its
    own input tape.  Of course we don't know what's on the input tape >>>>>>>> because nobody has
    said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't know >>>>>>>> what's on P's input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say what >>>>>>>> computation you
    want
    the
    UTM to
    simulate we can build a tape string to perform that particular >>>>>>>> simulation.  That is the
    case
    /whatever/ computation we come up with, so it is simply the case [not >>>>>>>> misleading] that
    the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"? >>>>>>

    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be defined.

    Eh?  The f was something /you/ introduced!  You said it represents some >>>> computation which UTM U
    simulates.  How can f suddenly become undefined after you defined it? >>>>
    Do you mean that f would not be on the input tape for (outer)U?  That's >>>> not the case at all.  In
    U(f), the input tape for U contains a representation of f.  When
    (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of computation >>>> U(f), which internally
    contains the original representation of f.  The f is still there and
    equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally more
    careful in your notation!

    Using notation <P,I> to mean U's input tape representation of "TM P,
    running with input I":

         Your U(f)      is U(<fp,fi>) // fp = TM(f), fi=InputTape(f)
         Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it through >>>> step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly attacking >>> that a variable cannot be undefined because it is there. And said I should >>> not gloss over the detail and should think it through step by step.
    No idea what you are talking about.



    U(<U>) is the most conventional notation

    U is not a complete TM. U(<U>) is worst, also not a TM.

    It is if U is defined as a UTM.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Mon May 19 13:44:21 2025
    On 2025-05-18 20:57:03 +0000, olcott said:

    On 5/18/2025 3:35 PM, wij wrote:
    On Sat, 2025-05-17 at 14:39 -0500, olcott wrote:
    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote:
    On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls
    itself):

    void D() {
              D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent
    TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>>
    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) that
    is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be
    simulated.

    If you're looking for the exact string symbols, obviously you would need to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to your question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes when
    a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>>> Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap.

    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
            Note this is itself a computation, distinct from f of course
            but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will have no >>>>>>>>>>> knowledge that it
    is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several >>>>>>>>>> things in one
    post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM
    is /equipped/
    with
    an
    infinite tape, but the /contents/ of that tape are not a part of that >>>>>>>>> TM's definition.

    For example we could build a TM P that decides whether a number is >>>>>>>>> prime.  Given a
    number n,
    we
    convert n into the input tape representation of n, and run P with that
    tape as input.

    It's essentially no different for UTMs.  Such a UTM certainly is a >>>>>>>>> "complete TM",
    equipped
    with
    its
    own input tape.  Of course we don't know what's on the input tape >>>>>>>>> because nobody has
    said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't know >>>>>>>>> what's on P's input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say what >>>>>>>>> computation you
    want
    the
    UTM to
    simulate we can build a tape string to perform that particular >>>>>>>>> simulation.  That is the
    case
    /whatever/ computation we come up with, so it is simply the case [not >>>>>>>>> misleading] that
    the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"? >>>>>>>

    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be defined.

    Eh?  The f was something /you/ introduced!  You said it represents some >>>>> computation which UTM U
    simulates.  How can f suddenly become undefined after you defined it? >>>>>
    Do you mean that f would not be on the input tape for (outer)U?  That's >>>>> not the case at all.  In
    U(f), the input tape for U contains a representation of f.  When
    (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of computation >>>>> U(f), which internally
    contains the original representation of f.  The f is still there and >>>>> equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally more >>>>> careful in your notation!

    Using notation <P,I> to mean U's input tape representation of "TM P, >>>>> running with input I":

         Your U(f)      is U(<fp,fi>) // fp = TM(f), fi=InputTape(f)
         Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it through >>>>> step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly attacking
    that a variable cannot be undefined because it is there. And said I should >>>> not gloss over the detail and should think it through step by step.
    No idea what you are talking about.



    U(<U>) is the most conventional notation

    U is not a complete TM. U(<U>) is worst, also not a TM.

    It is stipulated that U is a UTM that
    has its own source-code as its input.

    No it is not. U(<U>) is, except that the code may be a translation.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Mon May 19 13:48:07 2025
    On 2025-05-18 22:09:47 +0000, olcott said:

    On 5/18/2025 4:46 PM, wij wrote:
    On Sun, 2025-05-18 at 15:57 -0500, olcott wrote:
    On 5/18/2025 3:35 PM, wij wrote:
    On Sat, 2025-05-17 at 14:39 -0500, olcott wrote:
    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote:
    On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote: >>>>>>>>>>>>>>> On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which
    calls
    itself):

    void D() {
               D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a >>>>>>>>>>>>>>>>>>>> equivalent
    TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>>>>
    What is exactly the source-code on its tape? >>>>>>>>>>>>>>>>>>

    Every UTM has some scheme which can be applied to a (TM & input tape)
    that
    is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols
    that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result
    of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be
    simulated.

    If you're looking for the exact string symbols, obviously you would need
    to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to your
    question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself.  (Nothing magical changes
    when
    a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>>>>> Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap. >>>>>>>>>>>>>
    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape.
             Note this is itself a computation, distinct from f of course
             but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will have no
    knowledge that
    it
    is
    "simulating
    itself", and will just simulate what it is given.


    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several
    things in one
    post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM is
    /equipped/
    with
    an
    infinite tape, but the /contents/ of that tape are not a part of that TM's
    definition.

    For example we could build a TM P that decides whether a number is >>>>>>>>>>> prime.  Given a
    number n,
    we
    convert n into the input tape representation of n, and run P with that tape as
    input.

    It's essentially no different for UTMs.  Such a UTM certainly is a >>>>>>>>>>> "complete TM",
    equipped
    with
    its
    own input tape.  Of course we don't know what's on the input tape >>>>>>>>>>> because nobody has
    said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't know
    what's on P's
    input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say what
    computation you
    want
    the
    UTM to
    simulate we can build a tape string to perform that particular >>>>>>>>>>> simulation.  That is
    the
    case
    /whatever/ computation we come up with, so it is simply the case [not
    misleading]
    that
    the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be defined.

    Eh?  The f was something /you/ introduced!  You said it represents some
    computation which
    UTM U
    simulates.  How can f suddenly become undefined after you defined it? >>>>>>>
    Do you mean that f would not be on the input tape for (outer)U?  That's
    not the case at
    all.  In
    U(f), the input tape for U contains a representation of f.  When >>>>>>> (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of computation >>>>>>> U(f), which
    internally
    contains the original representation of f.  The f is still there and >>>>>>> equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally more >>>>>>> careful in your
    notation!

    Using notation <P,I> to mean U's input tape representation of "TM P, >>>>>>> running with input I":

          Your U(f)      is U(<fp,fi>) // fp = TM(f), fi=InputTape(f)
          Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it through >>>>>>> step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly attacking
    that a variable cannot be undefined because it is there. And said I should
    not gloss over the detail and should think it through step by step. >>>>>> No idea what you are talking about.



    U(<U>) is the most conventional notation

    U is not a complete TM. U(<U>) is worst, also not a TM.


    It is stipulated that U is a UTM that
    has its own source-code as its input.

    UTM is not a complete TM.

    Textbooks define a UTM as a complete TM.

    And published UTM's are. No repspectable pulblisher would accept
    anything less.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to wij on Mon May 19 13:52:51 2025
    On 2025-05-18 23:54:17 +0000, wij said:

    On Sun, 2025-05-18 at 19:09 -0400, Richard Damon wrote:
    On 5/18/25 6:09 PM, olcott wrote:
    On 5/18/2025 4:46 PM, wij wrote:
    On Sun, 2025-05-18 at 15:57 -0500, olcott wrote:
    On 5/18/2025 3:35 PM, wij wrote:
    On Sat, 2025-05-17 at 14:39 -0500, olcott wrote:
    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote: >>>>>>>>>>>>>>> On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote: >>>>>>>>>>>>>>>>> On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote: >>>>>>>>>>>>>>>>>>>>>>>> Q: Write a turing machine that performs D function> > > > > > > > > > >
    (which >>>>>>>>>>>>>>>>>>>>>>>> calls
    itself):

    void D() {
                D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must> > > > > > > > > >
    be a
    equivalent
    TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>>>>>>
    What is exactly the source-code on its tape? >>>>>>>>>>>>>>>>>>>>

    Every UTM has some scheme which can be applied to a (TM> > > > > > > >
    & input tape)
    that
    is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a> > > > > > > > > >
    string of symbols
    that
    represent
    that
    computation.

    So to answer your question, the "source-code on its> > > > > > > > > >
    tape" is the result
    of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape)> > > > > > > > >
    that is to be
    simulated.

    If you're looking for the exact string symbols,> > > > > > > > > > > >
    obviously you would need
    to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different> > > > > > > > > >
    answer to your
    question.


    Mike.

    People used to say UTM can simulate all TM. I was> > > > > > > > > > >
    questing such a UTM.
    Because you said "Every UTM ...", so what is the source> > > > > > > >
    of such UTM?

    Yes, a UTM can simulate any TM including itself. > > > > > > > > > > >
    (Nothing magical changes
    when
    a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the> > > > > > > >
    tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>>>>>>> Given instance U(U(f)), it should function like f from the> > > > > > >
    above definition.
    But, U(U(f)) would fall into a 'self-reference' trap. >>>>>>>>>>>>>>>
    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape. >>>>>>>>>>>>>>>           Note this is itself a computation, distinct from> > > > > > >
    f of course
              but having the same behaviour. >>>>>>>>>>>>>>> -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will> > > > > > >
    have no knowledge that
    it
    is
    "simulating
    itself", and will just simulate what it is given. >>>>>>>>>>>>>>>

    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean> > > > > >
    several things in one
    post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the> > > > > > > >
    contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is> > > > > > >
    misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be> > > > > > > >
    defined"?  A TM is
    /equipped/
    with
    an
    infinite tape, but the /contents/ of that tape are not a part> > > > >
    of that TM's
    definition.

    For example we could build a TM P that decides whether a> > > > > > > >
    number is prime.  Given a
    number n,
    we
    convert n into the input tape representation of n, and run P> > > > > >
    with that tape as
    input.

    It's essentially no different for UTMs.  Such a UTM certainly> > > > >
    is a "complete TM",
    equipped
    with
    its
    own input tape.  Of course we don't know what's on the input> > > > > >
    tape because nobody has
    said
    yet
    what
    computation we are asking it to simulate!  [Similarly we> > > > > > > >
    don't know what's on P's
    input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you> > > > > >
    say what computation you
    want
    the
    UTM to
    simulate we can build a tape string to perform that> > > > > > > > > >
    particular simulation.  That is
    the
    case
    /whatever/ computation we come up with, so it is simply the> > > > > >
    case [not misleading]
    that
    the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the> > > > > > > >
    contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be> > > > >
    defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not> > > > >
    be defined.

    Eh?  The f was something /you/ introduced!  You said it> > > > > > > >
    represents some computation which
    UTM U
    simulates.  How can f suddenly become undefined after you defined> > >
    it?

    Do you mean that f would not be on the input tape for (outer)U? > > > >
    That's not the case at
    all.  In
    U(f), the input tape for U contains a representation of f.  When> > > >
    (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of> > > > > > >
    computation U(f), which
    internally
    contains the original representation of f.  The f is still there> > > >
    and equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally> > > >
    more careful in your
    notation!

    Using notation <P,I> to mean U's input tape representation of "TM> > >
    P, running with input I":

           Your U(f)      is U(<fp,fi>)        // fp = TM(f),> > > > > > >
    fi=InputTape(f)
           Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it> > > > >
    through step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly> > > >>>>>>>> > > > > attacking
    that a variable cannot be undefined because it is there. And said> > > >>>>>>>> > > > > I should
    not gloss over the detail and should think it through step by step. >>>>>>>> No idea what you are talking about.



    U(<U>)    is the most conventional notation

    U is not a complete TM. U(<U>) is worst, also not a TM.


    It is stipulated that U is a UTM that
    has its own source-code as its input.

    UTM is not a complete TM.> >> > Textbooks define a UTM as a complete TM. >>>

    As I pointed out, there are two definitions of what a Turing Macine is.

    It can be just the algorithm part, or the combination of the Algorithm>
    and Input.

    In either case

    "U <U>" isn't a valid computation, as in the TM is just tha algoritm>
    case, where <U> is a valid string for the representation of the TM, a>
    UTM needs as its input the combination of the representation of the>
    input program and the representation of its input (if it takes any),
    since the program is a UTM, and that needs an input, you need to
    add it.

    Note that TM cannot *read* input as external information, everything is fixed.
    I have no problem with the 'two definition' saying, you just have to make  it clear (but as usual in your real number, you invent your own stuff, you  are not following your 'standard' and condemn others not following it). However this 'other' definition of TM if exists will have no computation  (nothing in the tape). You cannot talk about 'computation'.

    The term "computation" has been used for efforts like to detemine the
    first million digitl of pi. No input.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Mon May 19 15:29:39 2025
    On 2025-05-19 04:07:11 +0000, olcott said:

    On 5/18/2025 10:21 PM, André G. Isaak wrote:
    On 2025-05-18 16:08, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:

    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.


    I don't think you'll find that most people will agree with this. That
    might be your usage.

    The problem is that 'specification' has already been used in much of
    this discussion to mean something else. A TM's specification outlines
    what it is that that TM is supposed to do without going into the
    details of how it actually does it.


    When you refer to the spec of an algorithm you
    are correct. When you refer to the every single
    step of the exact behavior that a finite string
    specified you are wrong.

    For example, the specification of a Parity Decider would be a TM takes
    a representation of a natural number as its initial tape content and
    accepts it only if it is even.

    The description of that machine, on the other hand, would describe what
    the alphabet of this machine is, what it's state transitions are, etc.
    i.e. it would give all the information necessary to actually construct
    the machine.

    André


    I already know how TM machine descriptions actually work.

    DDD simulated by HHH1 has the exact same
    sequence of steps as the directly executed DDD().

    People here think that when DDD is simulated by
    the same simulator that it calls (thus causing
    recursive simulation) that DDD must have the same
    behavior as DDD simulated by HHH1 that DDD does
    not call.

    The behaviour of DDD is the behaviour that DDD specifies. If some
    program simulaates differently then it does not simulate the
    behaviour of DDD.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed May 21 11:56:55 2025
    On 2025-05-21 04:36:03 +0000, olcott said:

    On 5/19/2025 5:48 AM, Mikko wrote:
    On 2025-05-18 22:09:47 +0000, olcott said:

    On 5/18/2025 4:46 PM, wij wrote:
    On Sun, 2025-05-18 at 15:57 -0500, olcott wrote:
    On 5/18/2025 3:35 PM, wij wrote:
    On Sat, 2025-05-17 at 14:39 -0500, olcott wrote:
    On 5/17/2025 2:26 PM, wij wrote:
    On Sat, 2025-05-17 at 15:45 +0100, Mike Terry wrote:
    On 17/05/2025 04:01, wij wrote:
    On Fri, 2025-05-16 at 23:51 +0100, Mike Terry wrote:
    On 16/05/2025 20:35, wij wrote:
    On Fri, 2025-05-16 at 16:33 +0100, Mike Terry wrote:
    On 16/05/2025 12:40, wij wrote:
    On Fri, 2025-05-16 at 03:26 +0100, Mike Terry wrote: >>>>>>>>>>>>>>> On 16/05/2025 02:47, wij wrote:
    On Fri, 2025-05-16 at 01:40 +0100, Mike Terry wrote: >>>>>>>>>>>>>>>>> On 15/05/2025 19:49, wij wrote:
    On Thu, 2025-05-15 at 17:08 +0100, Mike Terry wrote: >>>>>>>>>>>>>>>>>>> On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>>>> On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote: >>>>>>>>>>>>>>>>>>>>>>> On 5/14/2025 12:13 AM, wij wrote: >>>>>>>>>>>>>>>>>>>>>>>> Q: Write a turing machine that performs D function (which
    calls
    itself):

    void D() {
               D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a
    equivalent
    TM.

    To make a TM that references itself the closest >>>>>>>>>>>>>>>>>>>>>>> thing is a UTM that simulates its own TM source-code. >>>>>>>>>>>>>>>>>>>>>>
    How does a UTM simulate its own TM source-code? >>>>>>>>>>>>>>>>>>>>>>

    You run a UTM that has its own source-code on its tape. >>>>>>>>>>>>>>>>>>>>
    What is exactly the source-code on its tape? >>>>>>>>>>>>>>>>>>>>

    Every UTM has some scheme which can be applied to a (TM & input tape)
    that
    is to
    be
    simulated.
    The
    scheme says how to turn the (TM + input tape) into a string of symbols
    that
    represent
    that
    computation.

    So to answer your question, the "source-code on its tape" is the result
    of
    applying
    the
    UTM's
    particular scheme to the combination (UTM, input tape) that is to be
    simulated.

    If you're looking for the exact string symbols, obviously you would need
    to
    specify
    the
    exact
    UTM
    being used, because every UTM will have a different answer to your
    question.


    Mike.

    People used to say UTM can simulate all TM. I was questing such a UTM.
    Because you said "Every UTM ...", so what is the source of such UTM?

    Yes, a UTM can simulate any TM including itself. (Nothing magical changes
    when
    a
    UTM
    simulates
    itself, as opposed to some other TM.)

    Supposed UTM exists, and denoted as U(X), X denotes the tape contents of the
    encoding of a TM. And, U(X) should function the same like X. >>>>>>>>>>>>>>>> Given instance U(U(f)), it should function like f from the above definition.
    But, U(U(f)) would fall into a 'self-reference' trap. >>>>>>>>>>>>>>>
    There is no self-reference trap.

    In your notation:

    -  f represents some computation.
    -  U(f) represents U being run with f on its tape. >>>>>>>>>>>>>>>          Note this is itself a computation, distinct from f of course
             but having the same behaviour.
    -  U(U(f)) represents U simulating the previous computation. >>>>>>>>>>>>>>>
    There is no reason U(f) cannot be simulated by U.  U will have no
    knowledge that
    it
    is
    "simulating
    itself", and will just simulate what it is given. >>>>>>>>>>>>>>>

    Mike.

    Sorry for not being clear on the UTM issue (I wanted to mean several
    things in one
    post).
    You are right there is no self-reference.
    I mean 'UTM' is not a complete, qualified TM because the contents of the tape
    would not be defined. Saying "UTM can simulate any TM" is misleading because
    no such TM (UTM as TM) exists.

    What do you mean "the contents of the tape would not be defined"?  A TM is
    /equipped/
    with
    an
    infinite tape, but the /contents/ of that tape are not a part of that TM's
    definition.

    For example we could build a TM P that decides whether a number is
    prime.  Given a
    number n,
    we
    convert n into the input tape representation of n, and run P with that tape as
    input.

    It's essentially no different for UTMs.  Such a UTM certainly is a
    "complete TM",
    equipped
    with
    its
    own input tape.  Of course we don't know what's on the input tape
    because nobody has
    said
    yet
    what
    computation we are asking it to simulate!  [Similarly we don't know
    what's on P's
    input
    tape,
    until
    we know what n we want it to test for primeness.]  Once you say what
    computation you
    want
    the
    UTM to
    simulate we can build a tape string to perform that particular >>>>>>>>>>>>> simulation.  That is
    the
    case
    /whatever/ computation we come up with, so it is simply the case [not
    misleading]
    that
    the
    UTM
    can
    simulate any computation.


    Mike.

    TM has no I/O mechanism. 'Computation' always means the contents of the tape
    is defined (fixed before run).


    Correct, and correct.

    So... What do you mean "the contents of the tape would not be defined"?


    Mike.

    In "UTM simulates itself", denoted as U(U(f)), the f would not be defined.

    Eh?  The f was something /you/ introduced!  You said it represents some
    computation which
    UTM U
    simulates.  How can f suddenly become undefined after you defined it?

    Do you mean that f would not be on the input tape for (outer)U? That's
    not the case at
    all.  In
    U(f), the input tape for U contains a representation of f.  When >>>>>>>>> (outer)U simulates (inner)U
    simulating f, (outer)U's tape contains a representation of computation
    U(f), which
    internally
    contains the original representation of f.  The f is still there and >>>>>>>>> equally well defined in
    U(U(f)).

    I think you would benefit from being more explicit and generally more >>>>>>>>> careful in your
    notation!

    Using notation <P,I> to mean U's input tape representation of "TM P, >>>>>>>>> running with input I":

          Your U(f)      is U(<fp,fi>)        // fp = TM(f), fi=InputTape(f)
          Your U(U(f))   is U((<U,<fp,fi>>)

    f is still there!  It has not become "undefined".

    You gloss over the details and become confused - just think it through
    step by step.


    Mike.

    It seems you are addressing notational problems.
    You introduced angle bracket and one more variable, and seemingly attacking
    that a variable cannot be undefined because it is there. And said I should
    not gloss over the detail and should think it through step by step. >>>>>>>> No idea what you are talking about.



    U(<U>)    is the most conventional notation

    U is not a complete TM. U(<U>) is worst, also not a TM.


    It is stipulated that U is a UTM that
    has its own source-code as its input.

    UTM is not a complete TM.

    Textbooks define a UTM as a complete TM.

    And published UTM's are. No repspectable pulblisher would accept
    anything less.

    They did accept much less in the early days.

    In the early years the procedures were different and acceptance was as
    much a matter of chance as of acceptability.

    It took a lot of years before a UTM was not
    a pure abstraction.

    Both the abstract concept and concrete examples are presented and used.
    Usually an abstraction is better but that depends on the purpose. If
    you want a concrete example it is better to pick one that is simple
    enough and easy to use for your purpose.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed May 21 12:03:32 2025
    On 2025-05-21 04:33:15 +0000, olcott said:

    On 5/19/2025 7:29 AM, Mikko wrote:
    On 2025-05-19 04:07:11 +0000, olcott said:

    On 5/18/2025 10:21 PM, André G. Isaak wrote:
    On 2025-05-18 16:08, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:

    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.


    I don't think you'll find that most people will agree with this. That
    might be your usage.

    The problem is that 'specification' has already been used in much of
    this discussion to mean something else. A TM's specification outlines
    what it is that that TM is supposed to do without going into the
    details of how it actually does it.


    When you refer to the spec of an algorithm you
    are correct. When you refer to the every single
    step of the exact behavior that a finite string
    specified you are wrong.

    For example, the specification of a Parity Decider would be a TM takes >>>> a representation of a natural number as its initial tape content and
    accepts it only if it is even.

    The description of that machine, on the other hand, would describe what >>>> the alphabet of this machine is, what it's state transitions are, etc. >>>> i.e. it would give all the information necessary to actually construct >>>> the machine.

    André


    I already know how TM machine descriptions actually work.

    DDD simulated by HHH1 has the exact same
    sequence of steps as the directly executed DDD().

    People here think that when DDD is simulated by
    the same simulator that it calls (thus causing
    recursive simulation) that DDD must have the same
    behavior as DDD simulated by HHH1 that DDD does
    not call.

    The behaviour of DDD is the behaviour that DDD specifies. If some
    program simulaates differently then it does not simulate the
    behaviour of DDD.

    It's not that hard really.

    That is not hard unless you want to call everything "hard".

    When an input calls its own simulator with itself as input
    THIS DOES CHANGE ITS BEHAVIOR.

    It does not change the behaviour that the input specifies. The meaning
    of a text does not depend on who reads it.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to olcott on Wed May 21 11:47:27 2025
    On 2025-05-21 04:41:44 +0000, olcott said:

    On 5/19/2025 5:39 AM, Mikko wrote:
    On 2025-05-16 15:40:29 +0000, olcott said:

    On 5/16/2025 2:27 AM, Mikko wrote:
    On 2025-05-15 16:47:49 +0000, olcott said:

    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which calls itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input tape) >>>>>> that is to be simulated.  The scheme says how to turn the (TM + input >>>>>> tape) into a string of symbols that represent that computation.

    So to answer your question, the "source-code on its tape" is the result >>>>>> of applying the UTM's particular scheme to the combination (UTM, input >>>>>> tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you would >>>>>> need to specify the exact UTM being used, because every UTM will have a >>>>>> different answer to your question.


    Mike.

    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Investigations do not need a standard language. For an investigation an >>>> ad hoc language is good enough and usually better.

    Until I made this concrete people kept assuming that
    an input DD could be defined that actually does the
    opposite of whatever value that its simulating termination
    analyzer HHH returns.

    That need not and should not be assumed. That can be constructively
    proven.

    Which doesn't matter to any investigation.

    There are only two ways to try to define a DD
    that actually does the opposition of whatever
    value that is termination analyzer returns.

    One way is enough. The way used by e.g. Linz does work.

    But that is irrelevant both to the your above claim that
    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.
    and to my response to that claim.

    Apparently you don't know enough about investigations and languages
    to say anything sensible about them.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Wed May 21 07:11:07 2025
    On 5/21/25 12:41 AM, olcott wrote:
    On 5/19/2025 5:39 AM, Mikko wrote:
    On 2025-05-16 15:40:29 +0000, olcott said:

    On 5/16/2025 2:27 AM, Mikko wrote:
    On 2025-05-15 16:47:49 +0000, olcott said:

    On 5/15/2025 11:08 AM, Mike Terry wrote:
    On 14/05/2025 18:53, wij wrote:
    On Wed, 2025-05-14 at 12:24 -0500, olcott wrote:
    On 5/14/2025 11:43 AM, wij wrote:
    On Wed, 2025-05-14 at 09:51 -0500, olcott wrote:
    On 5/14/2025 12:13 AM, wij wrote:
    Q: Write a turing machine that performs D function (which >>>>>>>>>>> calls itself):

    void D() {
        D();
    }

    Easy?



    That is not a TM.

    It is a C program that exists. Therefore, there must be a
    equivalent TM.

    To make a TM that references itself the closest
    thing is a UTM that simulates its own TM source-code.

    How does a UTM simulate its own TM source-code?


    You run a UTM that has its own source-code on its tape.

    What is exactly the source-code on its tape?


    Every UTM has some scheme which can be applied to a (TM & input
    tape) that is to be simulated.  The scheme says how to turn the
    (TM + input tape) into a string of symbols that represent that
    computation.

    So to answer your question, the "source-code on its tape" is the
    result of applying the UTM's particular scheme to the combination
    (UTM, input tape) that is to be simulated.

    If you're looking for the exact string symbols, obviously you
    would need to specify the exact UTM being used, because every UTM
    will have a different answer to your question.


    Mike.

    These things cannot be investigated in great
    depth because there is no fully encoded UTM in
    any standard language.

    Investigations do not need a standard language. For an investigation an >>>> ad hoc language is good enough and usually better.

    Until I made this concrete people kept assuming that
    an input DD could be defined that actually does the
    opposite of whatever value that its simulating termination
    analyzer HHH returns.

    That need not and should not be assumed. That can be constructively
    proven.

    Which doesn't matter to any investigation.


    There are only two ways to try to define a DD
    that actually does the opposition of whatever
    value that is termination analyzer returns.
    Neither of the work.

    SUre they do.


    int main()
    {
      DDD() // HHH called from DDD can know nothing of it caller.
    }


    So? When DDD calls HHH(DDD) its input gives it every thing it needs to
    be asked about HHH's inpyt.

    Your problem is you just can't know the meaning of words, but keep on
    replacing them with your lies.

    HHH can never be asked to answer about "its caller", only about the
    program represented by "its input", if that happens to be its caller, no problem, it is still being asked about its input.

    The fact that the program represented by its input can be a program that
    uses it is part of what makes the problem tough, and in the case of DD, impossible, but it is a valid construction in Computation Theory.

    So, all you are doing is proving your utter ignorance of what you are
    talking about, and that your native language is just lying.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to olcott on Wed May 21 07:16:56 2025
    On 5/21/25 12:33 AM, olcott wrote:
    On 5/19/2025 7:29 AM, Mikko wrote:
    On 2025-05-19 04:07:11 +0000, olcott said:

    On 5/18/2025 10:21 PM, André G. Isaak wrote:
    On 2025-05-18 16:08, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:

    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.


    I don't think you'll find that most people will agree with this.
    That might be your usage.

    The problem is that 'specification' has already been used in much of
    this discussion to mean something else. A TM's specification
    outlines what it is that that TM is supposed to do without going
    into the details of how it actually does it.


    When you refer to the spec of an algorithm you
    are correct. When you refer to the every single
    step of the exact behavior that a finite string
    specified you are wrong.

    For example, the specification of a Parity Decider would be a TM
    takes a representation of a natural number as its initial tape
    content and accepts it only if it is even.

    The description of that machine, on the other hand, would describe
    what the alphabet of this machine is, what it's state transitions
    are, etc. i.e. it would give all the information necessary to
    actually construct the machine.

    André


    I already know how TM machine descriptions actually work.

    DDD simulated by HHH1 has the exact same
    sequence of steps as the directly executed DDD().

    People here think that when DDD is simulated by
    the same simulator that it calls (thus causing
    recursive simulation) that DDD must have the same
    behavior as DDD simulated by HHH1 that DDD does
    not call.

    The behaviour of DDD is the behaviour that DDD specifies. If some
    program simulaates differently then it does not simulate the
    behaviour of DDD.



    It's not that hard really.
    When an input calls its own simulator with itself as input
    THIS DOES CHANGE ITS BEHAVIOR.


    THen show HOW.

    Remember, the decider is a FIXED program, and as such will always do the
    same thing for a given input.

    And thus the program at the input, that is built on that calling is also
    a fixed program that will always do the same thing for a given input.

    Your problem is that in your argument, you "forget" to make your decider actually be a program, and thus the input isn't a program either, and
    thus your whole argument is a category error.

    If you want to disagree, show what instruction ACTUALLY SIMULATED per
    the x86 language, or the requirements of the C language, that differed
    between the simulation by HHH and the dirrect execution.

    Note, in both of these requirements, a call instruction goes into the
    routine called and performs the instrutios therein.

    Thus the simulation of the called simulator shows HOW that HHH
    simulates, and the actual instructions it preforms, NOT the simulated
    results that it is seeing.

    Thus your "8000 page" result. Where was the difference?

    Your failure to show just proves that you are just lying.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Wed May 21 21:43:35 2025
    Op 21.mei.2025 om 06:33 schreef olcott:
    On 5/19/2025 7:29 AM, Mikko wrote:
    On 2025-05-19 04:07:11 +0000, olcott said:

    On 5/18/2025 10:21 PM, André G. Isaak wrote:
    On 2025-05-18 16:08, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:

    In English, both 'description' and 'specification' can refer to
    something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.


    I don't think you'll find that most people will agree with this.
    That might be your usage.

    The problem is that 'specification' has already been used in much of
    this discussion to mean something else. A TM's specification
    outlines what it is that that TM is supposed to do without going
    into the details of how it actually does it.


    When you refer to the spec of an algorithm you
    are correct. When you refer to the every single
    step of the exact behavior that a finite string
    specified you are wrong.

    For example, the specification of a Parity Decider would be a TM
    takes a representation of a natural number as its initial tape
    content and accepts it only if it is even.

    The description of that machine, on the other hand, would describe
    what the alphabet of this machine is, what it's state transitions
    are, etc. i.e. it would give all the information necessary to
    actually construct the machine.

    André


    I already know how TM machine descriptions actually work.

    DDD simulated by HHH1 has the exact same
    sequence of steps as the directly executed DDD().

    People here think that when DDD is simulated by
    the same simulator that it calls (thus causing
    recursive simulation) that DDD must have the same
    behavior as DDD simulated by HHH1 that DDD does
    not call.

    The behaviour of DDD is the behaviour that DDD specifies. If some
    program simulaates differently then it does not simulate the
    behaviour of DDD.



    It's not that hard really.
    When an input calls its own simulator with itself as input
    THIS DOES CHANGE ITS BEHAVIOR.


    There is only one DDD that uses the algorithm of only one HHH. How can
    that be different? For a difference, we need a second program.
    The behaviour of this one DDD is by definition shown in direct execution
    and world-class simulators (and even HHH1) confirm that behaviour. But
    HHH is unable to show that behaviour, which is not a change in the
    behaviour of DDD, but a failure of HHH to show the correct behaviour.
    The input still specifies this behaviour in Halt7.c, where an abort is
    coded, which makes the program specified in the input halt.
    HHH has a bug, so that it misses that part of the specification, but
    that does not mean that this specification is not present.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Fred. Zwarts@21:1/5 to All on Fri May 23 13:03:22 2025
    Op 21.mei.2025 om 21:49 schreef olcott:
    On 5/21/2025 2:43 PM, Fred. Zwarts wrote:
    Op 21.mei.2025 om 06:33 schreef olcott:
    On 5/19/2025 7:29 AM, Mikko wrote:
    On 2025-05-19 04:07:11 +0000, olcott said:

    On 5/18/2025 10:21 PM, André G. Isaak wrote:
    On 2025-05-18 16:08, olcott wrote:
    On 5/18/2025 4:58 PM, André G. Isaak wrote:

    In English, both 'description' and 'specification' can refer to >>>>>>>> something which is either complete or only partial.


    Description typically means partial and
    specification typically means complete.


    I don't think you'll find that most people will agree with this.
    That might be your usage.

    The problem is that 'specification' has already been used in much
    of this discussion to mean something else. A TM's specification
    outlines what it is that that TM is supposed to do without going
    into the details of how it actually does it.


    When you refer to the spec of an algorithm you
    are correct. When you refer to the every single
    step of the exact behavior that a finite string
    specified you are wrong.

    For example, the specification of a Parity Decider would be a TM
    takes a representation of a natural number as its initial tape
    content and accepts it only if it is even.

    The description of that machine, on the other hand, would describe >>>>>> what the alphabet of this machine is, what it's state transitions
    are, etc. i.e. it would give all the information necessary to
    actually construct the machine.

    André


    I already know how TM machine descriptions actually work.

    DDD simulated by HHH1 has the exact same
    sequence of steps as the directly executed DDD().

    People here think that when DDD is simulated by
    the same simulator that it calls (thus causing
    recursive simulation) that DDD must have the same
    behavior as DDD simulated by HHH1 that DDD does
    not call.

    The behaviour of DDD is the behaviour that DDD specifies. If some
    program simulaates differently then it does not simulate the
    behaviour of DDD.



    It's not that hard really.
    When an input calls its own simulator with itself as input
    THIS DOES CHANGE ITS BEHAVIOR.


    There is only one DDD that uses the algorithm of only one HHH. How can
    that be different?

    Its over-your-head.
    You are so indoctrinated with the infallible word
    of textbook that you disagree with the verified
    facts of actual execution traces.
    That is your usual reply when you don't understand the rebuttal. You
    think it is enough and then repeat the claim with the addition that
    nobody has shown any errors in your claim. That is only because you
    dream that you are infallible and don't need to read and think about
    what I say. You are unwilling to learn, because you trust that your
    dreams are true.
    But the verifiable facts are that the one and only input for HHH
    specifies a halting program and even the traces you mention do not even
    show one single difference whit the simulation of HHH1 that shows the
    halting behaviour. HHH halts before any difference has been seen in the
    traces.
    If you have no counter arguments, it still stands that there is no
    change in specified behaviour, only HHH is unable to show that specified behaviour.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)