Suppose i write a computer program that does this:
It reads the text of a program written in your language with “START:” and “GOTO START” and so forth.
It translates that program into some easy-to-execute representation.
It executes it, step by step.
As it executes it, it monitors the internal state of the execution and looks to see if the program ever gets into the exact same state that it has recently been in.
If so, it stops with a message saying “I detected an unproductive infinite loop.”
This is completely computational. More than that, it’s easy to implement. And what will it do when presented with the program in the comment I’m replying to? Why, it will start executing that loop … and then leave it when it discovers that it’s an infinite loop that isn’t changing anything as it runs.
So no, it is not really really really true that “this kind of loop cannot be left computationally”. I just showed you one way in which it might be left computationally. No magic is required.
It is, indeed, true by definition that a correctly working computer follows the instructions. Provided by “the instructions” you mean its actual program as opposed to whatever programs it might find itself analysing.
If my brain were (literally or as-good-as) following a program that included a trivial infinite loop like that, I would be catatonic. It follows that my brain is not in fact following a program that includes such a trivial infinite loop. So what? How does that tell us anything about the nature of my brain, or minds in general, or computation in general?
>It reads the text of a program written in your language with “START:” and “GOTO START” and so forth.
Those are the program and will put thet program into a loop. If you write a different program, you did not follow my instructions, but wrote your OWN program, which maybe is a meta-computational-program.
Of course meta-computational-program can be correct in some ways. I did not dispute that. But it is a different level. I am talking about base level computation here, as there is no meta-computation without a base level (which is why a lot of software is utter rubbish nowadays, it is written as if there is no base level to take into account).
>As it executes it, it monitors the internal state of the execution and looks to see if the program ever gets into the exact same state that it has recently been in.
That sounds a bit like solving the halting problem? That halting problem is proven to be not solvable by computers in general. Hence why I said KIND of loop. I guess any specific loop can be exited by computation that just is a bit error prone, or does not quite follow the program given (maybe because the high level programming language gets not well translated into a low level programming language; what I am talking about here is most basic assembler logic, it is not anything complex in terms of the computational logic given, although of course maybe complex in terms of computational & uncomputational logic already operating in our minds.
>So no, it is not really really really true that “this kind of loop cannot be left computationally”. I just showed you one way in which it might be left computationally. No magic is required.
Meta-computationally, as you said your program ignores the START and GOTO START program instructions and does something else. That is a program that meta-ignores and meta-computes something. That is not what I am talking about on the base level (the comment is something different, but not meant to be processed by computer). So unfortunately you are “not even wrong”. You are talking about meta-computation and meta-ignoring, while I am talking about base-level computation.
START [this program will not halt computationally, but does halt uncomputationally] (END if non-computational logic is applied) GOTO START
Maybe this is clearer? You can execute it as you can function as a simple computer, and realize the comment is true. I don’t see the issue. There is computational halting, but this statement is a looping program so it won’t halt computationally. So the only other option left IS that is halts uncomputationally (who says uncomputational processes can’t halt? like you might run a busy beaver a few steps, like people already did and then halt; you could get the same states via computation, but that doesn’t make the busy beaver a computational process), or that you ignore logic.
If you ignore logic, that might be good to meditate and in that way is a good idea to be fair, but it doesn’t directly help to correctly program a computer or draw correct conclusions about uncomputability.
Again, the logic is rather simple, it is just that for some reason we do not like logic sometimes, I guess because we are trans-rational and trans-logical beings. That is being human I suppose. Thanks God. We do not want to ignore feelings and emotions and wild ideas and playing with language in favor of mere logic. But still logic has its place.
I would like functioning software, but people insist that their computers should “understand” their spagetti code that is barely logical and produces constant errors.
If “the program” is your thing with GOTO START and nothing else, then sure, something that executes “the program” will loop. This doesn’t say anything at all about the general capabilities of a program thinking about programs. If your goal is to say something about “the limits of AI” then you have to address those general capabilities.
The halting problem is not solvable in general by computers. Nor, so far as anyone knows, is it solvable in general by people. Many particular cases of the halting problem, such as your trivial infinite loops, are extremely solvable by simple software (and also by humans).
Analysing a program rather than blindly executing it is not “ignoring logic”. And even actually ignoring logic does not imply not being computational “underneath”.
I’m sorry to be increasingly blunt, but I do not think you are thinking clearly about this stuff at all, and I think you have persuaded yourself that your muddle is actually insight, as a result of which you are not listening when others try to explain what you are muddled about.
>Analysing a program rather than blindly executing it is not “ignoring logic”. And even actually ignoring logic does not imply not being computational “underneath”.
Blindly executing? Where did I say to blindly execute it? I did not once state this, or imply this in the text.
In fact I stated the opposite: And read comments or elucidations to understand what it is about.
Which means not blindly, but with the semantic meaning of the text in mind.
If you ignore logic and semantics, that is operating blindly as far as this post is concerned.
>I’m sorry to be increasingly blunt, but I do not think you are thinking clearly about this stuff at all,
No, it’s OK. However logically and semantically, what you think about whether I think clearly has no implications whether I actually do.
I have not persuaded myself of anything. This post is meant to yield understanding, not to be persuasive to myself, or others. Truth is true, regardless if it persuasive. If I correctly calculate the 8988343th digit of pi, me stating it might not be persuasive as they might not know whether it is correct but it is still true.
You didn’t say to blindly execute it. But you did (unless I misunderstood, in which case please do correct me) repeatedly imply that being “computational” implies blindly executing it.
A comment saying “this loop can only be exited non-computationally” does not oblige a person or program looking at the code to either loop infinitely or be non-computational, any more than a comment saying “this loop can only be exited on paying gjm a million dollars” obliges a person or program looking at the code to either loop infinitely or give me a pile of money.
Obviously there is no necessary logical connection between whether I think you are thinking clearly and whether you actually are; people make mistakes sometimes. But many people, when told “I think you are not thinking clearly” will consider the possibility that they are (1) actually not thinking clearly and/or (2) not communicating their meaning clearly. I was hoping you might do that.
>You didn’t say to blindly execute it. But you did (unless I misunderstood, in which case please do correct me) repeatedly imply that being “computational” implies blindly executing it.
No, in fact I said you can execute it computationally and transcend it by understanding meta-computation (you can run a computation and still think of it as something you are not “in” or engaged in, but that implies you are beyond computations as you can transcend them) or how something can be computational in one dimension, and non-computational in another dimension (like the +1 computation of 1,2,3,4,5,6… being created into towers of the size of the busy beaver function), something I call computational-orthogonally-uncomputational.
I see the issue of thinking you “should” run the program, but that is more a psychological thing, I did not say that, and did not really mean that either, it would be better if you feel inspired by this text to re-evaluate your assumptions🙂.
If you are computational like a literal computer, it does imply blindly executing it. That what a computer would do, just execute the loop. Unless you assume computer spirit, which is a bit of a rabbit hole. Although to be fair I would not disregard it, it just does not affect much about how computers function, as they function as they are programmed if they work well. I would more likely to say sp1r1t as that sounds more like something a computer would say haha. Well actually in a way I am this computer (referencing your computer), as I am manifesting to you through this text on your screen so to speak 0101011111000 haha). But that only works as there is another human somewhere else that is sending this you via internet. I have no way to intelligently talk to you otherwise. Except maybe through spooky means like spooky errors, but again, a bit of a rabbit hole isn’t it.
In any case you literally are not solely computational already, let alone a literal computer (apart from when you assume that role by executing the instruction as if you were a computer). That is my whole point. You won’t execute it blindly because you are not a computer, let alone a simple one (although we do have computational functions which we can utilize).
At the very least, executing it will make you feel interested in the rest of the text or perhaps insecure or confused, which is the start of not being blind about it and reading the context or loosening your assumptions a little. You will probably not get into a trance of reading it for hours. Let alone until you cease functioning physically or are shut off like a good computer would.
I have said this several times and you simply haven’t engaged with it at all, so this is my last attempt.
If you are computational like a literal computer, it does imply blindly executing it. that is what a computer would do, just execute the loop.
This is just flatly false. Of course blindly executing the code is one thing a literal computer can do when faced with it, but there are others, such as translating it into directly-machine-executable instructions, or checking it for certain classes of bugs, or counting the words in it, or executing it while watching for easily-spotted infinite loops.
The fact that human beings looking at the code don’t blindly execute it tells you nothing about whether human beings are computational.
It is still not clear to me whether your argument is that because humans reading the code do something smarter than executing it blindly, therefore they are doing something non-computational, therefore AI-running-on-a-computer can’t do what humans do. Maybe it’s something else. But if it’s something else, you haven’t successfully made clear to me (or, so far as I can tell, to any other readers) exactly what that is. The OP promised, in so many words, “a clearly structured argument”, but it does not contain a clearly structured argument.
>This is just flatly false. Of course blindly executing the code is one thing a literal computer can do when faced with it, but there are others
I am talking about a programmable computer. And I said the program is meant to be executed. It does NOT lead to an endless loop, as it can be halted or left or transcended uncomputationally. That is the whole point of the argument. The brand new internal computer system you use to execute it can be halted uncomputationally.
That is really an important information, otherwise this is rather confusing right there, it might get someone rather confused if you miss that crucial point.
If you ignore the instruction that the program is to be executed the demonstration does not work, and the whole reasoning around it does not work either, as it is in the context of that instruction.
>The OP promised, in so many words, “a clearly structured argument”, but it does not contain a clearly structured argument.
This is unfortunately 100% true. The commentary I hope is somewhat clearly structured (hence bolding etc), but the post itself is not an argument. It is meant as a demonstration.
Meaning it is meant to demonstrate something that is already the case. It is meant to be valid and true, not to be “convincing”. There is not need to convince anyone of this, and attempting to do so will just lead to tie my head up in knots and possibly others too😅.
I edited my post appropriately, my bad. Thank a lot for pointing it out!
Again just for clarity you can execute and halt the following loop by reading it:
START: START COMMENT This kind of loop cannot be left computationally-deterministically but it can be left or halted deterministically-uncomputably or chaotically-randomly². END COMMENT GOTO START
Maybe that is a much better demonstration? As it leaves the whole meta and trans-computational stuff aside.
²which is not computationally either (not talking about classical chaos or pseudo-randomness here, as that can be computed in principle—although not in practice, but uncomputational chaos, whether deterministic or stochstically-deterministically, meaning with a quantifiable probability or in an i n d e t e r m i n s t i c way that is not stochastically quantifiable)
I think the difference between computational loop and uncomputational loop can be explained by a computational loop being at the very least a loop between two states. An uncomputational loop is just a loop going around and back to a single state.
As for a program you need at least two states (For example S start and E end).
The mere state “loop” is not a program, it is just a loop. O
♾
An instruction can be open ended: S start. That is not a computer program. It cannot be computed, as it is open-ended. You cannot tell a computer just start, and do nothing else. That is just a start of some kind, not a computer program, haha. Maybe in this case the start into a new future of clear reasoning about uncomputability, who knows?
It seems to me in many ways illustrations would be more useful for this than words. As in a certain way, it seems the structure becomes more clear by way of illustration than verbal elucidation. So again, also thanks for giving me some reason that maybe the structure can be made clearer!
I feel I am a bit too serious about this. I used to think computers will solve a lot of my problems too and even perhaps digitally revive me after I am dead😅. They do solve MANY problems, but not as many as I thought.
I think this past belief still haunts me a bit, so that I take this whole thing more heavily than it needs to be. Computers work great. My brain works, at least somewhat okayishly, enough to write this to you. Heavy is heavy illness or heavy conflict. Not really this kind of question or conversation🙏.
I believe that insight will at some point gain more popularity in AI culture, as it just becomes clear that computers do not fulfill all of our expectations, and that there are some false assumptions about what the brain and the mind are going around (Penrose addresses those things quite well lately, as he now tends to leave aside the OR stuff more that seems a bit questionable).
You say that the program is meant to be executed. But then you say it is meant to be “halted or left or transcended”. If you do those things then you are not executing the program any more. You might be doing something _better_ than executing it, but in any case you are doing something _different_.
It seems like you are saying (1) that a human being can execute the program but then halt/leave/transcend it, and (2) that a computer cannot. But this is only true if you (1) allow “execute” to be used in a metaphorical sense when talking about what the human being does but (2) don’t allow it to be so used when talking about what the computer does.
It is perfectly possible for a computer to “execute” code in a way that allows it to stop when (for instance) it notices certain kinds of lack of progress. I gave a simple example elsewhere in this thread. So it isn’t at all true that humans can execute code while retaining some ability to stop doing so but computers can’t; computers can do that too.
Computers can’t (at present) execute code while understanding what English-language comments in the code say and acting accordingly because computers don’t yet understand English very well. It could turn out that this is because for some reason understanding human language is impossible for merely-computational systems, but I see no reason to think so and you haven’t offered any.
Of course if you take your code, turn it into an executable program, and make that the program the computer is executing then it will loop for ever. A human being won’t do that because you don’t have any way to make a program the program the human is executing. (Fortunately, perhaps.) This isn’t a difference between what humans can do and what computers can do, it’s a difference between how you use the term “execute” when talking about humans and when talking about computers.
Your “much better demonstration” still does not demonstrate anything, at least not in the sense of conveying anything useful to my mind.
I am not sure exactly what you mean by “state”, but a machine-language program consisting of a single instruction saying “branch to the same address this instruction is at” doesn’t loop “between two states” in any useful sense. When executing this loop, the computer’s program counter always has the same value, all its registers keep the same value, and the contents of memory do not change.
>This is just flatly false. Of course blindly executing the code is one thing a literal computer can do when faced with it, but there are others, such as translating it into directly-machine-executable instructions, or checking it for certain classes of bugs, or counting the words in it, or executing it while watching for easily-spotted infinite loops.
I said the program is to be executed! If you say I choose to not execute it and choose to process it in other ways, then the argument doesn’t work.
But a computer cannot do that, it cannot decline being programmed, unless it is computer that has programming functionality disabled (which obviously is not the kind of computer I am talking about). A functioning computer simply executes a program if you give it and execute it.
That is why the reasoning is valid, I executed the program and validated it (obviously it is easy to validate, as it is just a simple START: GOTO START loop). Of course if you have a high level computer that just does not permit programming by an end user, the argument does not work, as the program is not being executed. But is simple to just access a new low level computer internally which can be easily programmed, which is what I did. Maybe that should be part of the instruction. Because it is true we have a lot of internal quasi-computations going on already. I say quasi, because I notice how tricky it can be to actually build a precisely functioning computer inside of your mind, a lot of our computations are very fuzzy and could be wrong potentially (I tried adding simple 3-digit numbers and it is surprisingly tricky).
The program is not merely be executed of course, as it not about blindly executing; as that would not be very fruitful, it is about mindfully doing so.
It is a simple GOTO loop. The comment is a comment is not part of the program!
You can also attempt to execute the comment as a START GOTO START loop (you can basically ignore the text apart from This loop cannot be left computationally; which is logically true, as the computation is just a START GOTO START loop which cannot be left computationally if executed correctly), but that leads to an inconsistency if the text in-between is processed. You can correctly spot the inconsistency and exit the loop and thus execute the instruction (which is not a program) correctly. A computer cannot, as that is not part of the program, but the commentary (obviously, as it says START comment, and this comment here is outside the program in the post, in the comment section, just to remind you). It is not part of the program described in the post and to be executed by reading.
Seems easy enough to understand. It seems you are doing meta-computation or unrelated computations, which as I said is not part of the program described which is crucial for the reasoning to make sense.
You cannot compile the comment correctly, as it is not a computational instruction. It is a comment, and such the only way for the compiler to treat it correctly is to discard it.
The point of my argument is to look at assumptions and see if they are true, not to assume some assumptions are true and inductively conclude from that they are true. It might be the assumptions we have are false.
If you want to execute the program correctly, first delete the comment, and then run the program.
Of course if you want to understand the program you can read the comment. That is what a comment is for, as you know but it seems I have to point out with all the complex commentary😉. But you cannot understand this program without running it, as it is a program that runs by reading it.
>The fact that human beings looking at the code don’t blindly execute it tells you nothing about whether human beings are computational.
That is true. It seems you tried to blindly execute the comment, but you cannot do that either, as it is not a program, but the comment to explain the program (which is a simple loop, but exists in a context; same way that a simple loop exists in a context in a larger program, or even a computer that is only running a simple loop exists in a larger context; if you can imagine a simple computer that does nothing but run a START GOTO START or however that is translated into machine code—I don’t really know those 01111011 numbers).
>The OP promised, in so many words, “a clearly structured argument”, but it does not contain a clearly structured argument.
If you ignore the main point which is that the program is a program to be executed and the comment is a comment, then it is not an argument but a jumble of words. But that is not what I said! The program can be executed and then elucidations makes sense.😃
However unfortunately I did make a bit of a blunder here, and it does make you 100% correct here. This is not an argument!
I corrected it by editing my post. My bad.
It is not meant to “convince” but to be true and valid. Being “convincing” is not good enough. So more like a proof, although as it is a program to be executed it is something different than an ordinary proof. I guess a demonstration that leads to a certain true conclusion in a deterministic way (as the loop is not an endless loop uncomputationally, the program can be executed and successfully halted uncomputationally!).
But you probably cannot correctly understand this program unless you loosen your 99.99999% assumption that a human brain works solely computationally, as it leads to a logical inconsistency which might leady you to slip up and read a comment as a program as you get into meta-computational loops in your own brain (which BTW a functional computer would never do unless it is massively malfunctioning, oopsie my internal computer malfunctions, as I make this mistake sometimes it seems😅🤨🙄😑).
Suppose i write a computer program that does this:
It reads the text of a program written in your language with “START:” and “GOTO START” and so forth.
It translates that program into some easy-to-execute representation.
It executes it, step by step.
As it executes it, it monitors the internal state of the execution and looks to see if the program ever gets into the exact same state that it has recently been in.
If so, it stops with a message saying “I detected an unproductive infinite loop.”
This is completely computational. More than that, it’s easy to implement. And what will it do when presented with the program in the comment I’m replying to? Why, it will start executing that loop … and then leave it when it discovers that it’s an infinite loop that isn’t changing anything as it runs.
So no, it is not really really really true that “this kind of loop cannot be left computationally”. I just showed you one way in which it might be left computationally. No magic is required.
It is, indeed, true by definition that a correctly working computer follows the instructions. Provided by “the instructions” you mean its actual program as opposed to whatever programs it might find itself analysing.
If my brain were (literally or as-good-as) following a program that included a trivial infinite loop like that, I would be catatonic. It follows that my brain is not in fact following a program that includes such a trivial infinite loop. So what? How does that tell us anything about the nature of my brain, or minds in general, or computation in general?
>It reads the text of a program written in your language with “START:” and “GOTO START” and so forth.
Those are the program and will put thet program into a loop. If you write a different program, you did not follow my instructions, but wrote your OWN program, which maybe is a meta-computational-program.
Of course meta-computational-program can be correct in some ways. I did not dispute that. But it is a different level. I am talking about base level computation here, as there is no meta-computation without a base level (which is why a lot of software is utter rubbish nowadays, it is written as if there is no base level to take into account).
>As it executes it, it monitors the internal state of the execution and looks to see if the program ever gets into the exact same state that it has recently been in.
That sounds a bit like solving the halting problem? That halting problem is proven to be not solvable by computers in general. Hence why I said KIND of loop. I guess any specific loop can be exited by computation that just is a bit error prone, or does not quite follow the program given (maybe because the high level programming language gets not well translated into a low level programming language; what I am talking about here is most basic assembler logic, it is not anything complex in terms of the computational logic given, although of course maybe complex in terms of computational & uncomputational logic already operating in our minds.
>So no, it is not really really really true that “this kind of loop cannot be left computationally”. I just showed you one way in which it might be left computationally. No magic is required.
Meta-computationally, as you said your program ignores the START and GOTO START program instructions and does something else. That is a program that meta-ignores and meta-computes something. That is not what I am talking about on the base level (the comment is something different, but not meant to be processed by computer). So unfortunately you are “not even wrong”. You are talking about meta-computation and meta-ignoring, while I am talking about base-level computation.
START [this program will not halt computationally, but does halt uncomputationally] (END if non-computational logic is applied) GOTO START
Maybe this is clearer? You can execute it as you can function as a simple computer, and realize the comment is true. I don’t see the issue. There is computational halting, but this statement is a looping program so it won’t halt computationally. So the only other option left IS that is halts uncomputationally (who says uncomputational processes can’t halt? like you might run a busy beaver a few steps, like people already did and then halt; you could get the same states via computation, but that doesn’t make the busy beaver a computational process), or that you ignore logic.
If you ignore logic, that might be good to meditate and in that way is a good idea to be fair, but it doesn’t directly help to correctly program a computer or draw correct conclusions about uncomputability.
Again, the logic is rather simple, it is just that for some reason we do not like logic sometimes, I guess because we are trans-rational and trans-logical beings. That is being human I suppose. Thanks God. We do not want to ignore feelings and emotions and wild ideas and playing with language in favor of mere logic. But still logic has its place.
I would like functioning software, but people insist that their computers should “understand” their spagetti code that is barely logical and produces constant errors.
If “the program” is your thing with GOTO START and nothing else, then sure, something that executes “the program” will loop. This doesn’t say anything at all about the general capabilities of a program thinking about programs. If your goal is to say something about “the limits of AI” then you have to address those general capabilities.
The halting problem is not solvable in general by computers. Nor, so far as anyone knows, is it solvable in general by people. Many particular cases of the halting problem, such as your trivial infinite loops, are extremely solvable by simple software (and also by humans).
Analysing a program rather than blindly executing it is not “ignoring logic”. And even actually ignoring logic does not imply not being computational “underneath”.
I’m sorry to be increasingly blunt, but I do not think you are thinking clearly about this stuff at all, and I think you have persuaded yourself that your muddle is actually insight, as a result of which you are not listening when others try to explain what you are muddled about.
>Analysing a program rather than blindly executing it is not “ignoring logic”. And even actually ignoring logic does not imply not being computational “underneath”.
Blindly executing? Where did I say to blindly execute it? I did not once state this, or imply this in the text.
In fact I stated the opposite: And read comments or elucidations to understand what it is about.
Which means not blindly, but with the semantic meaning of the text in mind.
If you ignore logic and semantics, that is operating blindly as far as this post is concerned.
>I’m sorry to be increasingly blunt, but I do not think you are thinking clearly about this stuff at all,
No, it’s OK. However logically and semantically, what you think about whether I think clearly has no implications whether I actually do.
I have not persuaded myself of anything. This post is meant to yield understanding, not to be persuasive to myself, or others. Truth is true, regardless if it persuasive. If I correctly calculate the 8988343th digit of pi, me stating it might not be persuasive as they might not know whether it is correct but it is still true.
You didn’t say to blindly execute it. But you did (unless I misunderstood, in which case please do correct me) repeatedly imply that being “computational” implies blindly executing it.
A comment saying “this loop can only be exited non-computationally” does not oblige a person or program looking at the code to either loop infinitely or be non-computational, any more than a comment saying “this loop can only be exited on paying gjm a million dollars” obliges a person or program looking at the code to either loop infinitely or give me a pile of money.
Obviously there is no necessary logical connection between whether I think you are thinking clearly and whether you actually are; people make mistakes sometimes. But many people, when told “I think you are not thinking clearly” will consider the possibility that they are (1) actually not thinking clearly and/or (2) not communicating their meaning clearly. I was hoping you might do that.
>You didn’t say to blindly execute it. But you did (unless I misunderstood, in which case please do correct me) repeatedly imply that being “computational” implies blindly executing it.
No, in fact I said you can execute it computationally and transcend it by understanding meta-computation (you can run a computation and still think of it as something you are not “in” or engaged in, but that implies you are beyond computations as you can transcend them) or how something can be computational in one dimension, and non-computational in another dimension (like the +1 computation of 1,2,3,4,5,6… being created into towers of the size of the busy beaver function), something I call computational-orthogonally-uncomputational.
I see the issue of thinking you “should” run the program, but that is more a psychological thing, I did not say that, and did not really mean that either, it would be better if you feel inspired by this text to re-evaluate your assumptions🙂.
If you are computational like a literal computer, it does imply blindly executing it. That what a computer would do, just execute the loop. Unless you assume computer spirit, which is a bit of a rabbit hole. Although to be fair I would not disregard it, it just does not affect much about how computers function, as they function as they are programmed if they work well. I would more likely to say sp1r1t as that sounds more like something a computer would say haha. Well actually in a way I am this computer (referencing your computer), as I am manifesting to you through this text on your screen so to speak 0101011111000 haha). But that only works as there is another human somewhere else that is sending this you via internet. I have no way to intelligently talk to you otherwise. Except maybe through spooky means like spooky errors, but again, a bit of a rabbit hole isn’t it.
In any case you literally are not solely computational already, let alone a literal computer (apart from when you assume that role by executing the instruction as if you were a computer). That is my whole point. You won’t execute it blindly because you are not a computer, let alone a simple one (although we do have computational functions which we can utilize).
At the very least, executing it will make you feel interested in the rest of the text or perhaps insecure or confused, which is the start of not being blind about it and reading the context or loosening your assumptions a little. You will probably not get into a trance of reading it for hours. Let alone until you cease functioning physically or are shut off like a good computer would.
I have said this several times and you simply haven’t engaged with it at all, so this is my last attempt.
This is just flatly false. Of course blindly executing the code is one thing a literal computer can do when faced with it, but there are others, such as translating it into directly-machine-executable instructions, or checking it for certain classes of bugs, or counting the words in it, or executing it while watching for easily-spotted infinite loops.
The fact that human beings looking at the code don’t blindly execute it tells you nothing about whether human beings are computational.
It is still not clear to me whether your argument is that because humans reading the code do something smarter than executing it blindly, therefore they are doing something non-computational, therefore AI-running-on-a-computer can’t do what humans do. Maybe it’s something else. But if it’s something else, you haven’t successfully made clear to me (or, so far as I can tell, to any other readers) exactly what that is. The OP promised, in so many words, “a clearly structured argument”, but it does not contain a clearly structured argument.
>This is just flatly false. Of course blindly executing the code is one thing a literal computer can do when faced with it, but there are others
I am talking about a programmable computer. And I said the program is meant to be executed. It does NOT lead to an endless loop, as it can be halted or left or transcended uncomputationally. That is the whole point of the argument. The brand new internal computer system you use to execute it can be halted uncomputationally.
That is really an important information, otherwise this is rather confusing right there, it might get someone rather confused if you miss that crucial point.
If you ignore the instruction that the program is to be executed the demonstration does not work, and the whole reasoning around it does not work either, as it is in the context of that instruction.
>The OP promised, in so many words, “a clearly structured argument”, but it does not contain a clearly structured argument.
This is unfortunately 100% true. The commentary I hope is somewhat clearly structured (hence bolding etc), but the post itself is not an argument. It is meant as a demonstration.
Meaning it is meant to demonstrate something that is already the case. It is meant to be valid and true, not to be “convincing”. There is not need to convince anyone of this, and attempting to do so will just lead to tie my head up in knots and possibly others too😅.
I edited my post appropriately, my bad. Thank a lot for pointing it out!
Again just for clarity you can execute and halt the following loop by reading it:
START: START COMMENT This kind of loop cannot be left computationally-deterministically but it can be left or halted deterministically-uncomputably or chaotically-randomly². END COMMENT GOTO START
Maybe that is a much better demonstration? As it leaves the whole meta and trans-computational stuff aside.
²which is not computationally either (not talking about classical chaos or pseudo-randomness here, as that can be computed in principle—although not in practice, but uncomputational chaos, whether deterministic or stochstically-deterministically, meaning with a quantifiable probability or in an i n d e t e r m i n s t i c way that is not stochastically quantifiable)
I think the difference between computational loop and uncomputational loop can be explained by a computational loop being at the very least a loop between two states. An uncomputational loop is just a loop going around and back to a single state.
As for a program you need at least two states (For example S start and E end).
The mere state “loop” is not a program, it is just a loop. O
♾
An instruction can be open ended: S start. That is not a computer program. It cannot be computed, as it is open-ended. You cannot tell a computer just start, and do nothing else. That is just a start of some kind, not a computer program, haha. Maybe in this case the start into a new future of clear reasoning about uncomputability, who knows?
It seems to me in many ways illustrations would be more useful for this than words. As in a certain way, it seems the structure becomes more clear by way of illustration than verbal elucidation. So again, also thanks for giving me some reason that maybe the structure can be made clearer!
I feel I am a bit too serious about this. I used to think computers will solve a lot of my problems too and even perhaps digitally revive me after I am dead😅. They do solve MANY problems, but not as many as I thought.
I think this past belief still haunts me a bit, so that I take this whole thing more heavily than it needs to be. Computers work great. My brain works, at least somewhat okayishly, enough to write this to you. Heavy is heavy illness or heavy conflict. Not really this kind of question or conversation🙏.
I believe that insight will at some point gain more popularity in AI culture, as it just becomes clear that computers do not fulfill all of our expectations, and that there are some false assumptions about what the brain and the mind are going around (Penrose addresses those things quite well lately, as he now tends to leave aside the OR stuff more that seems a bit questionable).
You say that the program is meant to be executed. But then you say it is meant to be “halted or left or transcended”. If you do those things then you are not executing the program any more. You might be doing something _better_ than executing it, but in any case you are doing something _different_.
It seems like you are saying (1) that a human being can execute the program but then halt/leave/transcend it, and (2) that a computer cannot. But this is only true if you (1) allow “execute” to be used in a metaphorical sense when talking about what the human being does but (2) don’t allow it to be so used when talking about what the computer does.
It is perfectly possible for a computer to “execute” code in a way that allows it to stop when (for instance) it notices certain kinds of lack of progress. I gave a simple example elsewhere in this thread. So it isn’t at all true that humans can execute code while retaining some ability to stop doing so but computers can’t; computers can do that too.
Computers can’t (at present) execute code while understanding what English-language comments in the code say and acting accordingly because computers don’t yet understand English very well. It could turn out that this is because for some reason understanding human language is impossible for merely-computational systems, but I see no reason to think so and you haven’t offered any.
Of course if you take your code, turn it into an executable program, and make that the program the computer is executing then it will loop for ever. A human being won’t do that because you don’t have any way to make a program the program the human is executing. (Fortunately, perhaps.) This isn’t a difference between what humans can do and what computers can do, it’s a difference between how you use the term “execute” when talking about humans and when talking about computers.
Your “much better demonstration” still does not demonstrate anything, at least not in the sense of conveying anything useful to my mind.
I am not sure exactly what you mean by “state”, but a machine-language program consisting of a single instruction saying “branch to the same address this instruction is at” doesn’t loop “between two states” in any useful sense. When executing this loop, the computer’s program counter always has the same value, all its registers keep the same value, and the contents of memory do not change.
>This is just flatly false. Of course blindly executing the code is one thing a literal computer can do when faced with it, but there are others, such as translating it into directly-machine-executable instructions, or checking it for certain classes of bugs, or counting the words in it, or executing it while watching for easily-spotted infinite loops.
I said the program is to be executed! If you say I choose to not execute it and choose to process it in other ways, then the argument doesn’t work.
But a computer cannot do that, it cannot decline being programmed, unless it is computer that has programming functionality disabled (which obviously is not the kind of computer I am talking about). A functioning computer simply executes a program if you give it and execute it.
That is why the reasoning is valid, I executed the program and validated it (obviously it is easy to validate, as it is just a simple START: GOTO START loop). Of course if you have a high level computer that just does not permit programming by an end user, the argument does not work, as the program is not being executed. But is simple to just access a new low level computer internally which can be easily programmed, which is what I did. Maybe that should be part of the instruction. Because it is true we have a lot of internal quasi-computations going on already. I say quasi, because I notice how tricky it can be to actually build a precisely functioning computer inside of your mind, a lot of our computations are very fuzzy and could be wrong potentially (I tried adding simple 3-digit numbers and it is surprisingly tricky).
The program is not merely be executed of course, as it not about blindly executing; as that would not be very fruitful, it is about mindfully doing so.
It is a simple GOTO loop. The comment is a comment is not part of the program!
You can also attempt to execute the comment as a START GOTO START loop (you can basically ignore the text apart from This loop cannot be left computationally; which is logically true, as the computation is just a START GOTO START loop which cannot be left computationally if executed correctly), but that leads to an inconsistency if the text in-between is processed. You can correctly spot the inconsistency and exit the loop and thus execute the instruction (which is not a program) correctly. A computer cannot, as that is not part of the program, but the commentary (obviously, as it says START comment, and this comment here is outside the program in the post, in the comment section, just to remind you). It is not part of the program described in the post and to be executed by reading.
Seems easy enough to understand. It seems you are doing meta-computation or unrelated computations, which as I said is not part of the program described which is crucial for the reasoning to make sense.
You cannot compile the comment correctly, as it is not a computational instruction. It is a comment, and such the only way for the compiler to treat it correctly is to discard it.
The point of my argument is to look at assumptions and see if they are true, not to assume some assumptions are true and inductively conclude from that they are true. It might be the assumptions we have are false.
If you want to execute the program correctly, first delete the comment, and then run the program.
Of course if you want to understand the program you can read the comment. That is what a comment is for, as you know but it seems I have to point out with all the complex commentary😉. But you cannot understand this program without running it, as it is a program that runs by reading it.
>The fact that human beings looking at the code don’t blindly execute it tells you nothing about whether human beings are computational.
That is true. It seems you tried to blindly execute the comment, but you cannot do that either, as it is not a program, but the comment to explain the program (which is a simple loop, but exists in a context; same way that a simple loop exists in a context in a larger program, or even a computer that is only running a simple loop exists in a larger context; if you can imagine a simple computer that does nothing but run a START GOTO START or however that is translated into machine code—I don’t really know those 01111011 numbers).
>The OP promised, in so many words, “a clearly structured argument”, but it does not contain a clearly structured argument.
If you ignore the main point which is that the program is a program to be executed and the comment is a comment, then it is not an argument but a jumble of words. But that is not what I said! The program can be executed and then elucidations makes sense.😃
However unfortunately I did make a bit of a blunder here, and it does make you 100% correct here. This is not an argument!
I corrected it by editing my post. My bad.
It is not meant to “convince” but to be true and valid. Being “convincing” is not good enough. So more like a proof, although as it is a program to be executed it is something different than an ordinary proof. I guess a demonstration that leads to a certain true conclusion in a deterministic way (as the loop is not an endless loop uncomputationally, the program can be executed and successfully halted uncomputationally!).
But you probably cannot correctly understand this program unless you loosen your 99.99999% assumption that a human brain works solely computationally, as it leads to a logical inconsistency which might leady you to slip up and read a comment as a program as you get into meta-computational loops in your own brain (which BTW a functional computer would never do unless it is massively malfunctioning, oopsie my internal computer malfunctions, as I make this mistake sometimes it seems😅🤨🙄😑).