• Re: A new foundation for correct reasoning

    From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.theory on Thu Dec 4 01:53:41 2025
    From Newsgroup: comp.theory

    On 30/11/2025 09:37, Mikko wrote:
    The only meaning a GUID has is that it is different from any other GUID.

    Not strictly true, it encodes some knowledge about itself too--see GUID specification documents--some bits encode how it was generated such as
    when (to whatever extent that itself means anything).
    --
    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.theory on Thu Dec 4 01:57:37 2025
    From Newsgroup: comp.theory

    On 29/11/2025 18:00, olcott wrote:
    On 11/29/2025 4:22 AM, Mikko wrote:
    olcott kirjoitti 28.11.2025 klo 20.11:
    On 11/28/2025 11:32 AM, Alan Mackenzie wrote:
    [ Followup-To: set ]

    In comp.theory olcott <polcott333@gmail.com> wrote:

    [ .... ]

    individual means one.
    a group of individuals is not one individual

    yes it is.


    An ontology where the set of animals is an individual
    animal is incoherent.


    But one in which the set of animals is an individual set of things can
    be okay. Are you sure you've been studying?
    --
    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 olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math on Wed Dec 3 19:59:51 2025
    From Newsgroup: comp.theory

    On 12/3/2025 7:53 PM, Tristan Wibberley wrote:
    On 30/11/2025 09:37, Mikko wrote:
    The only meaning a GUID has is that it is different from any other GUID.

    Not strictly true, it encodes some knowledge about itself too--see GUID specification documents--some bits encode how it was generated such as
    when (to whatever extent that itself means anything).


    My use of GUID is to assign a unique identifier
    to a single sense meaning of a word. I think that
    I got this from the Cyc Project.

    https://en.wikipedia.org/wiki/Cyc
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math on Wed Dec 3 20:07:29 2025
    From Newsgroup: comp.theory

    On 12/3/2025 7:57 PM, Tristan Wibberley wrote:
    On 29/11/2025 18:00, olcott wrote:
    On 11/29/2025 4:22 AM, Mikko wrote:
    olcott kirjoitti 28.11.2025 klo 20.11:
    On 11/28/2025 11:32 AM, Alan Mackenzie wrote:
    [ Followup-To: set ]

    In comp.theory olcott <polcott333@gmail.com> wrote:

    [ .... ]

    individual means one.
    a group of individuals is not one individual

    yes it is.


    An ontology where the set of animals is an individual
    animal is incoherent.


    But one in which the set of animals is an individual set of things can
    be okay. Are you sure you've been studying?



    The seven virtues of simple type theory https://www.sciencedirect.com/science/article/pii/S157086830700081X

    The purpose of Russell's Simple Type Theory was to
    eliminate Russell's Paradox.
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math on Wed Dec 3 20:30:43 2025
    From Newsgroup: comp.theory

    On 12/3/2025 8:07 PM, olcott wrote:
    On 12/3/2025 7:57 PM, Tristan Wibberley wrote:
    On 29/11/2025 18:00, olcott wrote:
    On 11/29/2025 4:22 AM, Mikko wrote:
    olcott kirjoitti 28.11.2025 klo 20.11:
    On 11/28/2025 11:32 AM, Alan Mackenzie wrote:
    [ Followup-To: set ]

    In comp.theory olcott <polcott333@gmail.com> wrote:

    [ .... ]

    individual means one.
    a group of individuals is not one individual

    yes it is.


    An ontology where the set of animals is an individual
    animal is incoherent.


    But one in which the set of animals is an individual set of things can
    be okay. Are you sure you've been studying?



    The seven virtues of simple type theory https://www.sciencedirect.com/science/article/pii/S157086830700081X

    The purpose of Russell's Simple Type Theory was to
    eliminate Russell's Paradox.


    A direct application as a knowledge ontology inheritance hierarchy. https://claude.ai/share/968a8f74-1094-42d8-a262-f38e2dfaf6ad
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to sci.logic,comp.theory,sci.math,comp.ai.philosophy on Thu Dec 4 02:32:10 2025
    From Newsgroup: comp.theory

    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
     ?- G = not(provable(F, G)).
    and
     ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.


    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!
    --
    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 olcott@polcott333@gmail.com to sci.logic,comp.theory,sci.math,comp.ai.philosophy on Wed Dec 3 20:39:07 2025
    From Newsgroup: comp.theory

    On 12/3/2025 8:32 PM, Tristan Wibberley wrote:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
     ?- G = not(provable(F, G)).
    and
     ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.


    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!


    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    that totally and unequivocally rejects it
    as semantically unsound.

    ...We are therefore confronted with a proposition which
    asserts its own unprovability. 15 … (Gödel 1931:40-41)

    When we hypothesize that the above sentence does
    accurately sum up the essence of his theorem (it might not)
    then within this hypothesis his theorem has been refuted.
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory on Thu Dec 4 10:58:14 2025
    From Newsgroup: comp.theory

    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
     ?- G = not(provable(F, G)).
    and
     ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math on Thu Dec 4 08:06:48 2025
    From Newsgroup: comp.theory

    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.



    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    that totally and unequivocally rejects it
    as semantically unsound.

    ...We are therefore confronted with a proposition which
    asserts its own unprovability. 15 … (Gödel 1931:40-41)

    When we hypothesize that the above sentence does
    accurately sum up the essence of his theorem (it might not)
    then within this hypothesis his theorem has been refuted.
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math on Fri Dec 5 11:38:11 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can
    for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G = not(provable
    (F, G))" can be proven for some F and some G that do not contain cycles.
    The answer is that in the proof system of Prolog it cannot be.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.theory,comp.prolog on Fri Dec 5 10:33:17 2025
    From Newsgroup: comp.theory

    On 04/12/2025 08:58, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    I didn't read that as a use of prolog terminology. So I went and
    understood why I didn't bring such to mind. It's because a "value" isn't "assigned" to A by that (see my paragraph below for the most peculiar
    thing that I would concede if my life depended on it, but my life is
    more likely to depend on not conceding it).

    The only extent to which "?- A = B." for nonvar(B) has something like assignment of a value to A is that there's might be a program address (Dijkstra-oriented notion as one would perceive in a prolog debugger)
    which differs from its predecessor by instantiation alone including in
    ones consisting of just one unification. Whether that happens is
    contingent because it's operational and there's no effect in the
    language for that specific example. The statement doesn't have to end up
    with more than one program address (being both the first and the last
    address when permissible syntactic transformations are applied). I don't
    think it's reasonable to call that assignment of a value, not even for
    lots of very ordinary statements because it's merely contingently
    equivalent "in effect" to assignment in other languages and not part of
    the /meaning/ of the statement specifically; nor is it part of the
    meaning of =/2 generally.
    --
    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.theory,sci.logic,sci.math,comp.prolog on Fri Dec 5 10:49:08 2025
    From Newsgroup: comp.theory

    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose name has
    an existing meaning in my U-language, I quoted "let" and "suppose" as if
    I were using their names; I mean to use the things themselves, but they
    have to be quoted in some way to distinguish the objects of mathematical language from the verbs of ordinary language without introducing such incidental new names as I would otherwise need.
    --
    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 olcott@polcott333@gmail.com to comp.theory,comp.prolog,sci.logic,sci.math on Fri Dec 5 11:00:56 2025
    From Newsgroup: comp.theory

    On 12/5/2025 4:33 AM, Tristan Wibberley wrote:
    On 04/12/2025 08:58, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    I didn't read that as a use of prolog terminology. So I went and
    understood why I didn't bring such to mind. It's because a "value" isn't "assigned" to A by that (see my paragraph below for the most peculiar
    thing that I would concede if my life depended on it, but my life is
    more likely to depend on not conceding it).


    int main()
    {
    bool Sentence = !(Sentence); // Liar Paradox in C++
    return 0;
    }

    What value does Sentence have?

    Prolog proves that
    ?- G = not(provable(F, G)).
    Is stuck in an infinite loop thus never has a value.

    The only extent to which "?- A = B." for nonvar(B) has something like assignment of a value to A is that there's might be a program address (Dijkstra-oriented notion as one would perceive in a prolog debugger)
    which differs from its predecessor by instantiation alone including in
    ones consisting of just one unification. Whether that happens is
    contingent because it's operational and there's no effect in the
    language for that specific example. The statement doesn't have to end up
    with more than one program address (being both the first and the last
    address when permissible syntactic transformations are applied). I don't think it's reasonable to call that assignment of a value, not even for
    lots of very ordinary statements because it's merely contingently
    equivalent "in effect" to assignment in other languages and not part of
    the /meaning/ of the statement specifically; nor is it part of the
    meaning of =/2 generally.

    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.prolog on Fri Dec 5 11:05:21 2025
    From Newsgroup: comp.theory

    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.


    If an expression of language cannot be proven at
    all because it is semantically incoherent then it
    seems quite stupid to say that it cannot be proved
    in a specific formal system.

    I need a new quotation convention for referring to things whose name has
    an existing meaning in my U-language, I quoted "let" and "suppose" as if
    I were using their names; I mean to use the things themselves, but they
    have to be quoted in some way to distinguish the objects of mathematical language from the verbs of ordinary language without introducing such incidental new names as I would otherwise need.


    Halting Problem Proof Counter-Example is Isomorphic to the Liar Paradox https://www.researchgate.net/publication/398375553_Halting_Problem_Proof_Counter-Example_is_Isomorphic_to_the_Liar_Paradox


    Gödel's 1931 Incompleteness is also comprehensively covered.
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Fri Dec 5 11:43:41 2025
    From Newsgroup: comp.theory

    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can
    for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G = not(provable
    (F, G))" can be proven for some F and some G that do not contain cycles.
    The answer is that in the proof system of Prolog it cannot be.


    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Python@python@cccp.invalid to comp.theory,sci.logic,sci.math on Fri Dec 5 22:17:16 2025
    From Newsgroup: comp.theory

    Le 05/12/2025 à 18:00, olcott a écrit :
    ..
    int main()
    {
    bool Sentence = !(Sentence); // Liar Paradox in C++
    return 0;
    }

    You are diving into complete insanity, Olcott.

    Maybe God will forgive your sins because you are insane. Who knows?


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to sci.math,sci.logic,comp.theory on Fri Dec 5 16:24:04 2025
    From Newsgroup: comp.theory

    On 12/5/2025 4:17 PM, Python wrote:
    Le 05/12/2025 à 18:00, olcott a écrit :
    ..
    int main()
    {
       bool Sentence = !(Sentence); // Liar Paradox in C++
       return 0;
    }

    You are diving into complete insanity, Olcott.

    Maybe God will forgive your sins because you are insane. Who knows?



    In other words you don't give a rat's ass for
    truth at this crucial time when the lack of it
    can have horrific consequences.

    All that you have for rebuttal is ad homimen
    person attacks. If that is accurately construed
    as deceptions Revelations 21:8 may be bad for
    you (unless you repent).

    I care about truth because righteousness is
    anchored in truth.

    As far as righteousness goes I came up with
    *Love one another with as much empathy as possible*
    when a 2015 policy change at my church directly
    caused the suicide of more than 30 young people.
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Python@python@cccp.invalid to sci.math,sci.logic,comp.theory on Fri Dec 5 22:45:14 2025
    From Newsgroup: comp.theory

    Le 05/12/2025 à 23:24, olcott a écrit :
    On 12/5/2025 4:17 PM, Python wrote:
    Le 05/12/2025 à 18:00, olcott a écrit :
    ..
    int main()
    {
       bool Sentence = !(Sentence); // Liar Paradox in C++
       return 0;
    }

    You are diving into complete insanity, Olcott.

    Maybe God will forgive your sins because you are insane. Who knows?



    In other words you don't give a rat's ass for
    truth at this crucial time when the lack of it
    can have horrific consequences.

    All that you have for rebuttal is ad homimen
    person attacks. If that is accurately construed
    as deceptions Revelations 21:8 may be bad for
    you (unless you repent).

    I care about truth because righteousness is
    anchored in truth.

    As far as righteousness goes I came up with
    *Love one another with as much empathy as possible*
    when a 2015 policy change at my church directly
    caused the suicide of more than 30 young people.

    There is no righteousness on your side, only hypocrisy and bigotry in disguise.


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Ross Finlayson@ross.a.finlayson@gmail.com to sci.math,sci.logic,comp.theory on Fri Dec 5 15:16:34 2025
    From Newsgroup: comp.theory

    On 12/05/2025 02:45 PM, Python wrote:
    Le 05/12/2025 à 23:24, olcott a écrit :
    On 12/5/2025 4:17 PM, Python wrote:
    Le 05/12/2025 à 18:00, olcott a écrit :
    ..
    int main()
    {
    bool Sentence = !(Sentence); // Liar Paradox in C++
    return 0;
    }

    You are diving into complete insanity, Olcott.

    Maybe God will forgive your sins because you are insane. Who knows?



    In other words you don't give a rat's ass for
    truth at this crucial time when the lack of it
    can have horrific consequences.

    All that you have for rebuttal is ad homimen
    person attacks. If that is accurately construed
    as deceptions Revelations 21:8 may be bad for
    you (unless you repent).

    I care about truth because righteousness is
    anchored in truth.

    As far as righteousness goes I came up with
    *Love one another with as much empathy as possible*
    when a 2015 policy change at my church directly
    caused the suicide of more than 30 young people.

    There is no righteousness on your side, only hypocrisy and bigotry in disguise.



    It's invincible ignorance of the (sadly) usual enough
    the inductive impasse, yet a wider, fuller dialectic
    may make for analytical bridges first to establish
    continuity then infinity and all quite naturally.

    For paradox-free infinitary deductive reasoning, ....

    Or, a retro-finitist howler crank troll, ...,
    yet, one may aver they'd rather live in a world
    of reasoned rationality a natural reality.


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to sci.math,sci.logic,comp.theory on Fri Dec 5 17:45:14 2025
    From Newsgroup: comp.theory

    On 12/5/2025 5:16 PM, Ross Finlayson wrote:
    On 12/05/2025 02:45 PM, Python wrote:
    Le 05/12/2025 à 23:24, olcott a écrit :
    On 12/5/2025 4:17 PM, Python wrote:
    Le 05/12/2025 à 18:00, olcott a écrit :
    ..
    int main()
    {
       bool Sentence = !(Sentence); // Liar Paradox in C++
       return 0;
    }

    You are diving into complete insanity, Olcott.

    Maybe God will forgive your sins because you are insane. Who knows?



    In other words you don't give a rat's ass for
    truth at this crucial time when the lack of it
    can have horrific consequences.

    All that you have for rebuttal is ad homimen
    person attacks. If that is accurately construed
    as deceptions Revelations 21:8 may be bad for
    you (unless you repent).

    I care about truth because righteousness is
    anchored in truth.

    As far as righteousness goes I came up with
    *Love one another with as much empathy as possible*
    when a 2015 policy change at my church directly
    caused the suicide of more than 30 young people.

    There is no righteousness on your side, only hypocrisy and bigotry in
    disguise.



    It's invincible ignorance of the (sadly) usual enough
    the inductive impasse, yet a wider, fuller dialectic
    may make for analytical bridges first to establish
    continuity then infinity and all quite naturally.

    For paradox-free infinitary deductive reasoning, ....


    I think that would be inherently finite.
    I have been envisioning a tree of knowledge,
    more precisely a directed acyclic graph, thus
    allowing multiple inheritance of semantic properties.

    Or, a retro-finitist howler crank troll, ...,
    yet, one may aver they'd rather live in a world
    of reasoned rationality a natural reality.


    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.theory,sci.logic,sci.math on Sat Dec 6 08:24:56 2025
    From Newsgroup: comp.theory

    On 05/12/2025 17:05, olcott wrote:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.


    If an expression of language cannot be proven at
    all because it is semantically incoherent then it
    seems quite stupid to say that it cannot be proved
    in a specific formal system.

    See if you find my message in your newsreader in which I describe some definition extensions and systems related by them. There is critical
    matter of the precise meaning of "prove in a system" (mathematicians)
    and "derive of a system" (logicians). And the matter of whether your "F"
    refers to the system of which your definition of G is an axiom, to its
    related basic system of which your G is not, or to something else.
    --
    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 Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.lang.prolog on Sat Dec 6 11:30:35 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not. >>>>
    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can
    for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G = not(provable
    (F, G))" can be proven for some F and some G that do not contain cycles.
    The answer is that in the proof system of Prolog it cannot be.


    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    When "G = not(provable(F, G))." is used as a Prolog goal the
    applied semantics is what Prolog lauguage definition specifies.
    Does "semantically sound" mean something in that context?

    At least your Prolog interpretation finds it meaningful. It determines
    that the excution of that goal succeeds and assigns a value G but not
    to F.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math on Sat Dec 6 06:08:51 2025
    From Newsgroup: comp.theory

    On 12/6/2025 2:24 AM, Tristan Wibberley wrote:
    On 05/12/2025 17:05, olcott wrote:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.


    If an expression of language cannot be proven at
    all because it is semantically incoherent then it
    seems quite stupid to say that it cannot be proved
    in a specific formal system.

    See if you find my message in your newsreader in which I describe some definition extensions and systems related by them. There is critical
    matter of the precise meaning of "prove in a system" (mathematicians)
    and "derive of a system" (logicians). And the matter of whether your "F" refers to the system of which your definition of G is an axiom, to its related basic system of which your G is not, or to something else.



    I just made the system have a large enough scope
    such that unprovable in the system means not a member
    of the body of general knowledge.

    https://www.researchgate.net/publication/398375553_Halting_Problem_Proof_Counter-Example_is_Isomorphic_to_the_Liar_Paradox

    I refute the halting problem then I refute Gödel's
    1931 Incompleteness.
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Sat Dec 6 06:50:22 2025
    From Newsgroup: comp.theory

    On 12/6/2025 3:30 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not. >>>>>
    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = not(provable( >>> F, G))" can be proven for some F and some G. The answer is that it can
    for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G = not(provable >>> (F, G))" can be proven for some F and some G that do not contain cycles. >>> The answer is that in the proof system of Prolog it cannot be.


    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    When "G = not(provable(F, G))." is used as a Prolog goal the
    applied semantics is what Prolog lauguage definition specifies.
    Does "semantically sound" mean something in that context?

    At least your Prolog interpretation finds it meaningful. It determines
    that the excution of that goal succeeds and assigns a value G but not
    to F.


    Is this sentence true or false:
    "This sentence is not true"
    It is not semantically sound.

    Is this sentence true or false:
    "This sentence cannot be proved"
    It is not semantically sound.
    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.theory,sci.logic,sci.math on Sat Dec 6 13:03:10 2025
    From Newsgroup: comp.theory

    On 06/12/2025 12:08, olcott wrote:
    On 12/6/2025 2:24 AM, Tristan Wibberley wrote:

    See if you find my message in your newsreader in which I describe some
    definition extensions and systems related by them. There is critical
    matter of the precise meaning of "prove in a system" (mathematicians)
    and "derive of a system" (logicians). And the matter of whether your "F"
    refers to the system of which your definition of G is an axiom, to its
    related basic system of which your G is not, or to something else.



    I just made the system have a large enough scope
    such that unprovable in the system means not a member
    of the body of general knowledge.

    I think you're talking about the logicians "derivable of a system" (ie,
    "is among the theorems of a formal system").

    I think you should read my more detailed message about definition
    extension. I'm super sleepy so I can't make myself find the message id,
    maybe later.
    --
    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 olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math on Sat Dec 6 07:14:30 2025
    From Newsgroup: comp.theory

    On 12/6/2025 7:03 AM, Tristan Wibberley wrote:
    On 06/12/2025 12:08, olcott wrote:
    On 12/6/2025 2:24 AM, Tristan Wibberley wrote:

    See if you find my message in your newsreader in which I describe some
    definition extensions and systems related by them. There is critical
    matter of the precise meaning of "prove in a system" (mathematicians)
    and "derive of a system" (logicians). And the matter of whether your "F" >>> refers to the system of which your definition of G is an axiom, to its
    related basic system of which your G is not, or to something else.



    I just made the system have a large enough scope
    such that unprovable in the system means not a member
    of the body of general knowledge.

    I think you're talking about the logicians "derivable of a system" (ie,
    "is among the theorems of a formal system").


    Semantically entailed on the basis of a complete
    finite set of basic facts of general knowledge
    encoded in formalized natural language.

    This last part is crucial because then provable
    means true and unprovable means not a member of
    the body of general knowledge.

    You never ever get true and unprovable.

    I think you should read my more detailed message about definition
    extension. I'm super sleepy so I can't make myself find the message id,
    maybe later.


    --
    Copyright 2025 Olcott

    My 28 year goal has been to make
    "true on the basis of meaning" computable.

    This required establishing a new foundation
    for correct reasoning.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.lang.prolog on Sun Dec 7 13:02:57 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 6.12.2025 klo 14.50:
    On 12/6/2025 3:30 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does >>>>>>>> not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can >>>> for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G =
    not(provable
    (F, G))" can be proven for some F and some G that do not contain
    cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    When "G = not(provable(F, G))." is used as a Prolog goal the
    applied semantics is what Prolog lauguage definition specifies.
    Does "semantically sound" mean something in that context?

    At least your Prolog interpretation finds it meaningful. It determines
    that the excution of that goal succeeds and assigns a value G but not
    to F.

    Is this sentence true or false:
    "This sentence is not true"
    It is not semantically sound.

    Formal systems we usually use have no expression for "this".
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.lang.prolog on Mon Dec 8 11:13:00 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not. >>>>
    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can
    for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G = not(provable
    (F, G))" can be proven for some F and some G that do not contain cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.prolog on Mon Dec 8 11:18:36 2025
    From Newsgroup: comp.theory

    Tristan Wibberley kirjoitti 5.12.2025 klo 12.49:

    I need a new quotation convention for referring to things whose name has
    an existing meaning in my U-language,
    In ASCII text you can use quotes, apostrophes, and grave accents. If you
    need more quotes you can use any characters you don't need for other
    purposes.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Mon Dec 8 13:09:41 2025
    From Newsgroup: comp.theory

    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does not. >>>>>
    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = not(provable( >>> F, G))" can be proven for some F and some G. The answer is that it can
    for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G = not(provable >>> (F, G))" can be proven for some F and some G that do not contain cycles. >>> The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?


    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning" computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.prolog on Mon Dec 8 13:12:43 2025
    From Newsgroup: comp.theory

    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose name has
    an existing meaning in my U-language, I quoted "let" and "suppose" as if
    I were using their names; I mean to use the things themselves, but they
    have to be quoted in some way to distinguish the objects of mathematical language from the verbs of ordinary language without introducing such incidental new names as I would otherwise need.


    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning" computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Mon Dec 8 13:49:38 2025
    From Newsgroup: comp.theory

    On 12/7/2025 5:02 AM, Mikko wrote:
    olcott kirjoitti 6.12.2025 klo 14.50:
    On 12/6/2025 3:30 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does >>>>>>>>> not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can >>>>> for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G =
    not(provable
    (F, G))" can be proven for some F and some G that do not contain
    cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    When "G = not(provable(F, G))." is used as a Prolog goal the
    applied semantics is what Prolog lauguage definition specifies.
    Does "semantically sound" mean something in that context?

    At least your Prolog interpretation finds it meaningful. It determines
    that the excution of that goal succeeds and assigns a value G but not
    to F.

    Is this sentence true or false:
    "This sentence is not true"
    It is not semantically sound.

    Formal systems we usually use have no expression for "this".


    Yes that is the why I created Minimal Type Theory.
    There is no reason why encoding "this" should
    require dozens of different formulas.
    LP := ~True(LP) // says: "this sentence says itself is not true"
    G := ~Provable(G) // says: "this sentence says itself is not provable".
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning" computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.lang.prolog on Wed Dec 10 12:04:06 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does >>>>>>>> not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can >>>> for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G =
    not(provable
    (F, G))" can be proven for some F and some G that do not contain
    cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.prolog on Wed Dec 10 12:10:48 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose name has
    an existing meaning in my U-language, I quoted "let" and "suppose" as if
    I were using their names; I mean to use the things themselves, but they
    have to be quoted in some way to distinguish the objects of mathematical
    language from the verbs of ordinary language without introducing such
    incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be interpreted as a definition nor a single example of defintion that is
    a semantic tautology. Perhaps it is possible if you define "semantic taultology" so that it needn't be anything like a tautology.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Wed Dec 10 08:10:58 2025
    From Newsgroup: comp.theory

    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter does >>>>>>>>> not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that it can >>>>> for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G =
    not(provable
    (F, G))" can be proven for some F and some G that do not contain
    cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.


    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate unify_with_occurs_check/2 is used explicitly instead of the normal
    unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable. END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Python@python@cccp.invalid to comp.theory,sci.logic,sci.math,comp.lang.prolog on Wed Dec 10 15:01:05 2025
    From Newsgroup: comp.theory

    Le 10/12/2025 à 15:11, olcott a écrit :
    ..
    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.


    unify_with_occurs_check(G, not(provable(F, G))). returning false does NOT prove that
    G = not(provable(F, G)) “gets stuck in infinite recursion.”

    All it proves is this:

    With finite Prolog terms, you cannot unify a variable with a structure
    that contains that same variable — the occurs-check rejects cyclic self-reference.

    So the failure of unification means only:

    Prolog refuses to build an illegal self-referential term,

    not that the logical statement or predicate would “infinitely
    recurse.”

    This is the usual Olcott confusion:
    he mistakes a language-specific operational failure (Prolog term
    construction) for a deep theorem about provability or self-reference.

    Gödel diagonalization never uses this kind of naive unification, so the Prolog failure is irrelevant to logic.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to sci.math,sci.logic,comp.theory on Wed Dec 10 10:14:10 2025
    From Newsgroup: comp.theory

    On 12/10/2025 9:01 AM, Python wrote:
    Le 10/12/2025 à 15:11, olcott a écrit :
    ..
    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.


    unify_with_occurs_check(G, not(provable(F, G))). returning false does
    NOT prove that
    G = not(provable(F, G)) “gets stuck in infinite recursion.”

    All it proves is this:

    With finite Prolog terms, you cannot unify a variable with a structure
    that contains that same variable — the occurs-check rejects cyclic self- reference.


    cycle means cycle in the directed graph as shown below.

    So the failure of unification means only:

    Prolog refuses to build an illegal self-referential term,

    not that the logical statement or predicate would “infinitely recurse.”


    "Prolog implementations usually omit the occurs
    check for reasons of efficiency, which can lead
    to circular data structures and looping."
    as shown in the image of the directed graph with a cycle

    https://en.wikipedia.org/wiki/Occurs_check#Rational_tree_unification

    The reason why I know these deeper details is that I
    created Olcott's Minimal Type Theory to translate
    formal expressions into the directed graph of their
    evaluation sequence.

    This is the usual Olcott confusion:
    he mistakes a language-specific operational failure (Prolog term construction) for a deep theorem about provability or self-reference.

    Gödel diagonalization never uses this kind of naive unification, so the Prolog failure is irrelevant to logic.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.prolog on Wed Dec 10 10:29:12 2025
    From Newsgroup: comp.theory

    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose name has >>> an existing meaning in my U-language, I quoted "let" and "suppose" as if >>> I were using their names; I mean to use the things themselves, but they
    have to be quoted in some way to distinguish the objects of mathematical >>> language from the verbs of ordinary language without introducing such
    incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be interpreted as a definition nor a single example of defintion that is
    a semantic tautology. Perhaps it is possible if you define "semantic taultology" so that it needn't be anything like a tautology.


    From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.theory,sci.logic,sci.math,comp.lang.prolog on Wed Dec 10 18:10:12 2025
    From Newsgroup: comp.theory

    On 10/12/2025 14:10, olcott wrote:

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    ...

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate unify_with_occurs_check/2 is used explicitly instead of the normal unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable. END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg: Springer-Verlag.


    You're a veritable treasure-trove.
    --
    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 olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Wed Dec 10 14:01:54 2025
    From Newsgroup: comp.theory

    On 12/10/2025 12:10 PM, Tristan Wibberley wrote:
    On 10/12/2025 14:10, olcott wrote:

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    ...

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate
    unify_with_occurs_check/2 is used explicitly instead of the normal
    unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable.
    END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.


    You're a veritable treasure-trove.


    You seem to have proved to know this material quite well.
    Of people that visit this forum you seem to be in the top 10%.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.prolog on Thu Dec 11 10:40:07 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 10.12.2025 klo 18.29:
    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose name
    has
    an existing meaning in my U-language, I quoted "let" and "suppose"
    as if
    I were using their names; I mean to use the things themselves, but they >>>> have to be quoted in some way to distinguish the objects of
    mathematical
    language from the verbs of ordinary language without introducing such
    incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be
    interpreted as a definition nor a single example of defintion that is
    a semantic tautology. Perhaps it is possible if you define "semantic
    taultology" so that it needn't be anything like a tautology.

    From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"

    Yes, that is an example of your inability mentioned above.

    Your example not define anything and therefore is neither an exmaple
    of a semantic tautology that can be interpreted as a defintion nor an
    axample of a defintion that is a semantic tautology.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.lang.prolog on Thu Dec 11 10:42:16 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 10.12.2025 klo 16.10:
    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter >>>>>>>>>> does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means. >>>>>>
    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that it >>>>>> can
    for every F and for (at least) one G, which is not(provable(G)).

    The second query can be regarded as a question whether "G =
    not(provable
    (F, G))" can be proven for some F and some G that do not contain
    cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate unify_with_occurs_check/2 is used explicitly instead of the normal unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable. END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg: Springer-Verlag.

    Thank you for the confirmation of my explanation of your error.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.prolog on Thu Dec 11 08:15:22 2025
    From Newsgroup: comp.theory

    On 12/11/2025 2:40 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 18.29:
    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose
    name has
    an existing meaning in my U-language, I quoted "let" and "suppose"
    as if
    I were using their names; I mean to use the things themselves, but
    they
    have to be quoted in some way to distinguish the objects of
    mathematical
    language from the verbs of ordinary language without introducing such >>>>> incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be
    interpreted as a definition nor a single example of defintion that is
    a semantic tautology. Perhaps it is possible if you define "semantic
    taultology" so that it needn't be anything like a tautology.

     From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"

    Yes, that is an example of your inability mentioned above.

    Your example not define anything and therefore is neither an exmaple
    of a semantic tautology that can be interpreted as a defintion nor an
    axample of a defintion that is a semantic tautology.


    Kurt Gödel in his 1944 Russell's mathematical logic gave the following definition of the "theory of simple types" in a footnote:

    By the theory of simple types I mean the doctrine which says that the
    objects of thought (or, in another interpretation, the symbolic
    expressions) are divided into types, namely: individuals, properties of individuals, relations between individuals, properties of such
    relations, etc. (with a similar hierarchy for extensions), and that
    sentences of the form: " a has the property φ ", " b bears the relation
    R to c ", etc. are meaningless, if a, b, c, R, φ are not of types
    fitting together.

    The finite string "cats" is stipulated to have
    the type_of_relation <are> to the finite string
    "animals".
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Thu Dec 11 08:17:40 2025
    From Newsgroup: comp.theory

    On 12/11/2025 2:42 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:
    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))).
    are different. The former assigns a value to G, the latter >>>>>>>>>>> does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means. >>>>>>>
    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that >>>>>>> it can
    for every F and for (at least) one G, which is not(provable(G)). >>>>>>>
    The second query can be regarded as a question whether "G =
    not(provable
    (F, G))" can be proven for some F and some G that do not contain >>>>>>> cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate
    unify_with_occurs_check/2 is used explicitly instead of the normal
    unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable.
    END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.

    Thank you for the confirmation of my explanation of your error.


    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    As I say non-terminating, thus never resolves to a truth value.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Tristan Wibberley@tristan.wibberley+netnews2@alumni.manchester.ac.uk to comp.theory,sci.logic,sci.math,comp.lang.prolog on Thu Dec 11 23:28:16 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 10.12.2025 klo 16.10:

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.

    On 11/12/2025 14:17, olcott wrote:

    As I say non-terminating, thus never resolves to a truth value.


    $ export S='G=foo(G).'; gprolog <<<"$S"; swipl <<<"$S"
    GNU Prolog 1.4.5 (64 bits)
    Compiled Feb 23 2020, 20:14:50 with gcc
    By Daniel Diaz
    Copyright (C) 1999-2020 Daniel Diaz
    | ?-

    cannot display cyclic term for G

    yes
    | ?-
    Welcome to SWI-Prolog (threaded, 64 bits, version 8.4.2)
    SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
    Please run ?- license. for legal details.

    For online help and background, visit https://www.swi-prolog.org
    For built-in help, use ?- help(Topic). or ?- apropos(Word).

    G = foo(G).


    % halt
    --
    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 olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Thu Dec 11 17:49:10 2025
    From Newsgroup: comp.theory

    On 12/11/2025 5:28 PM, Tristan Wibberley wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.

    On 11/12/2025 14:17, olcott wrote:

    As I say non-terminating, thus never resolves to a truth value.


    $ export S='G=foo(G).'; gprolog <<<"$S"; swipl <<<"$S"
    GNU Prolog 1.4.5 (64 bits)
    Compiled Feb 23 2020, 20:14:50 with gcc
    By Daniel Diaz
    Copyright (C) 1999-2020 Daniel Diaz
    | ?-

    cannot display cyclic term for G

    yes
    | ?-
    Welcome to SWI-Prolog (threaded, 64 bits, version 8.4.2)
    SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
    Please run ?- license. for legal details.

    For online help and background, visit https://www.swi-prolog.org
    For built-in help, use ?- help(Topic). or ?- apropos(Word).

    G = foo(G).


    % halt


    Run SWI-Prolog
    paste "G = not(provable(F, G))."
    at the ?- prompt ending up this:
    ?- G = not(provable(F, G)).

    Then you hit return and get this:
    G = not(provable(F, G)).

    Then you past this: "unify_with_occurs_check(G, not(provable(F, G)))."
    at the next ?- prompt and get this
    ?- unify_with_occurs_check(G, not(provable(F, G))).

    You hit return and get this:
    false

    *It all ends up looking like this*
    *It all ends up looking like this*
    *It all ends up looking like this*

    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Damon@Richard@Damon-Family.org to comp.theory,sci.logic,sci.math,comp.lang.prolog on Thu Dec 11 19:52:56 2025
    From Newsgroup: comp.theory

    On 12/11/25 6:49 PM, olcott wrote:
    On 12/11/2025 5:28 PM, Tristan Wibberley wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.

    On 11/12/2025 14:17, olcott wrote:

    As I say non-terminating, thus never resolves to a truth value.


    $ export S='G=foo(G).'; gprolog <<<"$S"; swipl <<<"$S"
    GNU Prolog 1.4.5 (64 bits)
    Compiled Feb 23 2020, 20:14:50 with gcc
    By Daniel Diaz
    Copyright (C) 1999-2020 Daniel Diaz
    | ?-

    cannot display cyclic term for G

    yes
    | ?-
    Welcome to SWI-Prolog (threaded, 64 bits, version 8.4.2)
    SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software.
    Please run ?- license. for legal details.

    For online help and background, visit https://www.swi-prolog.org
    For built-in help, use ?- help(Topic). or ?- apropos(Word).

    G = foo(G).


    % halt


    Run SWI-Prolog
    paste "G = not(provable(F, G))."
    at the ?- prompt ending up this:
    ?- G = not(provable(F, G)).

    Then you hit return and get this:
    G = not(provable(F, G)).

    Then you past this: "unify_with_occurs_check(G, not(provable(F, G)))."
    at the next ?- prompt and get this
    ?- unify_with_occurs_check(G, not(provable(F, G))).

    You hit return and get this:
    false

    *It all ends up looking like this*
    *It all ends up looking like this*
    *It all ends up looking like this*

    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.



    Which, since that is NOT the definition of G, only a derived meaning,
    says you are just showing your reckless stupidity and total ignorance of
    what you are talking about.

    Part of the problem is that you are trying to express in Prolog, a
    statement in a logic system more complicated then what Prolog can handle.

    For instamce. Try righting the non-pathological sentence that P is
    defined to be the tautology that P is true if and only if P is true.

    Since that definition of P refers to the statement of P itself, you will
    also get a unify_with_occurs_check error there too.

    Prolog just can't handle that form of statement.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.prolog on Fri Dec 12 10:46:39 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 11.12.2025 klo 16.15:
    On 12/11/2025 2:40 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 18.29:
    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition
    extensions) that you need to formalise the mathematicians notion of >>>>>> "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose
    name has
    an existing meaning in my U-language, I quoted "let" and "suppose" >>>>>> as if
    I were using their names; I mean to use the things themselves, but >>>>>> they
    have to be quoted in some way to distinguish the objects of
    mathematical
    language from the verbs of ordinary language without introducing such >>>>>> incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be
    interpreted as a definition nor a single example of defintion that is
    a semantic tautology. Perhaps it is possible if you define "semantic
    taultology" so that it needn't be anything like a tautology.

     From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"

    Yes, that is an example of your inability mentioned above.

    Your example not define anything and therefore is neither an exmaple
    of a semantic tautology that can be interpreted as a defintion nor an
    axample of a defintion that is a semantic tautology.

    Kurt Gödel in his 1944 Russell's mathematical logic gave the following definition of the "theory of simple types" in a footnote:

    By the theory of simple types I mean the doctrine which says that the objects of thought (or, in another interpretation, the symbolic
    expressions) are divided into types, namely: individuals, properties of individuals, relations between individuals, properties of such
    relations, etc. (with a similar hierarchy for extensions), and that sentences of the form: " a has the property φ ", " b bears the relation
    R to c ", etc. are meaningless, if a, b, c, R, φ are not of types
    fitting together.

    The finite string "cats" is stipulated to have
    the type_of_relation <are> to the finite string
    "animals".

    Perhaps, but any definition of "cat" must exlude some animals as
    non-cats. Yor above example of semantic tautology doesn't do that.

    Note that the meaning of "cat" varies from 'Felis catus L.' to 'Felidae
    Fischer von Waldheim 1817' and even to non-animals.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.lang.prolog on Fri Dec 12 10:50:14 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 11.12.2025 klo 16.17:
    On 12/11/2025 2:42 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:
    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))). >>>>>>>>>>>> are different. The former assigns a value to G, the latter >>>>>>>>>>>> does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable means. >>>>>>>>
    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that >>>>>>>> it can
    for every F and for (at least) one G, which is not(provable(G)). >>>>>>>>
    The second query can be regarded as a question whether "G =
    not(provable
    (F, G))" can be proven for some F and some G that do not contain >>>>>>>> cycles.
    The answer is that in the proof system of Prolog it cannot be.

    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate
    unify_with_occurs_check/2 is used explicitly instead of the normal
    unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable.
    END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.

    Thank you for the confirmation of my explanation of your error.

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    As I say non-terminating, thus never resolves to a truth value.

    As according to Prolog rules foo(Y) isn't a truth value for any Y
    the above is obviously just an attempt to deive with a distraction.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.prolog on Fri Dec 12 08:16:52 2025
    From Newsgroup: comp.theory

    On 12/12/2025 2:46 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.15:
    On 12/11/2025 2:40 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 18.29:
    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition >>>>>>> extensions) that you need to formalise the mathematicians notion of >>>>>>> "proof /in/ [system]" vis-a-vis "let" and its stronger sibling
    "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose >>>>>>> name has
    an existing meaning in my U-language, I quoted "let" and
    "suppose" as if
    I were using their names; I mean to use the things themselves,
    but they
    have to be quoted in some way to distinguish the objects of
    mathematical
    language from the verbs of ordinary language without introducing >>>>>>> such
    incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be >>>>> interpreted as a definition nor a single example of defintion that is >>>>> a semantic tautology. Perhaps it is possible if you define "semantic >>>>> taultology" so that it needn't be anything like a tautology.

     From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"

    Yes, that is an example of your inability mentioned above.

    Your example not define anything and therefore is neither an exmaple
    of a semantic tautology that can be interpreted as a defintion nor an
    axample of a defintion that is a semantic tautology.

    Kurt Gödel in his 1944 Russell's mathematical logic gave the following
    definition of the "theory of simple types" in a footnote:

    By the theory of simple types I mean the doctrine which says that the
    objects of thought (or, in another interpretation, the symbolic
    expressions) are divided into types, namely: individuals, properties
    of individuals, relations between individuals, properties of such
    relations, etc. (with a similar hierarchy for extensions), and that
    sentences of the form: " a has the property φ ", " b bears the
    relation R to c ", etc. are meaningless, if a, b, c, R, φ are not of
    types fitting together.

    The finite string "cats" is stipulated to have
    the type_of_relation <are> to the finite string
    "animals".

    Perhaps, but any definition of "cat" must exlude some animals as
    non-cats. Yor above example of semantic tautology doesn't do that.

    Note that the meaning of "cat" varies from 'Felis catus L.' to 'Felidae Fischer von Waldheim 1817' and even to non-animals.


    https://en.wikipedia.org/wiki/Cat
    It is a member of a set specification between GUIDs
    in a (taxonomy) type hierarchy.

    A cat (short for caterpillar brand) can also be Earth
    moving equipment. https://www.caterpillar.com/
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.lang.prolog on Fri Dec 12 08:19:10 2025
    From Newsgroup: comp.theory

    On 12/12/2025 2:50 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.17:
    On 12/11/2025 2:42 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:
    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))). >>>>>>>>>>>>> are different. The former assigns a value to G, the latter >>>>>>>>>>>>> does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable >>>>>>>>>>> means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G =
    not(provable(
    F, G))" can be proven for some F and some G. The answer is that >>>>>>>>> it can
    for every F and for (at least) one G, which is not(provable(G)). >>>>>>>>>
    The second query can be regarded as a question whether "G = >>>>>>>>> not(provable
    (F, G))" can be proven for some F and some G that do not
    contain cycles.
    The answer is that in the proof system of Prolog it cannot be. >>>>>>>>
    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate
    unify_with_occurs_check/2 is used explicitly instead of the normal
    unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable.
    END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.

    Thank you for the confirmation of my explanation of your error.

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    As I say non-terminating, thus never resolves to a truth value.

    As according to Prolog rules foo(Y) isn't a truth value for any Y
    the above is obviously just an attempt to deive with a distraction.


    That was a quote from the most definitive source
    for the Prolog Language.

    Prolog only has Facts and Rules thus the only
    derivation is to a truth value.
    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Damon@Richard@Damon-Family.org to comp.theory,sci.logic,sci.math,comp.prolog on Fri Dec 12 09:22:38 2025
    From Newsgroup: comp.theory

    On 12/12/25 9:16 AM, olcott wrote:
    On 12/12/2025 2:46 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.15:
    On 12/11/2025 2:40 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 18.29:
    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition >>>>>>>> extensions) that you need to formalise the mathematicians notion of >>>>>>>> "proof /in/ [system]" vis-a-vis "let" and its stronger sibling >>>>>>>> "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose >>>>>>>> name has
    an existing meaning in my U-language, I quoted "let" and
    "suppose" as if
    I were using their names; I mean to use the things themselves, >>>>>>>> but they
    have to be quoted in some way to distinguish the objects of
    mathematical
    language from the verbs of ordinary language without introducing >>>>>>>> such
    incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be >>>>>> interpreted as a definition nor a single example of defintion that is >>>>>> a semantic tautology. Perhaps it is possible if you define "semantic >>>>>> taultology" so that it needn't be anything like a tautology.

     From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"

    Yes, that is an example of your inability mentioned above.

    Your example not define anything and therefore is neither an exmaple
    of a semantic tautology that can be interpreted as a defintion nor an
    axample of a defintion that is a semantic tautology.

    Kurt Gödel in his 1944 Russell's mathematical logic gave the
    following definition of the "theory of simple types" in a footnote:

    By the theory of simple types I mean the doctrine which says that the
    objects of thought (or, in another interpretation, the symbolic
    expressions) are divided into types, namely: individuals, properties
    of individuals, relations between individuals, properties of such
    relations, etc. (with a similar hierarchy for extensions), and that
    sentences of the form: " a has the property φ ", " b bears the
    relation R to c ", etc. are meaningless, if a, b, c, R, φ are not of
    types fitting together.

    The finite string "cats" is stipulated to have
    the type_of_relation <are> to the finite string
    "animals".

    Perhaps, but any definition of "cat" must exlude some animals as
    non-cats. Yor above example of semantic tautology doesn't do that.

    Note that the meaning of "cat" varies from 'Felis catus L.' to 'Felidae
    Fischer von Waldheim 1817' and even to non-animals.


    https://en.wikipedia.org/wiki/Cat
    It is a member of a set specification between GUIDs
    in a (taxonomy) type hierarchy.

    A cat (short for caterpillar brand) can also be Earth
    moving equipment. https://www.caterpillar.com/


    But the problem is that in the real Natural language of English, some
    words don't have a finite number of meanings, but represent sprectrums
    of meaning (or multiple meanings at once), and thus GUIDs can't be used
    to resolve the issue.

    Like that word "big" you couldn't show the complete set of GUIDs that
    could be used with it.

    All you are showing is that you are incapable of learning new details
    about where you are wrong with your analysis.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Damon@Richard@Damon-Family.org to comp.theory,sci.logic,sci.math,comp.lang.prolog on Fri Dec 12 09:24:16 2025
    From Newsgroup: comp.theory

    On 12/12/25 9:19 AM, olcott wrote:
    On 12/12/2025 2:50 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.17:
    On 12/11/2025 2:42 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:
    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))). >>>>>>>>>>>>>> are different. The former assigns a value to G, the latter >>>>>>>>>>>>>> does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable >>>>>>>>>>>> means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = >>>>>>>>>> not(provable(
    F, G))" can be proven for some F and some G. The answer is >>>>>>>>>> that it can
    for every F and for (at least) one G, which is not(provable(G)). >>>>>>>>>>
    The second query can be regarded as a question whether "G = >>>>>>>>>> not(provable
    (F, G))" can be proven for some F and some G that do not
    contain cycles.
    The answer is that in the proof system of Prolog it cannot be. >>>>>>>>>
    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate
    unify_with_occurs_check/2 is used explicitly instead of the normal
    unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable.
    END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.

    Thank you for the confirmation of my explanation of your error.

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    As I say non-terminating, thus never resolves to a truth value.

    As according to Prolog rules foo(Y) isn't a truth value for any Y
    the above is obviously just an attempt to deive with a distraction.


    That was a quote from the most definitive source
    for the Prolog Language.

    Prolog only has Facts and Rules thus the only
    derivation is to a truth value.


    But Prolog also can't handle full first order logic, so isn't a valid
    model of such a logic system.

    Of course, it seems it handles a superset of the logic you can handle,
    so you think it is great, but that just shows your own problem.
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.lang.prolog on Sat Dec 13 12:19:37 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 12.12.2025 klo 16.19:
    On 12/12/2025 2:50 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.17:
    On 12/11/2025 2:42 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:
    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))). >>>>>>>>>>>>>> are different. The former assigns a value to G, the latter >>>>>>>>>>>>>> does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable >>>>>>>>>>>> means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = >>>>>>>>>> not(provable(
    F, G))" can be proven for some F and some G. The answer is >>>>>>>>>> that it can
    for every F and for (at least) one G, which is not(provable(G)). >>>>>>>>>>
    The second query can be regarded as a question whether "G = >>>>>>>>>> not(provable
    (F, G))" can be proven for some F and some G that do not
    contain cycles.
    The answer is that in the proof system of Prolog it cannot be. >>>>>>>>>
    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G))
    to a truth value true. When doing so it evaluated each side of =
    to a value that is not a truth value.

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated
    subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that
    wherever an occurs check might be applicable the built-in predicate
    unify_with_occurs_check/2 is used explicitly instead of the normal
    unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable.
    END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.

    Thank you for the confirmation of my explanation of your error.

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    As I say non-terminating, thus never resolves to a truth value.

    As according to Prolog rules foo(Y) isn't a truth value for any Y
    the above is obviously just an attempt to deive with a distraction.

    That was a quote from the most definitive source
    for the Prolog Language.

    As I already said, that source agrees with what I said above.

    Prolog only has Facts and Rules thus the only
    derivation is to a truth value.

    Not true. Prolog also has term expressions that can be used in facts
    and rules. In particular, in the goal G = not(provable(F, G)) the
    symbol G is a term expression and provable(F, G) is another term
    expression. A goal is evaluated to a truth value but if that truth
    value is true the values of variables (if there are any) are also
    evalueted to values that are not truth values. In the example
    ?- G = not(provable(F, G)).
    the answer
    G = not(provable(F, G)).
    mans that the Prolog implementation evaluated the query to true and
    the variable G to the expression not(provable(F, G)). The quoted
    text says that another Prolog implementation may interprethe the
    same query differently.

    The quoted text does not stay unify_with_occurs_check/2 would reject
    anything as "semntically unsound". First of all, it nas no consequences
    unless it is used. Secondly, if the result of unification would be
    that at a cycle be created then it simpy evaluates to false just
    like unify_with_occurs_check(1, 2) evaluates to false.
    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Mikko@mikko.levanto@iki.fi to comp.theory,sci.logic,sci.math,comp.prolog on Sat Dec 13 12:42:45 2025
    From Newsgroup: comp.theory

    olcott kirjoitti 12.12.2025 klo 16.16:
    On 12/12/2025 2:46 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.15:
    On 12/11/2025 2:40 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 18.29:
    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition >>>>>>>> extensions) that you need to formalise the mathematicians notion of >>>>>>>> "proof /in/ [system]" vis-a-vis "let" and its stronger sibling >>>>>>>> "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose >>>>>>>> name has
    an existing meaning in my U-language, I quoted "let" and
    "suppose" as if
    I were using their names; I mean to use the things themselves, >>>>>>>> but they
    have to be quoted in some way to distinguish the objects of
    mathematical
    language from the verbs of ordinary language without introducing >>>>>>>> such
    incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that can be >>>>>> interpreted as a definition nor a single example of defintion that is >>>>>> a semantic tautology. Perhaps it is possible if you define "semantic >>>>>> taultology" so that it needn't be anything like a tautology.

     From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"

    Yes, that is an example of your inability mentioned above.

    Your example not define anything and therefore is neither an exmaple
    of a semantic tautology that can be interpreted as a defintion nor an
    axample of a defintion that is a semantic tautology.

    Kurt Gödel in his 1944 Russell's mathematical logic gave the
    following definition of the "theory of simple types" in a footnote:

    By the theory of simple types I mean the doctrine which says that the
    objects of thought (or, in another interpretation, the symbolic
    expressions) are divided into types, namely: individuals, properties
    of individuals, relations between individuals, properties of such
    relations, etc. (with a similar hierarchy for extensions), and that
    sentences of the form: " a has the property φ ", " b bears the
    relation R to c ", etc. are meaningless, if a, b, c, R, φ are not of
    types fitting together.

    The finite string "cats" is stipulated to have
    the type_of_relation <are> to the finite string
    "animals".

    Perhaps, but any definition of "cat" must exlude some animals as
    non-cats. Yor above example of semantic tautology doesn't do that.

    Note that the meaning of "cat" varies from 'Felis catus L.' to 'Felidae
    Fischer von Waldheim 1817' and even to non-animals.

    https://en.wikipedia.org/wiki/Cat
    It is a member of a set specification between GUIDs
    in a (taxonomy) type hierarchy.

    That needs many GUIDs in or

    A cat (short for caterpillar brand) can also be Earth
    moving equipment. https://www.caterpillar.com/

    --
    Mikko
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.lang.prolog,comp.theory,sci.logic,sci.math on Sat Dec 13 08:43:27 2025
    From Newsgroup: comp.theory

    On 12/13/2025 4:19 AM, Mikko wrote:
    olcott kirjoitti 12.12.2025 klo 16.19:
    On 12/12/2025 2:50 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.17:
    On 12/11/2025 2:42 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 16.10:
    On 12/10/2025 4:04 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.09:
    On 12/8/2025 3:13 AM, Mikko wrote:
    olcott kirjoitti 5.12.2025 klo 19.43:
    On 12/5/2025 3:38 AM, Mikko wrote:
    olcott kirjoitti 4.12.2025 klo 16.06:
    On 12/4/2025 2:58 AM, Mikko wrote:
    Tristan Wibberley kirjoitti 4.12.2025 klo 4.32:
    On 30/11/2025 09:58, Mikko wrote:

    Note that the meanings of
      ?- G = not(provable(F, G)).
    and
      ?- unify_with_occurs_check(G, not(provable(F, G))). >>>>>>>>>>>>>>> are different. The former assigns a value to G, the >>>>>>>>>>>>>>> latter does not.

    For sufficiently informal definitions of "value".
    And for sufficiently wrong ones too!

    It is sufficiently clear what "value" of a Prolog variable >>>>>>>>>>>>> means.

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    The first query can be regarded as a question whether "G = >>>>>>>>>>> not(provable(
    F, G))" can be proven for some F and some G. The answer is >>>>>>>>>>> that it can
    for every F and for (at least) one G, which is not(provable(G)). >>>>>>>>>>>
    The second query can be regarded as a question whether "G = >>>>>>>>>>> not(provable
    (F, G))" can be proven for some F and some G that do not >>>>>>>>>>> contain cycles.
    The answer is that in the proof system of Prolog it cannot be. >>>>>>>>>>
    No that it flatly incorrect. The second question is this:
    Is "G = not(provable(F, G))." semantically sound?

    Where is the definition of Prolog semantics is that said?

    Any expression of Prolog that cannot be evaluated to
    a truth value because it specifies non-terminating
    infinite recursion is "semantically unsound" by the
    definition of those terms even if Prolog only specifies
    that cannot be evaluated to a truth value because it
    specifies non-terminating infinite recursion.

    Your Prolog implementation has evaluated G = not(provablel(F, G)) >>>>>>> to a truth value true. When doing so it evaluated each side of = >>>>>>> to a value that is not a truth value.

    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Proves that
    G = not(provable(F, G)).
    would remain stuck in infinite recursion.

    unify_with_occurs_check() examines the directed
    graph of the evaluation sequence of an expression.
    When it detects a cycle that indicates that an
    expression would remain stuck in recursive
    evaluation never to be resolved to a truth value.

    BEGIN:(Clocksin & Mellish 2003:254)
    Finally, a note about how Prolog matching sometimes differs
    from the unification used in Resolution. Most Prolog systems
    will allow you to satisfy goals like:

    equal(X, X).
    ?- equal(foo(Y), Y).

    that is, they will allow you to match a term against an
    uninstantiated subterm of itself. In this example, foo(Y)
    is matched against Y, which appears within it. As a result,
    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    So Y ends up standing for some kind of infinite structure.

    Note that, whereas they may allow you to construct something
    like this, most Prolog systems will not be able to write it
    out at the end. According to the formal definition of
    Unification, this kind of “infinite term” should never come
    to exist. Thus Prolog systems that allow a term to match an
    uninstantiated subterm of itself do not act correctly as
    Resolution theorem provers. In order to make them do so, we
    would have to add a check that a variable cannot be
    instantiated to something containing itself. Such a check,
    an occurs check, would be straightforward to implement, but
    would slow down the execution of Prolog programs considerably.
    Since it would only affect very few programs, most implementors
    have simply left it out 1.

    1 The Prolog standard states that the result is undefined if
    a Prolog system attempts to match a term against an uninstantiated >>>>>> subterm of itself, which means that programs which cause this to
    happen will not be portable. A portable program should ensure that >>>>>> wherever an occurs check might be applicable the built-in predicate >>>>>> unify_with_occurs_check/2 is used explicitly instead of the normal >>>>>> unification operation of the Prolog implementation. As its name
    suggests, this predicate acts like =/2 except that it fails if an
    occurs check detects an illegal attempt to instantiate a variable. >>>>>> END:(Clocksin & Mellish 2003:254)

    Clocksin, W.F. and Mellish, C.S. 2003. Programming in Prolog
    Using the ISO Standard Fifth Edition, 254. Berlin Heidelberg:
    Springer-Verlag.

    Thank you for the confirmation of my explanation of your error.

    Y will stand for foo(Y), which is foo(foo(Y)) (because of
    what Y stands for), which is foo(foo(foo(Y))), and so on.
    As I say non-terminating, thus never resolves to a truth value.

    As according to Prolog rules foo(Y) isn't a truth value for any Y
    the above is obviously just an attempt to deive with a distraction.

    That was a quote from the most definitive source
    for the Prolog Language.

    As I already said, that source agrees with what I said above.

    Prolog only has Facts and Rules thus the only
    derivation is to a truth value.


    You just don't seem to understand:
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    The first statement creates a cyclic term, also called
    a rational tree. The second executes logically sound
    unification and thus fails. https://www.swi-prolog.org/pldoc/man?predicate=unify_with_occurs_check/2

    The only reason why I understand it so
    well is that I had to build it from scratch.

    Here it is in more conventional Prolog terms:
    The evaluation of a cyclic term creates an infinite loop.
    The evaluation of an acyclic term does not create an infinite loop.

    LP := ~True(LP) // LP <is defined as> ~True(LP)
    00 ~ 01
    01 True 00
    For Olcott's Minimal Type Theory I say
    that there is a cycle in the directed graph
    of the evaluation sequence of LP.

    Not true. Prolog also has term expressions that can be used in facts
    and rules. In particular, in the goal G = not(provable(F, G)) the
    symbol G is a term expression and provable(F, G) is another term
    expression. A goal is evaluated to a truth value but if that truth
    value is true the values of variables (if there are any) are also
    evalueted to values that are not truth values. In the example
      ?- G = not(provable(F, G)).
    the answer
      G = not(provable(F, G)).
    mans that the Prolog implementation evaluated the query to true and
    the variable G to the expression not(provable(F, G)). The quoted
    text says that another Prolog implementation may interprethe the
    same query differently.

    The quoted text does not stay unify_with_occurs_check/2 would reject
    anything as "semntically unsound". First of all, it nas no consequences unless it is used. Secondly, if the result of unification would be
    that at a cycle be created then it simpy evaluates to false just
    like unify_with_occurs_check(1, 2) evaluates to false.

    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From olcott@polcott333@gmail.com to comp.theory,sci.logic,sci.math,comp.prolog on Sat Dec 13 09:37:28 2025
    From Newsgroup: comp.theory

    On 12/13/2025 4:42 AM, Mikko wrote:
    olcott kirjoitti 12.12.2025 klo 16.16:
    On 12/12/2025 2:46 AM, Mikko wrote:
    olcott kirjoitti 11.12.2025 klo 16.15:
    On 12/11/2025 2:40 AM, Mikko wrote:
    olcott kirjoitti 10.12.2025 klo 18.29:
    On 12/10/2025 4:10 AM, Mikko wrote:
    olcott kirjoitti 8.12.2025 klo 21.12:
    On 12/5/2025 4:49 AM, Tristan Wibberley wrote:
    On 04/12/2025 14:06, olcott wrote:

    % This sentence cannot be proven in F
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    I would say that the above Prolog is the 100%
    complete formal specification of:

    "This sentence cannot be proven in F"

    No. I think I showed in one of my recent posts (using definition >>>>>>>>> extensions) that you need to formalise the mathematicians
    notion of
    "proof /in/ [system]" vis-a-vis "let" and its stronger sibling >>>>>>>>> "suppose". That's a bigger job than you've done.

    I need a new quotation convention for referring to things whose >>>>>>>>> name has
    an existing meaning in my U-language, I quoted "let" and
    "suppose" as if
    I were using their names; I mean to use the things themselves, >>>>>>>>> but they
    have to be quoted in some way to distinguish the objects of >>>>>>>>> mathematical
    language from the verbs of ordinary language without
    introducing such
    incidental new names as I would otherwise need.

    Semantics tautologies that define finite strings in
    terms of other finite strings to give the LHS its
    semantic meaning on the basis of the RHS.

    You havn't given a single example of a smenatic tautology that
    can be
    interpreted as a definition nor a single example of defintion
    that is
    a semantic tautology. Perhaps it is possible if you define "semantic >>>>>>> taultology" so that it needn't be anything like a tautology.

     From my signature line:
    "true on the basis of meaning expressed in language"

    Here is an example: "cats" <are> "animals"

    Yes, that is an example of your inability mentioned above.

    Your example not define anything and therefore is neither an exmaple >>>>> of a semantic tautology that can be interpreted as a defintion nor an >>>>> axample of a defintion that is a semantic tautology.

    Kurt Gödel in his 1944 Russell's mathematical logic gave the
    following definition of the "theory of simple types" in a footnote:

    By the theory of simple types I mean the doctrine which says that
    the objects of thought (or, in another interpretation, the symbolic
    expressions) are divided into types, namely: individuals, properties
    of individuals, relations between individuals, properties of such
    relations, etc. (with a similar hierarchy for extensions), and that
    sentences of the form: " a has the property φ ", " b bears the
    relation R to c ", etc. are meaningless, if a, b, c, R, φ are not of >>>> types fitting together.

    The finite string "cats" is stipulated to have
    the type_of_relation <are> to the finite string
    "animals".

    Perhaps, but any definition of "cat" must exlude some animals as
    non-cats. Yor above example of semantic tautology doesn't do that.

    Note that the meaning of "cat" varies from 'Felis catus L.' to 'Felidae
    Fischer von Waldheim 1817' and even to non-animals.

    https://en.wikipedia.org/wiki/Cat
    It is a member of a set specification between GUIDs
    in a (taxonomy) type hierarchy.

    That needs many GUIDs in or


    I estimate 200 petabytes of GUIDs and connections
    between them to encode the complete body of general
    knowledge.

    200 petabytes for body of general knowledge
    stored as relations between GUIDs

    1,000,000,000,000,000
    / 7373(bytes per page)
    / 500 pages per ream
    / 6 reams per foot
    / 5280 feet per mile
    8563 miles per petabyte
    * 200 = 1,712,500 miles tall
    distance to the Moon 238,900 mile
    1,712,500 / 238,900 = 7.16 trips to the Moon

    202 racks of storage of HDD
    about 12 racks for SSD

    A cat (short for caterpillar brand) can also be Earth
    moving equipment. https://www.caterpillar.com/



    --
    Copyright 2025 Olcott<br><br>

    My 28 year goal has been to make <br>
    "true on the basis of meaning expressed in language"<br>
    reliably computable.<br><br>

    This required establishing a new foundation<br>
    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Python@python@cccp.invalid to comp.theory,sci.logic,sci.math on Sat Dec 13 15:42:32 2025
    From Newsgroup: comp.theory

    Le 13/12/2025 à 16:37, olcott a écrit :
    ..
    I estimate 200 petabytes of GUIDs and connections
    between them to encode the complete body of general
    knowledge.

    200 petabytes for body of general knowledge
    stored as relations between GUIDs

    Will this dataset include the knowledge that Peter Olcott molested
    children and pretended to be God before the Justice court?


    --- Synchronet 3.21a-Linux NewsLink 1.2
  • From Richard Damon@Richard@Damon-Family.org to comp.lang.prolog,comp.theory,sci.logic,sci.math on Sat Dec 13 13:36:44 2025
    From Newsgroup: comp.theory

    On 12/13/25 9:43 AM, olcott wrote:

    You just don't seem to understand:
    ?- G = not(provable(F, G)).
    G = not(provable(F, G)).
    ?- unify_with_occurs_check(G, not(provable(F, G))).
    false.

    Your problem is that G = not(provable(F, G)) is NOT the defition of G,
    but a semantic interpreation of it.

    Of course, you don't understand the difference.

    But then, the actual definition of G is using a logic more expresive
    than Prolog can handle, and thus unintelligible to you.

    The problem is that Prolog can't handle full First Order Logic.
    --- Synchronet 3.21a-Linux NewsLink 1.2