• Annotated Breakdown: Linz's Halting Problem Proof and the Category Erro

    From Mr Flibble@21:1/5 to All on Sun Apr 20 20:57:30 2025
    This is a step-by-step outline of Linz's classical proof of the
    undecidability of the Halting Problem, with commentary from the
    perspective of a category-theoretic critique. This perspective suggests
    that certain steps in the proof involve category errors, where roles and
    types of entities are improperly mixed — for example, treating a program
    and a meta-level decider as interchangeable.
    1. Assume a Halting Decider Exists
    Linz begins by assuming the existence of a function H(P, x) that can
    determine whether program P halts on input x.

    Category-Theoretic View: This assumption does not yet involve any category error. It describes a standard computational decider working over ordinary program-input pairs.
    2. Define a Contradictory Program D(P)
    Construct a new program D such that:
    if H(P, P) reports 'halts', then D(P) loops forever;
    if H(P, P) reports 'loops', then D(P) halts.

    Category-Theoretic View: This step begins to introduce potential category confusion. The function D is now being constructed specifically to act in contradiction to H's analysis of P on itself, blending the role of program
    and predicate. This blurs the boundary between object-level and meta-level semantics.
    3. Invoke D on Itself
    Evaluate D(D), which leads to the contradiction:
    - If H(D, D) says D halts → D(D) loops
    - If H(D, D) says D loops → D(D) halts

    Category-Theoretic View: Here the category error is fully exposed. The
    object D is passed into H and simultaneously defined in terms of H’s
    result on itself. This self-referential construct crosses semantic layers:
    a program is both subject and evaluator. In type-theoretic terms, this is
    akin to an ill-formed expression — a form of circular logic not grounded
    in a well-defined semantic domain.
    4. Conclude H Cannot Exist
    The contradiction implies that no such universal halting decider H can
    exist.

    Category-Theoretic View: From this perspective, the contradiction arises
    not from an inherent limitation of deciders per se, but from allowing semantically invalid constructs. D(D) is seen as undefined or outside the
    valid domain of discourse — not a legitimate program-input pair, but a malformed self-referential statement.
    5. Interpretation
    The standard interpretation is that the Halting Problem is undecidable — there is no algorithm that can determine for all programs and inputs
    whether the program halts.

    Category-Theoretic View: The undecidability arises only when the system
    permits semantically malformed constructions. If the language of
    computation is refined to exclude category errors — such as programs that attempt to reference or reason about their own evaluation in this way —
    then within that well-formed subset, halting may be decidable or at least non-contradictory.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to Mr Flibble on Sun Apr 20 17:44:07 2025
    On 4/20/25 4:57 PM, Mr Flibble wrote:
    This is a step-by-step outline of Linz's classical proof of the undecidability of the Halting Problem, with commentary from the
    perspective of a category-theoretic critique. This perspective suggests
    that certain steps in the proof involve category errors, where roles and types of entities are improperly mixed — for example, treating a program and a meta-level decider as interchangeable.

    And what is the "Category" of your Category-Theoretic critique?

    THe only category of possible application, is does the input represents
    the representation of a program and its input, as that is the domain of
    the input in the problem.


    1. Assume a Halting Decider Exists
    Linz begins by assuming the existence of a function H(P, x) that can determine whether program P halts on input x.

    Category-Theoretic View: This assumption does not yet involve any category error. It describes a standard computational decider working over ordinary program-input pairs.
    2. Define a Contradictory Program D(P)
    Construct a new program D such that:
    if H(P, P) reports 'halts', then D(P) loops forever;
    if H(P, P) reports 'loops', then D(P) halts.

    Category-Theoretic View: This step begins to introduce potential category confusion. The function D is now being constructed specifically to act in contradiction to H's analysis of P on itself, blending the role of program and predicate. This blurs the boundary between object-level and meta-level semantics.

    No "Role" as far as the problem has occured. The PROGRAM D has been
    constructed from an previously defined program H.

    3. Invoke D on Itself
    Evaluate D(D), which leads to the contradiction:
    - If H(D, D) says D halts → D(D) loops
    - If H(D, D) says D loops → D(D) halts
    Category-Theoretic View: Here the category error is fully exposed. The
    object D is passed into H and simultaneously defined in terms of H’s
    result on itself. This self-referential construct crosses semantic layers:
    a program is both subject and evaluator. In type-theoretic terms, this is akin to an ill-formed expression — a form of circular logic not grounded
    in a well-defined semantic domain.

    One program using a copy of another program within it is a fundamental
    property of Turing Complete programs.

    If you want to object to that capability, you need to show why it can't
    be logically done in the Turing Complete logical programming system
    being discussed.

    Then, "D" isn't passed to D, but the representation of D is passed to D. Olcotts notation is just bad and obscures the actual activity, and in
    fact, totally breaks the required model.

    4. Conclude H Cannot Exist
    The contradiction implies that no such universal halting decider H can
    exist.

    Category-Theoretic View: From this perspective, the contradiction arises
    not from an inherent limitation of deciders per se, but from allowing semantically invalid constructs. D(D) is seen as undefined or outside the valid domain of discourse — not a legitimate program-input pair, but a malformed self-referential statement.

    No, the proof shows that the given H will just fail to give the right
    answer for that particual input.

    The proof also points out that no details about the decider where used,
    other than it was claimed to be a correct decider.

    Thus, the same proof can be applied to ANY such decider, and thus we can
    find for ANY decider an input that it will not get the right answer to,
    and thus NO decider can answer all inputs correctly.

    There was nothing "illegal" about the formation of D(D) when done by the
    actual Linz method, so there is nothing illegal in the proof.


    5. Interpretation
    The standard interpretation is that the Halting Problem is undecidable — there is no algorithm that can determine for all programs and inputs
    whether the program halts.

    Category-Theoretic View: The undecidability arises only when the system permits semantically malformed constructions. If the language of
    computation is refined to exclude category errors — such as programs that attempt to reference or reason about their own evaluation in this way — then within that well-formed subset, halting may be decidable or at least non-contradictory.


    No, all you are doing is claiming a category that doesn't actualy exist
    based on logic in a framework that fails to meet the requirements of the problem.

    Sorry, all you are doing is showing how little you understand what you
    are talking about.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mr Flibble@21:1/5 to Richard Damon on Sun Apr 20 21:56:37 2025
    On Sun, 20 Apr 2025 17:44:07 -0400, Richard Damon wrote:

    On 4/20/25 4:57 PM, Mr Flibble wrote:
    This is a step-by-step outline of Linz's classical proof of the
    undecidability of the Halting Problem, with commentary from the
    perspective of a category-theoretic critique. This perspective suggests
    that certain steps in the proof involve category errors, where roles
    and types of entities are improperly mixed — for example, treating a
    program and a meta-level decider as interchangeable.

    And what is the "Category" of your Category-Theoretic critique?

    THe only category of possible application, is does the input represents
    the representation of a program and its input, as that is the domain of
    the input in the problem.


    1. Assume a Halting Decider Exists Linz begins by assuming the
    existence of a function H(P, x) that can determine whether program P
    halts on input x.

    Category-Theoretic View: This assumption does not yet involve any
    category error. It describes a standard computational decider working
    over ordinary program-input pairs.
    2. Define a Contradictory Program D(P)
    Construct a new program D such that:
    if H(P, P) reports 'halts', then D(P) loops forever;
    if H(P, P) reports 'loops', then D(P) halts.

    Category-Theoretic View: This step begins to introduce potential
    category confusion. The function D is now being constructed
    specifically to act in contradiction to H's analysis of P on itself,
    blending the role of program and predicate. This blurs the boundary
    between object-level and meta-level semantics.

    No "Role" as far as the problem has occured. The PROGRAM D has been constructed from an previously defined program H.

    3. Invoke D on Itself Evaluate D(D), which leads to the contradiction:
    - If H(D, D) says D halts → D(D) loops - If H(D, D) says D loops → >> D(D) halts
    Category-Theoretic View: Here the category error is fully exposed.
    The
    object D is passed into H and simultaneously defined in terms of H’s
    result on itself. This self-referential construct crosses semantic
    layers: a program is both subject and evaluator. In type-theoretic
    terms, this is akin to an ill-formed expression — a form of circular
    logic not grounded in a well-defined semantic domain.

    One program using a copy of another program within it is a fundamental property of Turing Complete programs.

    If you want to object to that capability, you need to show why it can't
    be logically done in the Turing Complete logical programming system
    being discussed.

    Then, "D" isn't passed to D, but the representation of D is passed to D. Olcotts notation is just bad and obscures the actual activity, and in
    fact, totally breaks the required model.

    4. Conclude H Cannot Exist The contradiction implies that no such
    universal halting decider H can exist.

    Category-Theoretic View: From this perspective, the contradiction
    arises not from an inherent limitation of deciders per se, but from
    allowing semantically invalid constructs. D(D) is seen as undefined or
    outside the valid domain of discourse — not a legitimate program-input
    pair, but a malformed self-referential statement.

    No, the proof shows that the given H will just fail to give the right
    answer for that particual input.

    The proof also points out that no details about the decider where used,
    other than it was claimed to be a correct decider.

    Thus, the same proof can be applied to ANY such decider, and thus we can
    find for ANY decider an input that it will not get the right answer to,
    and thus NO decider can answer all inputs correctly.

    There was nothing "illegal" about the formation of D(D) when done by the actual Linz method, so there is nothing illegal in the proof.


    5. Interpretation The standard interpretation is that the Halting
    Problem is undecidable — there is no algorithm that can determine for
    all programs and inputs whether the program halts.

    Category-Theoretic View: The undecidability arises only when the system
    permits semantically malformed constructions. If the language of
    computation is refined to exclude category errors — such as programs
    that attempt to reference or reason about their own evaluation in this
    way — then within that well-formed subset, halting may be decidable or
    at least non-contradictory.


    No, all you are doing is claiming a category that doesn't actualy exist
    based on logic in a framework that fails to meet the requirements of the problem.

    Sorry, all you are doing is showing how little you understand what you
    are talking about.

    Linz's classical proof of the undecidability of the Halting Problem
    involves category errors—semantic violations where roles of computational constructs are mixed across abstraction layers. The argument identifies specific steps in the proof where these semantic boundaries are crossed, leading not merely to contradiction, but to a breakdown of role integrity.
    1. Definition of Decider H
    Linz begins with a hypothetical decider H(P, x) which takes as input the encoding of a program P and an input x, and returns whether P halts on x.

    This decider exists at the meta-level—it analyzes objects (programs)
    rather than participating as an object in computation.
    2. Construction of Contradictory Program D
    A program D is constructed such that it uses H to decide the behavior of a program P on input P, and then behaves in contradiction:
    - If H(P, P) = halts, then D(P) loops
    - If H(P, P) = loops, then D(P) halts

    This construction embeds the decider's logic within a program, which conceptually inverts the role of analyzer and subject. The program D is no longer merely an object, but a meta-level entity that acts upon itself, crossing semantic boundaries.
    3. Evaluation of D(D)
    To complete the proof, D is evaluated on itself: D(D). This involves
    passing the encoding of D into H, and then acting based on H's evaluation
    of D on D.

    This is the precise point of category error: D attempts to use the decider
    H to evaluate its own behavior, and then alters its own behavior based on
    that evaluation. A single construct is simultaneously a subject of
    analysis and an analyst of itself. This is not a well-formed construction
    in semantic type logic.
    4. The Contradiction
    The contradiction arises:
    - If H(D, D) = halts → D(D) loops
    - If H(D, D) = loops → D(D) halts

    This is interpreted in standard logic as proof that H cannot exist.

    However, from a semantic modeling perspective, this contradiction is the
    result of allowing an invalid construction—akin to a type error in logic— where role boundaries between levels of computation were not respected.
    5. Conclusion
    Therefore, Linz's proof permits category errors by implicitly treating a program as both subject and analyzer. Such constructions violate the
    stratified semantics that prevent contradictions in typed or hierarchical logics. From this view, the proof demonstrates not the nonexistence of H
    in general, but the unsoundness of permitting self-referential analysis
    across abstraction boundaries.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Richard Damon@21:1/5 to Mr Flibble on Sun Apr 20 19:35:29 2025
    On 4/20/25 5:56 PM, Mr Flibble wrote:
    On Sun, 20 Apr 2025 17:44:07 -0400, Richard Damon wrote:

    On 4/20/25 4:57 PM, Mr Flibble wrote:
    This is a step-by-step outline of Linz's classical proof of the
    undecidability of the Halting Problem, with commentary from the
    perspective of a category-theoretic critique. This perspective suggests
    that certain steps in the proof involve category errors, where roles
    and types of entities are improperly mixed — for example, treating a
    program and a meta-level decider as interchangeable.

    And what is the "Category" of your Category-Theoretic critique?

    THe only category of possible application, is does the input represents
    the representation of a program and its input, as that is the domain of
    the input in the problem.


    1. Assume a Halting Decider Exists Linz begins by assuming the
    existence of a function H(P, x) that can determine whether program P
    halts on input x.

    Category-Theoretic View: This assumption does not yet involve any
    category error. It describes a standard computational decider working
    over ordinary program-input pairs.
    2. Define a Contradictory Program D(P)
    Construct a new program D such that:
    if H(P, P) reports 'halts', then D(P) loops forever;
    if H(P, P) reports 'loops', then D(P) halts.

    Category-Theoretic View: This step begins to introduce potential
    category confusion. The function D is now being constructed
    specifically to act in contradiction to H's analysis of P on itself,
    blending the role of program and predicate. This blurs the boundary
    between object-level and meta-level semantics.

    No "Role" as far as the problem has occured. The PROGRAM D has been
    constructed from an previously defined program H.

    3. Invoke D on Itself Evaluate D(D), which leads to the contradiction:
    - If H(D, D) says D halts → D(D) loops - If H(D, D) says D loops →
    D(D) halts
    > > Category-Theoretic View: Here the category error is fully exposed.
    > > The
    object D is passed into H and simultaneously defined in terms of H’s
    result on itself. This self-referential construct crosses semantic
    layers: a program is both subject and evaluator. In type-theoretic
    terms, this is akin to an ill-formed expression — a form of circular
    logic not grounded in a well-defined semantic domain.

    One program using a copy of another program within it is a fundamental
    property of Turing Complete programs.

    If you want to object to that capability, you need to show why it can't
    be logically done in the Turing Complete logical programming system
    being discussed.

    Then, "D" isn't passed to D, but the representation of D is passed to D.
    Olcotts notation is just bad and obscures the actual activity, and in
    fact, totally breaks the required model.

    4. Conclude H Cannot Exist The contradiction implies that no such
    universal halting decider H can exist.

    Category-Theoretic View: From this perspective, the contradiction
    arises not from an inherent limitation of deciders per se, but from
    allowing semantically invalid constructs. D(D) is seen as undefined or
    outside the valid domain of discourse — not a legitimate program-input >>> pair, but a malformed self-referential statement.

    No, the proof shows that the given H will just fail to give the right
    answer for that particual input.

    The proof also points out that no details about the decider where used,
    other than it was claimed to be a correct decider.

    Thus, the same proof can be applied to ANY such decider, and thus we can
    find for ANY decider an input that it will not get the right answer to,
    and thus NO decider can answer all inputs correctly.

    There was nothing "illegal" about the formation of D(D) when done by the
    actual Linz method, so there is nothing illegal in the proof.


    5. Interpretation The standard interpretation is that the Halting
    Problem is undecidable — there is no algorithm that can determine for
    all programs and inputs whether the program halts.

    Category-Theoretic View: The undecidability arises only when the system
    permits semantically malformed constructions. If the language of
    computation is refined to exclude category errors — such as programs
    that attempt to reference or reason about their own evaluation in this
    way — then within that well-formed subset, halting may be decidable or >>> at least non-contradictory.


    No, all you are doing is claiming a category that doesn't actualy exist
    based on logic in a framework that fails to meet the requirements of the
    problem.

    Sorry, all you are doing is showing how little you understand what you
    are talking about.

    Linz's classical proof of the undecidability of the Halting Problem
    involves category errors—semantic violations where roles of computational constructs are mixed across abstraction layers. The argument identifies specific steps in the proof where these semantic boundaries are crossed, leading not merely to contradiction, but to a breakdown of role integrity.
    1. Definition of Decider H
    Linz begins with a hypothetical decider H(P, x) which takes as input the encoding of a program P and an input x, and returns whether P halts on x.

    No it doesn't.

    Olcotts implementation may, but not the original proof.

    There is a Halt Decider H defined as a Turing Machine, which takes as an
    input the description of some machine and its input, and then, to be
    correct, answers whether said machine/input described to it will halt or
    not when it is run.

    There is a second machine "P" defined based on that Halt Decider H,
    using valid construction methods that uses a copy of that Decider to
    decide on its input (duplicated) and then does the opposite of the decision.

    This second machine has its description made including it getting copy
    of that description as its input.

    This description is given to the decider H, thus H is, by the
    definition, being asked if the Turing Machine D, when given its
    desciption <P> will Halt or not. Since H is defined to be a decider, it
    will always give an answer.

    If H <P><P> says its input will halt, then when we look at that actual operation of the program P appllid to <P> we see that it will also use
    its copy of H and applying it to <P><P> and see what answer it WILL give.


    This decider exists at the meta-level—it analyzes objects (programs)
    rather than participating as an object in computation.

    ????

    The presumption is that the decider exists as a PROGRAM, which is the
    category it always was.

    2. Construction of Contradictory Program D
    A program D is constructed such that it uses H to decide the behavior of a program P on input P, and then behaves in contradiction:
    - If H(P, P) = halts, then D(P) loops
    - If H(P, P) = loops, then D(P) halts


    And thus D is also a PROGRAM.

    Note, the normal proof has P as a program that takes as an input the description of SOME program, <M> and asks H if M applied to <M> will
    halt by giving it the input <M> <M>, and then do the opposite.

    The claimed "self-reference" is merely that applying of the input that
    just happens to be a description of the program D to the program D,
    which is a perfectly valid operation. Since H was claimed to be a
    decider that meets the requirements, it should be able to be given as an
    input *ANY* valid program and input.

    This construction embeds the decider's logic within a program, which conceptually inverts the role of analyzer and subject. The program D is no longer merely an object, but a meta-level entity that acts upon itself, crossing semantic boundaries.

    But the "role" of analyser and subject isn't a part of the system. It
    creates A PROGRAM from another PROGRAM, a step completely allowed and
    doesn't need to refer to any concept like "analyser" or "subject".

    There is no "semantic" boundry crossed that is actually in the domain of operation.


    3. Evaluation of D(D)
    To complete the proof, D is evaluated on itself: D(D). This involves
    passing the encoding of D into H, and then acting based on H's evaluation
    of D on D.

    This is the precise point of category error: D attempts to use the decider
    H to evaluate its own behavior, and then alters its own behavior based on that evaluation. A single construct is simultaneously a subject of
    analysis and an analyst of itself. This is not a well-formed construction
    in semantic type logic.

    And what is the error in that?

    There is nothing in the definition of the problem that says that
    "analyser" programs can not be made to be the "subject" input of a
    decider. It is quite reasonable to say we want to check that a given
    analyzer will actually halt on a given input. And thus a program being
    both of the category "analyzer" and "subject" is not a category error,
    as both are of the domain category "Program"

    4. The Contradiction
    The contradiction arises:
    - If H(D, D) = halts → D(D) loops
    - If H(D, D) = loops → D(D) halts

    This is interpreted in standard logic as proof that H cannot exist.

    WHich it does.


    However, from a semantic modeling perspective, this contradiction is the result of allowing an invalid construction—akin to a type error in logic— where role boundaries between levels of computation were not respected.

    And what was "Invalid" about the construction.

    The construction took ONE PROGRAM, and embedded it within another, and
    this composition operation is a fundamental operation allowed in
    programming theory.

    5. Conclusion
    Therefore, Linz's proof permits category errors by implicitly treating a program as both subject and analyzer. Such constructions violate the stratified semantics that prevent contradictions in typed or hierarchical logics. From this view, the proof demonstrates not the nonexistence of H
    in general, but the unsoundness of permitting self-referential analysis across abstraction boundaries.

    But it doesn't of any category actually present in the actual problem.

    Your attempt to make a distinction between "analyser" and "subject' is
    just an admittion that you theory can't handle the giving of a arbitrary program to a decider on program behavior.

    This means you concept of a program is less than Turing Complete.

    Sorry, your "proof" is debunked.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Alan Mackenzie@21:1/5 to Mr Flibble on Sun Apr 20 23:45:45 2025
    Mr Flibble <[email protected]> wrote:
    This is a step-by-step outline of Linz's classical proof of the undecidability of the Halting Problem, with commentary from the
    perspective of a category-theoretic critique.

    It's not even clear you understand what category-theoretic even means.

    This perspective suggests that certain steps in the proof involve
    category errors, where roles and types of entities are improperly mixed
    — for example, treating a program and a meta-level decider as interchangeable.

    You haven't said what you mean by a meta-level decider. It seems you
    mean a program.

    1. Assume a Halting Decider Exists Linz begins by assuming the
    existence of a function H(P, x) that can determine whether program P
    halts on input x.

    Category-Theoretic View: This assumption does not yet involve any category error. It describes a standard computational decider working over ordinary program-input pairs.

    Ordinary? The assumption of the existence of a halting decider is that
    it applies to ALL program/input pairs. Otherwise it's not interesting.

    2. Define a Contradictory Program D(P)
    Construct a new program D such that:
    if H(P, P) reports 'halts', then D(P) loops forever;
    if H(P, P) reports 'loops', then D(P) halts.

    Category-Theoretic View: This step begins to introduce potential category confusion.

    I don't think you understand what category confusion means. You haven't,
    as yet, defined any categories to get confused by.

    The function D is now being constructed specifically to act in
    contradiction to H's analysis of P on itself, blending the role of
    program and predicate. This blurs the boundary between object-level and meta-level semantics.

    There is no such boundary.

    3. Invoke D on Itself
    Evaluate D(D), which leads to the contradiction:
    - If H(D, D) says D halts → D(D) loops
    - If H(D, D) says D loops → D(D) halts

    Contradiction of what, exactly? The program runs successfully and
    either returns or fails to return as you indicate.

    Category-Theoretic View: Here the category error is fully exposed. The object D is passed into H and simultaneously defined in terms of H’s result on itself.

    There is no category error, here. The category is programs, and D is a program.

    This self-referential construct crosses semantic layers:

    If you read up on Turing machines a bit, you'll see there's no such thing
    as "self-reference" there.

    a program is both subject and evaluator.

    This is an essential facet of the halting problem, namely that a
    purported decider has to decide ANY program/input combination.

    In type-theoretic terms, this is akin to an ill-formed expression — a
    form of circular logic not grounded in a well-defined semantic domain.

    You haven't justified that at all, yet. There's nothing ill formed about
    the program D. It's just a program. As for the rest of that paragraph,
    you're just being pompous; it's not clear you understand what
    "well-defined semantic domain" means.

    4. Conclude H Cannot Exist
    The contradiction implies that no such universal halting decider H can exist.

    Category-Theoretic View: From this perspective, the contradiction arises
    not from an inherent limitation of deciders per se, ....

    Correction: PURPORTED deciders. The contradiction very much exposes
    their limitations.

    .... but from allowing semantically invalid constructs. D(D) is seen as undefined or outside the valid domain of discourse — not a legitimate program-input pair, but a malformed self-referential statement.

    D(D) is just an ordinary program invocation, perfectly well defined.
    From the set of all program/input combinations, this just happens to be
    one which the purported halting decider H gets wrong. There are many
    cases where a program has itself as its input. Many compilers are
    written in their own language and compile themselves, for example. A
    purported halting decider which couldn't decide if a development version
    of a compiler compiling itself is going to terminate wouldn't be all that useful.

    5. Interpretation
    The standard interpretation is that the Halting Problem is undecidable — there is no algorithm that can determine for all programs and inputs
    whether the program halts.

    Not at all. "Undecidable" means something else. The correct
    interpretation is that the termination status of a program/input pair is incomputable. That status is perfectly well defined.

    Category-Theoretic View: The undecidability arises only when the system permits semantically malformed constructions.

    Who said anything about undecidability? A purported halting decider
    always gives a definite result, by its definition. It's just the wrong
    result a lot of the time. Such a purported halting decider doesn't just
    get it's specially selected program D wrong, it gets lots of other program/input combinations wrong too.

    If the language of computation is refined to exclude category errors —
    such as programs that attempt to reference or reason about their own evaluation in this way — then within that well-formed subset, halting
    may be decidable or at least non-contradictory.

    You might think so, but it's not. Halting's been proven non computable
    in several different ways, the proof you've outlined being just one of
    them.

    --
    Alan Mackenzie (Nuremberg, Germany).

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Mikko@21:1/5 to Mr Flibble on Mon Apr 21 12:05:38 2025
    On 2025-04-20 20:57:30 +0000, Mr Flibble said:

    This is a step-by-step outline of Linz's classical proof of the undecidability of the Halting Problem, with commentary from the
    perspective of a category-theoretic critique. This perspective suggests
    that certain steps in the proof involve category errors, where roles and types of entities are improperly mixed — for example, treating a program and a meta-level decider as interchangeable.
    1. Assume a Halting Decider Exists
    Linz begins by assuming the existence of a function H(P, x) that can determine whether program P halts on input x.

    Category-Theoretic View: This assumption does not yet involve any category error. It describes a standard computational decider working over ordinary program-input pairs.
    2. Define a Contradictory Program D(P)
    Construct a new program D such that:
    if H(P, P) reports 'halts', then D(P) loops forever;
    if H(P, P) reports 'loops', then D(P) halts.

    Category-Theoretic View: This step begins to introduce potential category confusion. The function D is now being constructed specifically to act in contradiction to H's analysis of P on itself, blending the role of program and predicate.

    There is no category error in blending the role of program and predicate.
    Ther difference between program and predicate is not in their roles but
    in their nature. A program specifies a method. A predicate does not specify
    any method.

    --
    Mikko

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)