• Re: True on the basis of meaning --- Good job Richard ! ---Socratic method MTT

    From Mikko@mikko.levanto@iki.fi to sci.logic, comp.lang.prolog on Wed May 29 11:25:30 2024
    From Newsgroup: comp.lang.prolog

    On 2024-05-28 14:59:30 +0000, olcott said:

    On 5/28/2024 1:59 AM, Mikko wrote:
    On 2024-05-27 14:34:14 +0000, olcott said:

    ?- LP = not(true(LP)).
    LP = not(true(LP)).

    ?- unify_with_occurs_check(LP, not(true(LP))).
    false.

    In other words Prolog has detected a cycle in the directed graph of the
    evaluation sequence of the structure of the Liar Paradox. Experts seem
    to think that Prolog is taking "not" and "true" as meaningless and is
    only evaluating the structure of the expression.

    The words "not" and "true" of Prolog are meaningful in some contexts
    but not above. The word "true" is meaningful only when it has no arguments. >>

    That Prolog construes any expression having the same structure as the
    Liar Paradox as having a cycle in the directed graph of its evaluation sequence already completely proves my point. In other words Prolog
    is saying that there is something wrong with the expression and it must
    be rejected.

    You could try
    ?- LP = not(true(LP), true(LP).

    or
    ?- LP = not(true(LP), not(true(LP)).

    The predicate unify_with_occurs_check checks whether the resulting
    sructure is acyclic because that is its purpose. Whether a simple

    Yes exactly. If I knew that Prolog did this then I would not have
    created Minimal Type Theory that does this same thing. That I did
    create MTT that does do this same thing makes my understanding much
    deeper.

    Prolog does not reject LP = not(true(LP)). It can accept it as
    syntactically valid. Thaat unify_with_occurs_check(LP, not(true(LP))
    fails does not mean anything except when it is used, and then it
    does not reject but simplu evaluates to false, just like 1 = 2
    is false but not erroneous.

    unification like LP = not(true(LP)) does same is implementation
    dependent as Prolog rules permit but do not require that. In a
    typical implementation a simple unification does not check for
    cycles.


    ISO Prolog implementations have the built-in predicate unify_with_occurs_check/2 for sound unification https://en.wikipedia.org/wiki/Occurs_check#Sound_unification

    Alternatively such expressions crash or remain stuck in infinite loops.

    Not necessarily. What happes depends on the implementation and on what
    you do with such structures. You already saw that your

    ?- LP = not(true(LP)).

    does not crash and does not remain stuck in infinite loop.

    Anyway, none of this is relevant to the topic of this thread or
    topics of sci.logic.

    If you want to talk nore about Prolog do it in comp.lang.prolog.
    --
    Mikko

    --- Synchronet 3.20a-Linux NewsLink 1.114
  • From olcott@polcott333@gmail.com to sci.logic,comp.lang.prolog on Wed May 29 08:31:31 2024
    From Newsgroup: comp.lang.prolog

    On 5/29/2024 3:25 AM, Mikko wrote:
    On 2024-05-28 14:59:30 +0000, olcott said:

    On 5/28/2024 1:59 AM, Mikko wrote:
    On 2024-05-27 14:34:14 +0000, olcott said:

    ?- LP = not(true(LP)).
    LP = not(true(LP)).

    ?- unify_with_occurs_check(LP, not(true(LP))).
    false.

    In other words Prolog has detected a cycle in the directed graph of the >>>> evaluation sequence of the structure of the Liar Paradox. Experts seem >>>> to think that Prolog is taking "not" and "true" as meaningless and is
    only evaluating the structure of the expression.

    The words "not" and "true" of Prolog are meaningful in some contexts
    but not above. The word "true" is meaningful only when it has no
    arguments.


    That Prolog construes any expression having the same structure as the
    Liar Paradox as having a cycle in the directed graph of its evaluation
    sequence already completely proves my point. In other words Prolog
    is saying that there is something wrong with the expression and it must
    be rejected.

    You could try
    ?- LP = not(true(LP), true(LP).

    or
    ?- LP = not(true(LP), not(true(LP)).

    The predicate unify_with_occurs_check checks whether the resulting
    sructure is acyclic because that is its purpose. Whether a simple

    Yes exactly. If I knew that Prolog did this then I would not have
    created Minimal Type Theory that does this same thing. That I did
    create MTT that does do this same thing makes my understanding much
    deeper.

    Prolog does not reject LP = not(true(LP)). It can accept it as
    syntactically valid. Thaat unify_with_occurs_check(LP, not(true(LP))
    fails does not mean anything except when it is used, and then it
    does not reject but simplu evaluates to false, just like 1 = 2
    is false but not erroneous.


    It correctly determines that there is a cycle in the directed graph
    of the evaluation sequence of the expression, which is like an
    infinite loop in a program.

    You can understand this or fail to understand this, disagreement is
    incorrect. If you have any disagreement then please back up your
    claims with proof.

    unification like LP = not(true(LP)) does same is implementation
    dependent as Prolog rules permit but do not require that. In a
    typical implementation a simple unification does not check for
    cycles.


    ISO Prolog implementations have the built-in predicate
    unify_with_occurs_check/2 for sound unification
    https://en.wikipedia.org/wiki/Occurs_check#Sound_unification

    Alternatively such expressions crash or remain stuck in infinite loops.

    Not necessarily. What happes depends on the implementation and on what
    you do with such structures. You already saw that your

    ?- LP = not(true(LP)).

    does not crash and does not remain stuck in infinite loop.

    Anyway, none of this is relevant to the topic of this thread or
    topics of sci.logic.

    If you want to talk nore about Prolog do it in comp.lang.prolog.


    It is relevant to sci.logic in that it exposes fundamental flaws
    with classical logic.

    That contradictory result apparently throws us into the lion’s den of semantic incoherence. The incoherence is due to the fact that, according
    to the rules of classical logic, anything follows from a contradiction,
    even 1 + 1 = 3. https://iep.utm.edu/liar-paradox/#
    --
    Copyright 2024 Olcott "Talent hits a target no one else can hit; Genius
    hits a target no one else can see." Arthur Schopenhauer

    --- Synchronet 3.20a-Linux NewsLink 1.114