The Liars Paradox appears to be a special case of infinite recursion.
liar() {
NOT liar()
}
Straight forward. A debugging tool would detect an infinite recursion. An English speaking logician could call it ‘meaningless’. Now consider the ‘strengthened paradox’:
“Everything written on the board in Room 33 is either false or meaningless.”
This isn’t translatable as a function. ‘Meaningful’ and ‘meaningless’ aren’t values bivalent functions return so they shouldn’t be values in our logic. Instead they should be thought of as flags for errors detected by our brain’s debugging tool. But our debugging tool is embedded into the semantics of our language. We talk about sentences having the property of ‘meaninglessness’ instead of our brains not knowing what to do with the string of letters shown to it. You could probably build a language that returned a pseudo-value of “Meaningless” for infinitely recursive functions. It wouldn’t “really” be a value, the program would just output a line that read “x = Meaningless” (not, and this is crucial, assign the variable the value of the string ‘Meaningless’) when asked to find Liar(x). That is basically what the human brain does.
When we get confused by the strengthened liar paradox we’re committing a category error, thinking “meaningless” is a value when it is really an error message. In fact both versions of the paradox are meaningless (assuming ‘meaningless’ can be taken to mean something like ‘Can’t compute’).
Of course it gets hairy since error messages have truth values too. But
Meaningless(Sliar()) = 1
Is not the same as
Sliar() =1
Thus there is no contradiction. Same will go for Meaningless(Meaningless(Sliar())).
This isn’t translatable as a function. ‘Meaningful’ and ‘meaningless’ aren’t values bivalent functions return so they shouldn’t be values in our logic.
So the sentence “The sentence ‘Everything written on the board in Room 33 is either false or meaningless.’ is meaningless” is not true?
The Liars Paradox appears to be a special case of infinite recursion.
liar() {
NOT liar()
}
Straight forward. A debugging tool would detect an infinite recursion. An English speaking logician could call it ‘meaningless’. Now consider the ‘strengthened paradox’:
“Everything written on the board in Room 33 is either false or meaningless.”
This isn’t translatable as a function. ‘Meaningful’ and ‘meaningless’ aren’t values bivalent functions return so they shouldn’t be values in our logic. Instead they should be thought of as flags for errors detected by our brain’s debugging tool. But our debugging tool is embedded into the semantics of our language. We talk about sentences having the property of ‘meaninglessness’ instead of our brains not knowing what to do with the string of letters shown to it. You could probably build a language that returned a pseudo-value of “Meaningless” for infinitely recursive functions. It wouldn’t “really” be a value, the program would just output a line that read “x = Meaningless” (not, and this is crucial, assign the variable the value of the string ‘Meaningless’) when asked to find Liar(x). That is basically what the human brain does.
When we get confused by the strengthened liar paradox we’re committing a category error, thinking “meaningless” is a value when it is really an error message. In fact both versions of the paradox are meaningless (assuming ‘meaningless’ can be taken to mean something like ‘Can’t compute’).
Of course it gets hairy since error messages have truth values too. But
Meaningless(Sliar()) = 1
Is not the same as
Sliar() =1
Thus there is no contradiction. Same will go for Meaningless(Meaningless(Sliar())).
The most straightforward way is to interpret “meaningless” as “doesn’t terminate”, or the value Bottom in Haskell.
Interesting. And it works in recursive functions the way it should?
In this context that is fine, but we tend to use ‘meaningless’ to describe a more general class of errors, including syntax.
So the sentence “The sentence ‘Everything written on the board in Room 33 is either false or meaningless.’ is meaningless” is not true?
Sure it’s true. Thats just Meaningless(Sliar())… I guess I don’t seen why the selected portion would imply otherwise.
Oh, right, now I get it.