Sujet : Re: True on the basis of meaning --- Good job Richard ! ---Socratic method MTT
De : mikko.levanto (at) *nospam* iki.fi (Mikko)
Groupes : sci.logicDate : 28. May 2024, 07:59:13
Autres entêtes
Organisation : -
Message-ID : <v33vc1$g5n4$1@dont-email.me>
References : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
User-Agent : Unison/2.2
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.
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
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.
Anyway, none of this is relevant to the topic of this thread or
topics of sci.logic.
-- Mikko