Liste des Groupes | Revenir à s logic |
On 2024-06-02 13:01:15 +0000, olcott said:(1) We know that "Not all lemons are yellow", as it has been assumed to be true.
On 6/2/2024 2:29 AM, Mikko wrote:Those laws don't prevent from assuming p. Those laws don't preventOn 2024-06-01 15:41:46 +0000, olcott said:>
>On 6/1/2024 2:32 AM, Mikko wrote:>On 2024-05-31 15:47:31 +0000, olcott said:>
>On 5/31/2024 2:17 AM, Mikko wrote:>On 2024-05-30 13:43:11 +0000, olcott said:>
>On 5/30/2024 1:52 AM, Mikko wrote:>On 2024-05-29 13:31:31 +0000, olcott said:>
>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.
It does not expose any flaw in classical logic. Flaws in your
understanding of calssical logics are already sufficiently known.
What has now been shown is that L is true if, and only if, it is
false. Since L must be one or the other, it is both.
No, that has not been shown. Classical logic shows that no sentence
is true if and only if it is false. If you assumoe otherwise then
your assumption is false.
>
*You removed the relevant context that the principle of explosion*
*of classical logic is shown to be the source of the issue*
Principle of exposion is empirically true. It is not a problem of
classical logic. You have not shown that any paraconsistent system,
where principle of exposion does not apply, is any better.
>
The ONLY THING that can ever be correctly derived from a contradiction
is FALSE. People taking classical logic as infallible by simply ignoring
its inconsistencies are inherently incorrect.
The inconsistencies are not inconsistencies of logic. No logic can
prevent you from assuming an inconsistency but then it is your
inconsistency.
>
People taking classical logic as infallible do so because no situation
where it is wrong has been observed.
*Three laws of logic apply to all propositions*
¬(p ∧ ¬p) Law of non-contradiction
(p ∨ ¬p) Law of excluded middle
p = p Law of identity
from assuming ¬p. Assuming both is assuming something false.
If--
something false is assumed then something false can be proven.
Conversely, if you know that the conclusion is false then classical
logic tells you that one of the preises is false (but does not
tell which one).
For propositions the law of identity should be written p <-> p.
The = symbol is reserved for non-propositions (in a first order
theory to individuals).
The Principle of explosion violates the {Law of non-contradiction}.No, it does not. Each premise and the conclusion is either false
All premises must they themselves be propositions and POE simply
ignores that.
or true but not both.
Also the Liar Paradox violates the {Law of excluded middle}.In any ordinary formal logic the liar paradox cannot be expressed.
If you want to use a system where it can then that is your problem.
Les messages affichés proviennent d'usenet.