• Semantic properties of finite string inputs

    From olcott@polcott333@gmail.com to comp.theory,comp.lang.c++,comp.lang.c,comp.ai.philosophy on Thu Oct 30 09:49:08 2025
    From Newsgroup: comp.lang.c

    D simulated by H measures the semantic property
    of the actual input as opposed to and contrast
    with the semantic property of a non-input. H and
    H1 are identical except that D does not call H1.

    We can tell an input from a non-input because an
    input is an argument to the function H.

    D.input_to_H
    specifies different behavior than
    D.input_to_H1.

    int D()
    {
    int Halt_Status = H(D);
    if (Halt_Status)
    HERE: goto HERE;
    return Halt_Status;
    }

    H simulates D
    that calls H(D) to simulate D
    that calls H(D) to simulate D
    that calls H(D) to simulate D
    that calls H(D) to simulate D
    that calls H(D) to simulate D
    until H sees this repeating pattern
    Then H returns 0;

    H1 simulates D
    that calls H(D) to simulate D
    then H(D) returns 0 to caller D
    then H1 returns 1;

    Imagine
    H and H1 are simulating termination
    analyzers anchored in a C interpreter
    that takes a finite string input

    H can recognize a call to itself in
    its input. The whole input is the
    text of the function D. The executable
    interpreters are named H.exe and H1.exe.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,comp.ai.philosophy,comp.lang.c,comp.lang.c++ on Fri Oct 31 11:51:26 2025
    From Newsgroup: comp.lang.c

    On 10/31/2025 11:17 AM, Richard Damon wrote:
    On 10/30/25 10:49 AM, olcott wrote:
    D simulated by H measures the semantic property
    of the actual input as opposed to and contrast
    with the semantic property of a non-input. H and
    H1 are identical except that D does not call H1.

    No, it doesn't.

    Semantic Properties are OBJECTIVE, and thus do not depend on who they
    are being asked.


    Unless you give this a fair review and not the usual
    "I am wrong no matter what I say" I may never speak to
    you again. This is the first time I spoke to you in
    many months so you know that I mean it.

    It turns out that this point is the key element
    of the theory of computation that I have overturned.

    Even the LLMs freaked out over this and just would
    not believe me until after I proved it.

    Unlike people LLMs are not so full of themselves
    that they utterly will not face the actual facts.

    The fact that
    (a) Deciders only compute the mapping from the behavior
    that their input actually specifies

    (b) A correct way to measure the behavior that their
    input actually specifies is D simulated by H

    (c) Proves that H(D)==0 is correct and

    (d) The requirement for H to report on anything else
    has always been a category error out-of-scope for
    Turing machine deciders since the beginning of the
    halting problem back in 1936.

    Without my innovation of a simulating halt decider
    back in 2016 there was no basis to see the difference
    between the behavior that the input specifies as different
    than the behavior of the direct execution.

    int D()
    {
    int Halt_Status = H(D);
    if (Halt_Status)
    HERE: goto HERE;
    return Halt_Status;
    }

    *Bottom line is this crucial verified fact*
    D simulated by H according to the semantics of C
    programming language (until H sees the repeating
    pattern) does enable H to report that its simulated
    input cannot possibly reach its own simulated
    "return" statement final halt state.
    --
    Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.theory,comp.lang.c on Sat Nov 1 20:36:02 2025
    From Newsgroup: comp.lang.c

    On 01/11/2025 02:32, Richard Damon wrote:
    On 10/31/25 3:57 PM, Tristan Wibberley wrote:
    On 31/10/2025 18:06, Richard Damon wrote:
    [H and H1] fail to be correct C
    interpreters, as the code has a required diagnostic.

    Really? even in K&R C?

    Yep, the link step will fail as H and H1 are not defined.

    Is "link step" defined in K&R C?

    The compiler can provide definitions for H--which is the only symbol
    missing a definition in the situation statement, IIRC--/to satisfy the situation/.

    Olcott: it might help to say, instead of that H and H1 are anchored in
    the interpreter, that the interpreter defines the symbol "H", if that is
    what you mean for your situation (I think it is but also my C
    terminology is rusty). I expect Kaz will know, he's a real dab-hand.

    --
    Tristan Wibberley

    The message body is Copyright (C) 2025 Tristan Wibberley except
    citations and quotations noted. All Rights Reserved except that you may,
    of course, cite it academically giving credit to me, distribute it
    verbatim as part of a usenet system or its archives, and use it to
    promote my greatness and general superiority without misrepresentation
    of my opinions other than my opinion of my greatness and general
    superiority which you _may_ misrepresent. You definitely MAY NOT train
    any production AI system with it but you may train experimental AI that
    will only be used for evaluation of the AI methods it implements.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.lang.c on Sat Nov 1 20:42:21 2025
    From Newsgroup: comp.lang.c

    On 01/11/2025 03:46, Kaz Kylheku wrote:
    On 2025-10-31, Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> wrote:
    On 31/10/2025 18:06, Richard Damon wrote:
    [H and H1] fail to be correct C
    interpreters, as the code has a required diagnostic.

    Really? even in K&R C?

    It doesn't require a diagnostic in ISO C. It has undefined behavior.

    As far as K&R C goes, if the K&R book is mum about this issue,
    it may be regarded as undefined in that old dialect also.

    When a program makes use of an external name (other than in certain
    ways like "sizeof name") and that name is not defined exactly once
    the behavior is undefined.

    Does it have to be defined in C?

    Linking is not required to fail with a diagostic in that situation, and
    that has certain implications of practical importance.

    For instance, if you are on Unix, this program will succesfully
    link, even though it uses a function which is not in the program
    and not in the standard C language:

    What is under the scope of the term "the program" and how does that
    compare to "the translation unit" ?

    If I put a definition in a separate translation unit can it be part of
    the program?

    If I put the separate translation unit in /usr/src can it be part of the program?

    If I put the separate translation unit in the C-interpreter, can it be
    part of the program?

    --
    Tristan Wibberley

    The message body is Copyright (C) 2025 Tristan Wibberley except
    citations and quotations noted. All Rights Reserved except that you may,
    of course, cite it academically giving credit to me, distribute it
    verbatim as part of a usenet system or its archives, and use it to
    promote my greatness and general superiority without misrepresentation
    of my opinions other than my opinion of my greatness and general
    superiority which you _may_ misrepresent. You definitely MAY NOT train
    any production AI system with it but you may train experimental AI that
    will only be used for evaluation of the AI methods it implements.

    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From James Kuyper@jameskuyper@alumni.caltech.edu to comp.theory,comp.lang.c on Sun Nov 2 20:49:51 2025
    From Newsgroup: comp.lang.c

    On 2025-11-01 16:36, Tristan Wibberley wrote:
    On 01/11/2025 02:32, Richard Damon wrote:
    On 10/31/25 3:57 PM, Tristan Wibberley wrote:
    On 31/10/2025 18:06, Richard Damon wrote:
    [H and H1] fail to be correct C
    interpreters, as the code has a required diagnostic.

    Really? even in K&R C?

    Yep, the link step will fail as H and H1 are not defined.

    Is "link step" defined in K&R C?

    Not in the first edition. Section 11.2 mentions that a program can be
    made up of many files, and that declarations with external linkage can
    refer to something defined in a different file, but that's about all
    they say about it.

    When the language was standardized, a lot more thought was put into it.
    In C89, Section 2.1.1.2 describes the phases of translation of a
    program, and phase 8 is described the link step (though it does not name
    it as such): "All external object and function references are resolved.
    Library components are linked to satisfy external references to
    functions and objects not defined in the current translation. All such translator output is collected into a program image which contains
    information needed for execution in its execution environment."

    In the second edition, K&R was brought into line with the latest draft
    version of what would become C89. As a result, A.12 contains the
    following simplified version of that specification: "The result is
    translated, then linked together with other programs and libraries, by collecting the necessary programs and data, and connecting external
    functions and object references to their definitions."


    The compiler can provide definitions for H--which is the only symbol
    missing a definition in the situation statement, IIRC--/to satisfy the situation/.

    C89 3.7 says "... If an identifier declared with external linkage is
    used in an expression (other than as part of the operand of a sizeof
    operator), somewhere in the entire program there shall be exactly one
    external definition for the identifier; otherwise, there shall be no
    more than one."

    Violation of a "shall" that occurs outside of a constraints section
    means that the behavior is undefined, which in turn means that the C
    standard imposes no requirements on the behavior of such a program. No diagnostic is required, nor is the translation required to fail, so
    Richard is wrong on those points.
    Because the behavior is undefined, anything is permitted, including
    providing a definition of H when the program itself contains none - but
    it most certainly isn't required to do so, and I doubt that any normal C compiler would do so.

    I try my best to avoid olcott messages. Does he specify that his
    nonsense requires an implementation that takes advantage of undefined
    behavior in that fashion?
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From James Kuyper@jameskuyper@alumni.caltech.edu to comp.lang.c on Sun Nov 2 20:58:45 2025
    From Newsgroup: comp.lang.c

    On 2025-11-01 16:42, Tristan Wibberley wrote:
    On 01/11/2025 03:46, Kaz Kylheku wrote:
    ...
    When a program makes use of an external name (other than in certain
    ways like "sizeof name") and that name is not defined exactly once
    the behavior is undefined.

    Does it have to be defined in C?

    No, but the behavior of C code that has been linked with non-C code is undefined "by the omission of any explicit definition of behavior." by
    the C standard. It might be defined by other documents.

    Linking is not required to fail with a diagostic in that situation, and
    that has certain implications of practical importance.

    For instance, if you are on Unix, this program will succesfully
    link, even though it uses a function which is not in the program
    and not in the standard C language:

    What is under the scope of the term "the program" and how does that
    compare to "the translation unit" ?

    "A source file together with all the headers and source files included
    via the preprocessing directive #include, less any source lines skipped
    by any of the conditional inclusion preprocessing directives, is called
    a _translation unit_. ... Translation units may be separately translated
    and then later linked to produce an executable program."

    The term "translation unit" is italicized, which is an ISO convention indicating that the sentence in which it occurs constitutes the
    definition of the italicized term.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Damon@Richard@Damon-Family.org to comp.theory,comp.lang.c on Sun Nov 2 22:44:35 2025
    From Newsgroup: comp.lang.c

    On 11/2/25 8:49 PM, James Kuyper wrote:
    On 2025-11-01 16:36, Tristan Wibberley wrote:
    On 01/11/2025 02:32, Richard Damon wrote:
    On 10/31/25 3:57 PM, Tristan Wibberley wrote:
    On 31/10/2025 18:06, Richard Damon wrote:
    [H and H1] fail to be correct C
    interpreters, as the code has a required diagnostic.

    Really? even in K&R C?

    Yep, the link step will fail as H and H1 are not defined.

    Is "link step" defined in K&R C?

    Not in the first edition. Section 11.2 mentions that a program can be
    made up of many files, and that declarations with external linkage can
    refer to something defined in a different file, but that's about all
    they say about it.

    When the language was standardized, a lot more thought was put into it.
    In C89, Section 2.1.1.2 describes the phases of translation of a
    program, and phase 8 is described the link step (though it does not name
    it as such): "All external object and function references are resolved. Library components are linked to satisfy external references to
    functions and objects not defined in the current translation. All such translator output is collected into a program image which contains information needed for execution in its execution environment."

    In the second edition, K&R was brought into line with the latest draft version of what would become C89. As a result, A.12 contains the
    following simplified version of that specification: "The result is translated, then linked together with other programs and libraries, by collecting the necessary programs and data, and connecting external
    functions and object references to their definitions."


    The compiler can provide definitions for H--which is the only symbol
    missing a definition in the situation statement, IIRC--/to satisfy the
    situation/.

    C89 3.7 says "... If an identifier declared with external linkage is
    used in an expression (other than as part of the operand of a sizeof operator), somewhere in the entire program there shall be exactly one external definition for the identifier; otherwise, there shall be no
    more than one."

    Violation of a "shall" that occurs outside of a constraints section
    means that the behavior is undefined, which in turn means that the C
    standard imposes no requirements on the behavior of such a program. No diagnostic is required, nor is the translation required to fail, so
    Richard is wrong on those points.
    Because the behavior is undefined, anything is permitted, including
    providing a definition of H when the program itself contains none - but
    it most certainly isn't required to do so, and I doubt that any normal C compiler would do so.

    I try my best to avoid olcott messages. Does he specify that his
    nonsense requires an implementation that takes advantage of undefined behavior in that fashion?

    No, and in fact, he claims to use the results defined by the language
    (and thus by the meaning of the words, not just the implementation),
    which is one reason his arguement fails.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Damon@Richard@Damon-Family.org to comp.theory,comp.lang.c on Sun Nov 2 22:48:04 2025
    From Newsgroup: comp.lang.c

    On 11/1/25 4:36 PM, Tristan Wibberley wrote:
    On 01/11/2025 02:32, Richard Damon wrote:
    On 10/31/25 3:57 PM, Tristan Wibberley wrote:
    On 31/10/2025 18:06, Richard Damon wrote:
    [H and H1] fail to be correct C
    interpreters, as the code has a required diagnostic.

    Really? even in K&R C?

    Yep, the link step will fail as H and H1 are not defined.

    Is "link step" defined in K&R C?

    Not explicitly, but K&R C is not actually a full langauge description.

    His program would fail to run on any of the "reference implementations"
    of that era, or for that matter, any era.


    The compiler can provide definitions for H--which is the only symbol
    missing a definition in the situation statement, IIRC--/to satisfy the situation/.

    Not in K&R C, as he defines what functions his implementation provides.


    Olcott: it might help to say, instead of that H and H1 are anchored in
    the interpreter, that the interpreter defines the symbol "H", if that is
    what you mean for your situation (I think it is but also my C
    terminology is rusty). I expect Kaz will know, he's a real dab-hand.

    But then he has to admit that they have an actual specific definition, something he needs to avoid as his logic REQUIRES H to be flexable to be any/all of the members of an infinte set, which makes it sort of hard to
    call.


    --
    Tristan Wibberley

    The message body is Copyright (C) 2025 Tristan Wibberley except
    citations and quotations noted. All Rights Reserved except that you may,
    of course, cite it academically giving credit to me, distribute it
    verbatim as part of a usenet system or its archives, and use it to
    promote my greatness and general superiority without misrepresentation
    of my opinions other than my opinion of my greatness and general
    superiority which you _may_ misrepresent. You definitely MAY NOT train
    any production AI system with it but you may train experimental AI that
    will only be used for evaluation of the AI methods it implements.


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Kaz Kylheku@643-408-1753@kylheku.com to comp.lang.c on Mon Nov 3 05:59:42 2025
    From Newsgroup: comp.lang.c

    On 2025-11-01, Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> wrote:
    On 01/11/2025 03:46, Kaz Kylheku wrote:
    On 2025-10-31, Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> wrote:
    On 31/10/2025 18:06, Richard Damon wrote:
    [H and H1] fail to be correct C
    interpreters, as the code has a required diagnostic.

    Really? even in K&R C?

    It doesn't require a diagnostic in ISO C. It has undefined behavior.

    As far as K&R C goes, if the K&R book is mum about this issue,
    it may be regarded as undefined in that old dialect also.

    When a program makes use of an external name (other than in certain
    ways like "sizeof name") and that name is not defined exactly once
    the behavior is undefined.

    Does it have to be defined in C?

    For the behavior to be well-defined, yes; it has to be defined in a a translation unit of the program, or else be one of the external names in
    the standard library.

    Other possibilities that are valid are beyond the scope of ISO C, such
    as mixed-language programming:

    - defining an external name in Fortran or assembly.

    - additonal libraries provided by the toolchain/platform, allowing
    the program to use names which are not in ISO C and which it
    does not define.

    All of these are examples of documented extensions. Documented
    extensions de facto create a larger local dialect of C in which
    more things are defined, but which is less portable.

    Linking is not required to fail with a diagostic in that situation, and
    that has certain implications of practical importance.

    For instance, if you are on Unix, this program will succesfully
    link, even though it uses a function which is not in the program
    and not in the standard C language:

    What is under the scope of the term "the program" and how does that
    compare to "the translation unit" ?

    A program consists of linking together one or more translation units.

    If I put a definition in a separate translation unit can it be part of
    the program?

    Yes.

    If I put the separate translation unit in /usr/src can it be part of the program?

    Yes. ISO C doesn't specify the details of how these materials are
    laid out in a file system: the entire manner of how the materials
    are gathered up and presented for translation and linking.

    If I put the separate translation unit in the C-interpreter, can it be
    part of the program?

    If you're working on a C interpreter, your role is almost certainly that
    of the implementor. The C interpreter could provide the library in the
    form of a translation unit which is implicitly combined with any other translation unit coming from the implementation user.

    There is an issue with providing libraries beyond those described
    in ISO C. C does not have a namespace system.

    Suppose your library has an external function foo, as an extension.

    This name is not in ISO C and is not reserved as an external name;
    therefore even strictly conforming ISO C programs are allowed
    to use it.

    The implementation must do whatever it takes to allow ISO C programs to
    use such identifiers, even if they clash with its own extensions.

    On GNU/Linux systems, this is done with weak symbols. For instance
    the POSIX function read() is a weak symbol such that if the
    application defines its own external name read, it will suppress
    that one; the weak symbol crumbles out of the way, so to speak.

    Now the library itself needs to use read(), for nstance for implementing
    the standard C getchar(). The library does not go through the
    weak alias, but uses the real name like __libc_read. Thus it is
    unaffected by the alias being redefined.

    (A C program that defines the name __libc_read is not
    strictly conforming; that /is/ in a reserved namespace, unlike read.)

    Systems without weak symbols may satisfy the requirement by carefully segmenting their libraries, rather than providing one large library
    or several large ones, that are broadly inclusive of material.
    --
    TXR Programming Language: http://nongnu.org/txr
    Cygnal: Cygwin Native Application Library: http://kylheku.com/cygnal
    Mastodon: @Kazinator@mstdn.ca
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Chris M. Thomasson@chris.m.thomasson.1@gmail.com to comp.lang.c on Sun Nov 2 22:22:11 2025
    From Newsgroup: comp.lang.c

    On 11/2/2025 9:59 PM, Kaz Kylheku wrote:
    On 2025-11-01, Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> wrote:
    On 01/11/2025 03:46, Kaz Kylheku wrote:
    On 2025-10-31, Tristan Wibberley <tristan.wibberley+netnews2@alumni.manchester.ac.uk> wrote:
    On 31/10/2025 18:06, Richard Damon wrote:
    [H and H1] fail to be correct C
    interpreters, as the code has a required diagnostic.

    Really? even in K&R C?

    It doesn't require a diagnostic in ISO C. It has undefined behavior.

    As far as K&R C goes, if the K&R book is mum about this issue,
    it may be regarded as undefined in that old dialect also.

    When a program makes use of an external name (other than in certain
    ways like "sizeof name") and that name is not defined exactly once
    the behavior is undefined.

    Does it have to be defined in C?

    For the behavior to be well-defined, yes; it has to be defined in a a translation unit of the program, or else be one of the external names in
    the standard library.

    Other possibilities that are valid are beyond the scope of ISO C, such
    as mixed-language programming:

    - defining an external name in Fortran or assembly.

    - additonal libraries provided by the toolchain/platform, allowing
    the program to use names which are not in ISO C and which it
    does not define.

    All of these are examples of documented extensions. Documented
    extensions de facto create a larger local dialect of C in which
    more things are defined, but which is less portable.

    Linking is not required to fail with a diagostic in that situation, and
    that has certain implications of practical importance.

    For instance, if you are on Unix, this program will succesfully
    link, even though it uses a function which is not in the program
    and not in the standard C language:

    What is under the scope of the term "the program" and how does that
    compare to "the translation unit" ?

    A program consists of linking together one or more translation units.

    If I put a definition in a separate translation unit can it be part of
    the program?

    Yes.

    If I put the separate translation unit in /usr/src can it be part of the
    program?

    Yes. ISO C doesn't specify the details of how these materials are
    laid out in a file system: the entire manner of how the materials
    are gathered up and presented for translation and linking.

    If I put the separate translation unit in the C-interpreter, can it be
    part of the program?

    If you're working on a C interpreter, your role is almost certainly that
    of the implementor. The C interpreter could provide the library in the
    form of a translation unit which is implicitly combined with any other translation unit coming from the implementation user.

    There is an issue with providing libraries beyond those described
    in ISO C. C does not have a namespace system.

    Suppose your library has an external function foo, as an extension.

    This name is not in ISO C and is not reserved as an external name;
    therefore even strictly conforming ISO C programs are allowed
    to use it.

    The implementation must do whatever it takes to allow ISO C programs to
    use such identifiers, even if they clash with its own extensions.

    On GNU/Linux systems, this is done with weak symbols. For instance
    the POSIX function read() is a weak symbol such that if the
    application defines its own external name read, it will suppress
    that one; the weak symbol crumbles out of the way, so to speak.

    Now the library itself needs to use read(), for nstance for implementing
    the standard C getchar(). The library does not go through the
    weak alias, but uses the real name like __libc_read. Thus it is
    unaffected by the alias being redefined.

    (A C program that defines the name __libc_read is not
    strictly conforming; that /is/ in a reserved namespace, unlike read.)

    Like a C program that uses a *_t postfix, but its conforming to POSIX.
    Clash with POSIX?



    Systems without weak symbols may satisfy the requirement by carefully segmenting their libraries, rather than providing one large library
    or several large ones, that are broadly inclusive of material.



    --- Synchronet 3.21a-Linux NewsLink 1.2