Why is The Gettier problem still considered an open issue?

Known unknowns and unknown unknowns!

Moderators: AMod, iMod

PeteOlcott
Posts: 1514
Joined: Mon Jul 25, 2016 6:55 pm

Re: Why is The Gettier problem still considered an open issue?

Post by PeteOlcott »

Skepdick wrote: Thu Jun 01, 2023 9:16 pm
PeteOlcott wrote: Thu Jun 01, 2023 9:03 pm A cycle is another word for pathological self-reference.
See my Clocksin & Mellish quote.
A cycle is another word for self-reference. Recursion (a.k.a induction) is built upon it.

It's on you to explain which self-references are "pathological" and which aren't.

There's no problem with infinite structures either. Programming languages with lazy evaluation (e.g Haskell) handle infinite data structures all the time.

https://en.wikipedia.org/wiki/Evaluatio ... ll_by_need

Here's the (infinite) set of natural numbers being assigned to a variable in Haskell.

Code: Select all

λ> let n = [0..]
n :: (Num a, Enum a) => [a]
Pathological self-reference is like recursion with no recursion termination condition.
When logic expressions have Pathological self-reference, they cannot be evaluated.
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Thu Jun 01, 2023 9:56 pm Pathological self-reference is like recursion with no recursion termination condition.
Why is that "pathological"? Non-terminating recursion is an infinite structure.

Infinite structures are useful.
PeteOlcott wrote: Thu Jun 01, 2023 9:56 pm When logic expressions have Pathological self-reference, they cannot be evaluated.
Except that [0..] can be evaluated. And it can bound to a variable also.

Code: Select all

λ> let n = [0..]
n :: (Num a, Enum a) => [a]
(0.01 secs, 38,888 bytes)
λ> take 10 n
[0,1,2,3,4,5,6,7,8,9]
it :: (Num a, Enum a) => [a]
(0.01 secs, 92,640 bytes)
λ> take 25 n
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
it :: (Num a, Enum a) => [a]
(0.01 secs, 139,680 bytes)
PeteOlcott
Posts: 1514
Joined: Mon Jul 25, 2016 6:55 pm

Re: Why is The Gettier problem still considered an open issue?

Post by PeteOlcott »

Skepdick wrote: Fri Jun 02, 2023 6:42 am
PeteOlcott wrote: Thu Jun 01, 2023 9:56 pm Pathological self-reference is like recursion with no recursion termination condition.
Why is that "pathological"? Non-terminating recursion is an infinite structure.

Infinite structures are useful.
PeteOlcott wrote: Thu Jun 01, 2023 9:56 pm When logic expressions have Pathological self-reference, they cannot be evaluated.
Except that [0..] can be evaluated. And it can bound to a variable also.

Code: Select all

λ> let n = [0..]
n :: (Num a, Enum a) => [a]
(0.01 secs, 38,888 bytes)
λ> take 10 n
[0,1,2,3,4,5,6,7,8,9]
it :: (Num a, Enum a) => [a]
(0.01 secs, 92,640 bytes)
λ> take 25 n
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
it :: (Num a, Enum a) => [a]
(0.01 secs, 139,680 bytes)
The Liar Paradox goes like this:
This sentence is not true.
Not true about what?
This sentence is not true about being not true.
Not true about being nor true about what?
This sentence is not true about being not true about being not true...

Clocksin & Mellish explain it the same way:

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.
END:(Clocksin & Mellish 2003:254)
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Fri Jun 02, 2023 3:15 pm
Skepdick wrote: Fri Jun 02, 2023 6:42 am
PeteOlcott wrote: Thu Jun 01, 2023 9:56 pm Pathological self-reference is like recursion with no recursion termination condition.
Why is that "pathological"? Non-terminating recursion is an infinite structure.

Infinite structures are useful.
PeteOlcott wrote: Thu Jun 01, 2023 9:56 pm When logic expressions have Pathological self-reference, they cannot be evaluated.
Except that [0..] can be evaluated. And it can bound to a variable also.

Code: Select all

λ> let n = [0..]
n :: (Num a, Enum a) => [a]
(0.01 secs, 38,888 bytes)
λ> take 10 n
[0,1,2,3,4,5,6,7,8,9]
it :: (Num a, Enum a) => [a]
(0.01 secs, 92,640 bytes)
λ> take 25 n
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
it :: (Num a, Enum a) => [a]
(0.01 secs, 139,680 bytes)
The Liar Paradox goes like this:
This sentence is not true.
Not true about what?
This sentence is not true about being not true.
Not true about being nor true about what?
This sentence is not true about being not true about being not true...

Clocksin & Mellish explain it the same way:

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.
END:(Clocksin & Mellish 2003:254)
Olcott, you are a fucking idiot.

The Liar's paradox is nothing other than your confusion over what it is that you are evaluating; and in which context.

This sentence is false.

Code: Select all

In [1]: sentence = False

Is the sentence false?

Code: Select all

In [2]: sentence == False 
Out[2]: True
PeteOlcott
Posts: 1514
Joined: Mon Jul 25, 2016 6:55 pm

Re: Why is The Gettier problem still considered an open issue?

Post by PeteOlcott »

Skepdick wrote: Fri Jun 02, 2023 3:32 pm
PeteOlcott wrote: Fri Jun 02, 2023 3:15 pm
Skepdick wrote: Fri Jun 02, 2023 6:42 am
Why is that "pathological"? Non-terminating recursion is an infinite structure.

Infinite structures are useful.


Except that [0..] can be evaluated. And it can bound to a variable also.

Code: Select all

λ> let n = [0..]
n :: (Num a, Enum a) => [a]
(0.01 secs, 38,888 bytes)
λ> take 10 n
[0,1,2,3,4,5,6,7,8,9]
it :: (Num a, Enum a) => [a]
(0.01 secs, 92,640 bytes)
λ> take 25 n
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
it :: (Num a, Enum a) => [a]
(0.01 secs, 139,680 bytes)
The Liar Paradox goes like this:
This sentence is not true.
Not true about what?
This sentence is not true about being not true.
Not true about being nor true about what?
This sentence is not true about being not true about being not true...

Clocksin & Mellish explain it the same way:

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.
END:(Clocksin & Mellish 2003:254)
Olcott, you are a fucking idiot.

The Liar's paradox is nothing other than your confusion over what it is that you are evaluating; and in which context.

This sentence is false.

Code: Select all

In [1]: sentence = False

Is the sentence false?

Code: Select all

In [2]: sentence == False 
Out[2]: True
You simply did not bother to encode the pathological self-reference correctly.

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

?- unify_with_occurs_check(LP, not(true(LP))).
false.
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Fri Jun 02, 2023 6:54 pm
Skepdick wrote: Fri Jun 02, 2023 3:32 pm
PeteOlcott wrote: Fri Jun 02, 2023 3:15 pm

The Liar Paradox goes like this:
This sentence is not true.
Not true about what?
This sentence is not true about being not true.
Not true about being nor true about what?
This sentence is not true about being not true about being not true...

Clocksin & Mellish explain it the same way:

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.
END:(Clocksin & Mellish 2003:254)
Olcott, you are a fucking idiot.

The Liar's paradox is nothing other than your confusion over what it is that you are evaluating; and in which context.

This sentence is false.

Code: Select all

In [1]: sentence = False

Is the sentence false?

Code: Select all

In [2]: sentence == False 
Out[2]: True
You simply did not bother to encode the pathological self-reference correctly.

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

?- unify_with_occurs_check(LP, not(true(LP))).
false.
Olcott, you are a fucking idiot.

The Liar’s paradox doesn’t say “This sentence is not true”.

It says “This sentence is false.”

Why are you encoding it in Boolean logic; and not a multi-valued or an infinitary logic? Why are you assuming ¬⊤ ↔ ⊥ ?!?

You really are confused about the difference between values and variables

Code: Select all

In [1]: true = False; false = True

In [2]: true == True
Out[2]: False

In [3]: false == False
Out[3]: False
PeteOlcott
Posts: 1514
Joined: Mon Jul 25, 2016 6:55 pm

Re: Why is The Gettier problem still considered an open issue?

Post by PeteOlcott »

Skepdick wrote: Fri Jun 02, 2023 6:56 pm
PeteOlcott wrote: Fri Jun 02, 2023 6:54 pm
Skepdick wrote: Fri Jun 02, 2023 3:32 pm
Olcott, you are a fucking idiot.

The Liar's paradox is nothing other than your confusion over what it is that you are evaluating; and in which context.

This sentence is false.

Code: Select all

In [1]: sentence = False

Is the sentence false?

Code: Select all

In [2]: sentence == False 
Out[2]: True
You simply did not bother to encode the pathological self-reference correctly.

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

?- unify_with_occurs_check(LP, not(true(LP))).
false.
Olcott, you are a fucking idiot.

The Liar’s paradox doesn’t say “This sentence is not true”.

It says “This sentence is false.”

Why are you encoding it in Boolean logic; and not a multi-valued or an infinitary logic?
I am encoding it the way that it was intended to be understood
as a self-contradictory expression having no truth value.

“This sentence is not true” is called the Strengthened Liar:
The Liar, the Strengthened Liar, and Bivalence
https://www.jstor.org/stable/20013045
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Fri Jun 02, 2023 7:29 pm I am encoding it the way that it was intended to be understood as a self-contradictory expression having no truth value.
If it has no truth-value then why do you keep insisting that its truth-value is false?

true and false are both truth-values.

The only possible way to signal the absence of a truth-value in a Boolean logic is to do something other than return true; or return false.

Which is exactly what's happening. The decider doesn't return anything - it runs forever. It doesn't halt.
PeteOlcott
Posts: 1514
Joined: Mon Jul 25, 2016 6:55 pm

Re: Why is The Gettier problem still considered an open issue?

Post by PeteOlcott »

Skepdick wrote: Fri Jun 02, 2023 7:31 pm
PeteOlcott wrote: Fri Jun 02, 2023 7:29 pm I am encoding it the way that it was intended to be understood as a self-contradictory expression having no truth value.
If it has no truth-value then why do you keep insisting that its truth-value is false?

true and false are both truth-values.

The only possible way to signal the absence of a truth-value in a Boolean logic is to do something other than return true; or return false.

Which is exactly what's happening. The decider doesn't return anything - it runs forever. It doesn't halt.
I have never insisted that its truth value is false.

This means that LP cannot be evaluated because LP is semantically incorrect.
?- unify_with_occurs_check(LP, not(true(LP))).
false.

The Tarski Undefinability can only derive its conclusion on the basis of a semantically incorrect expression of language. Instead of saying that a Truth predicate does not exist on the basis that it cannot resolve a semantically incorrect expression to a truth value the semantically incorrect expression should have been rejected as incorrect.

https://en.wikipedia.org/wiki/Tarski%27 ... neral_form
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Fri Jun 02, 2023 7:59 pm This means that LP cannot be evaluated because LP is semantically incorrect.
?- unify_with_occurs_check(LP, not(true(LP))).
false
You are lying.

That's not what the unify_with_occurs_check operator does.

https://www.swi-prolog.org/pldoc/man?pr ... rs_check/2

It only checks for self-reference.
It does NOT check for pathological self-reference.

Thus it rejects all recursive definitions, and not just the "pathological" ones.
PeteOlcott
Posts: 1514
Joined: Mon Jul 25, 2016 6:55 pm

Re: Why is The Gettier problem still considered an open issue?

Post by PeteOlcott »

Skepdick wrote: Fri Jun 02, 2023 8:04 pm
PeteOlcott wrote: Fri Jun 02, 2023 7:59 pm This means that LP cannot be evaluated because LP is semantically incorrect.
?- unify_with_occurs_check(LP, not(true(LP))).
false
You are lying.

That's not what the unify_with_occurs_check operator does.

https://www.swi-prolog.org/pldoc/man?pr ... rs_check/2

It only checks for self-reference.
It does NOT check for pathological self-reference.

Thus it rejects all recursive definitions, and not just the "pathological" ones.
In Prolog every recursive definition that it detects is pathological.
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Fri Jun 02, 2023 8:14 pm In Prolog every recursive definition that it detects is pathological.
Then don't use Prolog.

This is a perfectly valid (and meaningful) definition in OCaml.

Code: Select all

let rec seq acc = function
    | 0 -> acc
    | n -> seq (acc+1) (n-1)
;;
val seq : int -> int -> int = <fun>    
It evaluates to a function which can be applied to arguments

Code: Select all

utop # let x = seq 5;;
val x : int -> int = <fun>
utop # x 0;;
- : int = 5
PeteOlcott
Posts: 1514
Joined: Mon Jul 25, 2016 6:55 pm

Re: Why is The Gettier problem still considered an open issue?

Post by PeteOlcott »

Skepdick wrote: Fri Jun 02, 2023 8:16 pm
PeteOlcott wrote: Fri Jun 02, 2023 8:14 pm In Prolog every recursive definition that it detects is pathological.
Then don't use Prolog.

This is a perfectly valid (and meaningful) definition in OCaml.

Code: Select all

let rec seq acc = function
    | 0 -> acc
    | n -> seq (acc+1) (n-1)
;;
val seq : int -> int -> int = <fun>    
It evaluates to a function which can be applied to arguments

Code: Select all

utop # let x = seq 5;;
val x : int -> int = <fun>
utop # x 0;;
- : int = 5
That is not encoding the Liar Paradox.
My purpose in showing that the actual Liar Paradox is simply a semantically incorrect expression of language is to overturn the Tarski Undefinability theorem that utterly depends on the Liar Paradox being self-contradictory.
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Fri Jun 02, 2023 8:43 pm That is not encoding the Liar Paradox.
So fucking what?

I am demonstrating that there is a semantic difference between pathological and non-pathological recursive definitions
thus rejecting all recursive definitions as "pathological" is an error.
PeteOlcott wrote: Fri Jun 02, 2023 8:43 pm My purpose in showing that the actual Liar Paradox is simply a semantically incorrect expression of language is to overturn the Tarski Undefinability theorem that utterly depends on the Liar Paradox being self-contradictory.
But it's not semantically incorrect. It's not semantically correct either.

it simply lacks meaning. It's undefined - it means whatever you interpret/evaluate it to mean.

It's no more or less paradoxical than the statement "This statement is true".
Skepdick
Posts: 14347
Joined: Fri Jun 14, 2019 11:16 am

Re: Why is The Gettier problem still considered an open issue?

Post by Skepdick »

PeteOlcott wrote: Fri Jun 02, 2023 8:43 pm My purpose in showing that the actual Liar Paradox is simply a semantically incorrect expression of language is to overturn the Tarski Undefinability theorem that utterly depends on the Liar Paradox being self-contradictory.
Take the sentence "This sentence is true" which is most definitely NOT self contradictory.

Encode it as P = true(P)

Code: Select all

?- unify_with_occurs_check(P, true(P)).
false.
Ooops!

You fucked up again.
Post Reply