For those that are unfamiliar, Tim Roughgarden is a phenomenal instructor, and has made significant contributions to the field of algorithmic game theory, which has strong connections to a lot of the work he appears to be doing here. I highly recommend his excellent introductory lectures on the subject, especially if you're interested in pursuing his ideas here more rigorously: https://www.youtube.com/watch?v=TM_QFmQU_VA&list=PLEGCF-WLh2...
His website also hosts a bunch more work as well as various lecture notes and exercises: https://timroughgarden.org/
Tim's lectures helped me a lot during my PhD when I was getting up to speed on this subject, and some of the more nuanced ways that computer scientists have worked with these broad algorithmic problems.
Computation has turned out to be a far more general concept than I think was imagined, up to the point that many computer scientists now seem to equate computation with the functioning of the universe. Recently it's been shown that there are real, physical processes which are undecidable (we cannot know if a latice of atoms has a spectral gap or not, we cannot determine if a specific particle in a fluid flow will reach a specific place or not, we cannot determine if a ray of light will reach a specific target in certain configurations of reflection).
Our world appeared computable, but it isn't, even if P=NP.
>Recently it's been shown that there are real, physical processes which are undecidable
I want to push back a bit on this claim along two dimensions.
Imagine a physical Turing machine built out of atoms, gears, levers, and an electron parked on the read/write head and ask whether that electron ever crosses some fixed plane in space, which it does only when the machine enters its halt configuration. That's now a purely physical question about a trajectory (does this electron ever reach a certain target), yet answering it for the whole family of such machines is literally the halting problem, so there's a physical process that's undecidable.
Your examples about physical processes being undecidable are all basically just this... there examples of using reflections of light, or the flow of liquid, etc... and demonstrating that these physical processes in principle are sufficient to model a universal Turing machine.
And while it's fascinating that certain things you may not have expected can be used to model computation, it's misleading, or rather it's too strong of a claim to believe that there exist actual/real physical processes whose outcomes are undecidable. That's a subtle but very common misinterpretation of what undecidability is.
Undecidability, whether in physics or computer science, only applies to the infinitely broad class of a problem as a whole, it never applies to a specific instance of a problem. So it can never be the case that there's a certain configuration of reflections for which it's undecidable whether a ray of light reaches a target. Nor can it be the case that for a specific lattice of atoms, it's undecidable whether it has a spectral gap or not. It can only be the case that for the problem as a whole where the parameter space is entirely unbounded, there is no single algorithm that can decide if a ray of light reaches a specific target for all possible arbitrary (and infinitely many) configurations. Once you fix a specific system, then the undecidability goes away.
Not claiming that you are necessarily making this misconception, but I often see people misinterpret undecidability to mean that there exists a specific problem, like with specific inputs, where it's somehow impossible to know what the answer will be. Undecidability always requires an infinite family of instances, and it's a statement about the nonexistence of a single algorithm that correctly answers every instance in that family. It says nothing about any particular instance being unknowable/undecidable.
I may be misremembering Godel's proof or misunderstanding your last paragraph, but I thought Godel's proof actually presented a specific undecidable statement. The hope then was that somehow undecidable statements could be cordoned off from decidable statements, and Turing's result showed that that wasn't possible. Perhaps that's what you mean by "the nonexistence of a single algorithm that correctly answers every instance in that family"?
If I am wrong, please pardon. I suspect I am. But was this comment edited by Claude? I ask specifically because it is well written, substantive, all which is expected here, but the "push back" part, to me, must be a) an artifact of Claude, either by osmotic assimilation (Which is happening to many innocent users) or b) Claude itself.
Feel free to flag this comment if I get an answer. I do want to know.
No Claude was not involved in any way in me writing it, and honestly it's kind of getting depressing how many comments are constantly questioning peoples use of LLMs.
Just a heads up, "I want to push back on" is an idiom Claude frequently uses.
It is depressing though, writing feels like it's in part becoming a game of outpacing the latest LLM's idiosyncrasies so we can signal authenticity, which perversely, is achieved through using an LLM enough so that you can become familiar with its flavor of communication.
This is what makes me sad about the AI age; many articles now have the same phrasing, the same analogies, the same quips, structure, the same wording; once you start to see it there's no going back.
I actually laughed quite a lot to begin with, GPT models saying things like "...might look like P, but is NP wearing a hat and a lab coat..." and "...is a haunted house disguised as a git repository..."; but alas when you've heard them a million times everywhere it really starts to bite.
- The physics of the universe can be completely modeled as computation, and
- It's possible to pose undecidable problems about the way the universe unfolds
This is intrinsic to the idea of undecidability even for Turing machines, e.g. "we equate computation with the functioning of Turing machines, but there are real processes executable in Turing machines that are undecidable".
A key thing about the undecidability problem wrt physics is preparation of the initial state. In math and computer science it is relatively straightforward to prepare such problems now (though this represented an enormous leap conceptually), but the "undecidability" of all physical problems relies on construction of materials that are clearly unconstructable - systems of infinite negentropy (eg Turing machines), infinite mass (the lattice), bespoke local interactions etc. Problems standing in the way of physics decidability are typically chaos, far from equilibrium mechanics, elementary SNR considerations and so forth, not problems of logic.
Of course, if our universe is undecidable it must be the case that computable processes can be executed within it, and it might be the case that all of the processes that are ever executed within it are computable... but it might be that some of the processes that are executed are not computable... because the machine may.. or may not?
I think there's an equivocation of "computable" going on here. Mathematicians talk about a lot of things like "uncomputable sequences" but that is usually making a statement about the sequence, not necessarily any individual member. The Busy Beaver sequence is uncomputable. You can, however, quite trivially compute BB(2), even in your head if you're a bit careful. You can set up individual elements of an uncomputable sequence in our universe, and you may be unable to state in advance what the system would do with anything less than simply letting it run and see what happens due to the complexity of the system, but being a member of an uncomputable sequence doesn't mean that you can't in fact set those things up and watch them run. The Universe doesn't throw an "UncomputableCircumstance" exception or anything. It just keeps advancing to the next state. Your inability to make certain statements about that next state or some future state is not its problem.
The infinite lattice doesn't represent a "real" physical processes, it's just mathematical technique for closing a (fundamentally) quantized combinatorial sum over millions of interacting elements. The gap problem exists in the limit. For real systems the spectrum can be measured (in principle) by probing the ground state. The computational paradigm is incredibly general but only within what's apparently a pretty atypical thermodynamic regime (the ordered universe).
Undecidability is a problem of answer-extraction from a process, it doesn’t preclude the process from executing deterministically. The universe could well be the live execution of a deterministic, even basic algorithm, with all kinds of questions about its execution being undecidable.
> up to the point that many computer scientists now seem to equate computation with the functioning of the universe.
Do you think that's a kind of tunnel vision? If the only thing you focus on is computation, you'll probably end up seeing computation everywhere - it became a way of seeing the world.
It is a common accusation. There's a somewhat famous quote I've seen a few times:
"It's interesting to look back through history on this one. Each age has its pinnacle of technology, and each age uses that technology as a metaphor for nature, for the universe. In ancient Greece, the technological marvels were musical instruments and the ruler and compass. The Greek philosophers tried to build an entire cosmology from number, harmony, proportion, form, and so on — from mathematics, basically. Remember the music of the spheres? The Pythagoreans believed that nature was a manifestation of rational mathematics. Later on the pinnacle of technology was the clockwork. Newton wanted a clockwork universe, the entire universe as a gigantic clockwork mechanism, with all the parts interlocking and ticking over with infinite precision. Then in the 19th century along came steam power, and the universe was then depicted as an enormous heat engine, or thermodynamic machine, running down toward its heat death. Today the computer is the pinnacle of technology, so it's now fashionable to talk about nature as a computational process."
While "computer" may give us impressions of something with "a CPU" and "RAM" and "a disk drive", it does at least seem plausible that the universe as computation is a plausible base level, though. Unlike "the music of the spheres", which to the extent that it made predictions of the world, it got them wrong in the most basic way, viewing it through a lens of computation allows us to put some quite subtle and interesting limits on things. "Computation" is a pretty flexible substrate; it is difficult to imagine how the proposition "the universe is a computation and subject to the limitations thereto" could be falsified, and if it could, it is difficult to imagine how we would be able to know it was so falsified. Nevertheless the math of computation allows us to say non-trivial things about the universe as a result; it is not a vacuous generalization, though it is certainly a loose one... being able to say yet more concrete things about the nature of the computation, such as "this is exactly how gravity works", has quite a bit more utility.
From my naive pov: Related to computation is the concept of state (I know, functional languages can get away without it, sort of). I always wondered how the universe “knows” the mass of the sun. If there are some underlying functions/computations “running” in the background to keep planets moving and so on, and if the mass of planets is a key element in such computations… then either: the mass is calculated “on the fly” every time (seems expensive) or it’s a variable (how is it updated? Where is it “stored”?)
The somewhat abbreviated answer is that the "state" is formalized into the concept of fields. All the physical properties we can observe are from coupling with the relevant fields. The speed at which changes can propagate in fields is C, hence the speed of light being the same value.
> "Ergo is a nonprofit that publishes long-form philosophical lecture courses with leading scholars. Everything we publish is freely available, without ads or paywalls."
Discrete math and Algorithms were two of my favorite college classes. They were really the only part of computer science that was mind blowing. The rest was software engineering, which was transparently "possible". Like, yes, big programs and OSs and numerical models exist, and yes I will graduate and work with them and add to them, someday, yeah sure.
But decidabilty, Godel's theorm, busy beaver numbers, etc... those were unexpected and worth the price of admission.
Thanks Prof Hadas, you made it fun to have my mind blown.
Is 'computation' really universal and fundamental? Turing machines, lambda calculus, algorithmic notations, they're all human-made formalisms. Are the halting problem and the limits of computability actually constraints that exist only within these human-made formal systems?
When we constrain a formalism to reduce complexity, it feels like necessity emerges from within those constraints. For example, when we say 'CRUD app,' we immediately think of a specific pattern. In the same way, once you adopt a 'form,' the constraints that come with that form progressively expand the state space. In that sense, it feels like both discovery and invention.
Famous mathematicians and scientists often distinguish between model and reality, yet we tend to mistake the model's shape for reality itself. People like John Wheeler and Stephen Wolfram argue that computation is a fundamental property of the universe. But can we really say that when we downcast reality to fit human cognition, losing information in the process, and then upcast it back, the information is fully restored? I always find this point difficult.
Landauer's principle says that abstract logical operations, information erasure, necessarily increase physical entropy. That shows there's a thermodynamic cost to physically implemented information processing. But I don't think that proves computation is fundamental.
Whether it's computation or geometry, they're all abstract formalisms created by humans. But when we actually measure things, they're subject to physical laws. Still, whether that makes them fundamental is a difficult question. I think these are just results of the process where humans name phenomena and constrain them. I don't think they're the cause.
You can define computation broadly enough, as 'a process where a state changes to another state according to rules,' to make almost everything look like computation. But being able to explain something with computation and claiming that computation is fundamental are different things, aren't they?
Meaning exists within the structures and constraints of human-made formalisms. We artificially lower cognitive complexity and translate things into human language. Whether that's fundamental, I'm not sure.
Maybe I'm a reductionist. Plenty of intellectually brilliant scholars make those claims, but people like me, with slower minds, end up thinking these kinds of stupid thoughts. I wish I could organize my own thoughts bette
Ahhh this is fantastic thank you; it _is_ hard to reconcile whether problems come with the original topic or whether they are introduced by the abstraction that we _need_ to make in order to quantify a thing/explain it to ourselves and others.
Regarding the downcast/upcast; I think it _can_ be possible to do this successfully;
> I have a glass, I throw it at a hard surface. What will happen? Well (duh) the glass will (most likely) break.
This hypothesis completely ignores nearly 100% of all relevant physics and the laws surrounding the problem; the arrangement of air molecules, the arrangement of the molecules in the glass, the physical forces governing me, it reduces the entire equation down to some really basic napkin physics.
But; does the outcome work? Has my interpretation of the universe and its physics actually predicted what will happen?
Probably a stupid example, but I think that a lossy picture of the universe can still yield a correct answer.
I can't physically run a simulation of the entire universe in my brain, as my brain is part of that same universe. Lossy representations/models are a necessity in the thinking-ham bound world in which we exist.
Something has always nagged me about the halting problem, might be my mis-understanding of the problem space but;
- You have a piece of software
- That software does in memory compute only
- The software does not touch any peripherals, networking, or any other external source which introduce unpredictability (x)
I'm convinced that somehow this can be solved/proven whether the execution will halt or not.
(x) The second you touch any external peripherals or networking, you're effectively asking the question of "If I phone my friend, will they pick up the phone?" -> to which the only answer is, "They'll pick it up, only if they pick it up/are there". You can't answer that question without trying it.
Am I missing the point? I'm sure you can introduce other edges even in the limited model above, e.g. where a memory stick stops responding or something; but all in if you have reliable kit and don't touch anything external, why can't this be solved?
For the finite case, the more relevant question is, can you predict whether or not the computation will halt in less time than 1. executing the algorithm and 2. checking whether or not the algorithm ever loops?
Bear in mind checking whether or not the algorithm ever loops means taking the full state of the system and checking against a database of all previous states of the system. Bear in mind that the Atari 2600, and its whopping 128 bytes of RAM, has with that amount of RAM more states than there are planck volumes * planck time intervals in the known universe... by over sixty orders of magnitude. And every three additional bits you add to the RAM of the system your are looking at adds an order of magnitude (minus a bit) to that, so, nearly 3 orders of magnitude more states per byte... not per megabyte or gigabyte, per byte. Call it 2 orders of magnitude per byte if you want to be conservative.
It can be solved, if by nothing else simply by running it, in the mathematical sense. In the practical sense it's not even close. That's why we use the Turing machine analysis... technically it's an approximation because we don't actually have real Turing machines. However the size of the finite state machines we have is such that it is far more productive to simply say "the halting problem is unsolvable" than to argue about how many orders of magnitude of orders of magnitude of resources it takes to solve the question of whether or a given program terminates.
Thank you for your insightful answer, in reduction; "Don't fight a god, you won't win, and you'll definitely die in the process!"
The approach you describe though is brute force. I don't think (if there even is an answer to this problem) that it can be brute forced; that's where you run into the limits of hardware/computation/energy and start talking about timeframes which exceed the life of the universe.
I think brute force might be a useful tool in places to validate results, but if there _is_ an answer to this problem it's purely mathematical.
Apologies for sounding both excited and naive; these sorts of challenges make me happy in strange ways that no other thing does!
There is no general solution other than brute force. That's not a terribly difficult extension of the halting problem, it just takes more paperwork to deal with the edge cases, but you'll get to that result. The same basic technique works: Your supposed solution to the problem is itself some finite program, and you can feed it the "I halt only if I don't halt" problem too. The difference is that brute force is a solution, because now instead of an infinite sequence of programs you have a bounded set of programs. So whatever concrete "I halt only if I don't halt" you pass to someone within the specified limits, there is definitely some answer, but your technique won't be able to tell what it is short of just running it.
For the same reason the halting problem doesn't even have a good heuristic, neither does this. Unpredictable chaos is not an exceptional case, it is the exponentially-normal case. You have to go the other way, and construct programs deliberately designed to have the ability to tell if they halt. The term for that if you want to learn more about it is "non-Turing complete programming language", sometimes called a "sub-Turing" programming language: https://increment.com/programming-languages/turing-incomplet...
You can read that as "this is how hard it is to construct code that we can make execution guarantees about". That focuses on code that is deliberately constructed to be finite in scope and may be something that can be strictly bounded in memory use or time or both. You'll note if you spend any time working with them how hard they are to work with. That's a reflection of the limits of generalizing any such proofs of time or space of a given program.
If there is a general algorithm that does what you think, we don't even have a clue what it would look like. And we have a lot of clues there can't be any such thing.
Imagine a program that generates the digits of pi, one after the other and stops when it is finished. A general purpose program analysing this program to decide if it stops or not would have to know about pi. And about every other possible algorithm.
Thank you internet stranger, for introducing me to hard-maths drugs; am hooked!! \o/
I love the idea of this. So the BB problems are individual iterations of the halting problem right? To truly solve the problem one would have to come up with a program which would operate on all possible BB numbers?
This truly leads into "computation"; when we're dealing with known quantities, yes, we can "solve" the halting problem. The second you move into "we don't know the answer yet", the can of worms opens. Thank you.
There remain undecidable problems even with finite memory/state space.
Linear bounded automata (LBA) the halting problem is decidable. But many properties of LBA are undecidable:
Emptiness: Does an LBA reject all possible inputs?
Universality: Does an LBA accept all possible inputs over its alphabet?
Equivalent: Do two LBA accept the same language?
Finiteness: Does an LBA accept a finite number of strings.
Computation is the study of infinity. That is how I like to think about it. It doesn't seem that way when you're building a website (well, in some ways because it's not at that point), but every algorithm, data structure, etc is an investigation into a certain part of infinity. Think of the way in which we generally categorize algorithms (Big-O notation)... that's just characterizing infinity.
If the memory is bounded then your software is a simple finite automaton, and can be decided in finite time. The issue is with unbounded memory. The issue with the halting problem is a simple characteristic of infinity. This is actually what people are noticing when they say that computation is a fundamental part of the universe. They are correct! The universe deals with infinitisemals all the time. As humans, we have only discovered ways of dealing with certain classes of infinitesemals (calculus). The others remain beyond our ability to characterize. Indeed, some have been proven to be uncharacterizable.
You might enjoy the book Escher Gödel Bach, the Eternal Golden Braid by Douglas Hofstadter, which will open up the world, power, and "danger" of proofs using contradiction to you.
What even is computation? State-based inference. But intelligence itself does not rely on computation, only its biological counterweight seems to and only in certain situations. If Computation is a "Universal Concept" then there are at least 4 or 5 more "Universal Concepts" analogous to intuition and spontaneity.
For those that are unfamiliar, Tim Roughgarden is a phenomenal instructor, and has made significant contributions to the field of algorithmic game theory, which has strong connections to a lot of the work he appears to be doing here. I highly recommend his excellent introductory lectures on the subject, especially if you're interested in pursuing his ideas here more rigorously: https://www.youtube.com/watch?v=TM_QFmQU_VA&list=PLEGCF-WLh2...
His website also hosts a bunch more work as well as various lecture notes and exercises: https://timroughgarden.org/
Tim's lectures helped me a lot during my PhD when I was getting up to speed on this subject, and some of the more nuanced ways that computer scientists have worked with these broad algorithmic problems.
Computation has turned out to be a far more general concept than I think was imagined, up to the point that many computer scientists now seem to equate computation with the functioning of the universe. Recently it's been shown that there are real, physical processes which are undecidable (we cannot know if a latice of atoms has a spectral gap or not, we cannot determine if a specific particle in a fluid flow will reach a specific place or not, we cannot determine if a ray of light will reach a specific target in certain configurations of reflection).
Our world appeared computable, but it isn't, even if P=NP.
>Recently it's been shown that there are real, physical processes which are undecidable
I want to push back a bit on this claim along two dimensions.
Imagine a physical Turing machine built out of atoms, gears, levers, and an electron parked on the read/write head and ask whether that electron ever crosses some fixed plane in space, which it does only when the machine enters its halt configuration. That's now a purely physical question about a trajectory (does this electron ever reach a certain target), yet answering it for the whole family of such machines is literally the halting problem, so there's a physical process that's undecidable.
Your examples about physical processes being undecidable are all basically just this... there examples of using reflections of light, or the flow of liquid, etc... and demonstrating that these physical processes in principle are sufficient to model a universal Turing machine.
And while it's fascinating that certain things you may not have expected can be used to model computation, it's misleading, or rather it's too strong of a claim to believe that there exist actual/real physical processes whose outcomes are undecidable. That's a subtle but very common misinterpretation of what undecidability is.
Undecidability, whether in physics or computer science, only applies to the infinitely broad class of a problem as a whole, it never applies to a specific instance of a problem. So it can never be the case that there's a certain configuration of reflections for which it's undecidable whether a ray of light reaches a target. Nor can it be the case that for a specific lattice of atoms, it's undecidable whether it has a spectral gap or not. It can only be the case that for the problem as a whole where the parameter space is entirely unbounded, there is no single algorithm that can decide if a ray of light reaches a specific target for all possible arbitrary (and infinitely many) configurations. Once you fix a specific system, then the undecidability goes away.
Not claiming that you are necessarily making this misconception, but I often see people misinterpret undecidability to mean that there exists a specific problem, like with specific inputs, where it's somehow impossible to know what the answer will be. Undecidability always requires an infinite family of instances, and it's a statement about the nonexistence of a single algorithm that correctly answers every instance in that family. It says nothing about any particular instance being unknowable/undecidable.
I may be misremembering Godel's proof or misunderstanding your last paragraph, but I thought Godel's proof actually presented a specific undecidable statement. The hope then was that somehow undecidable statements could be cordoned off from decidable statements, and Turing's result showed that that wasn't possible. Perhaps that's what you mean by "the nonexistence of a single algorithm that correctly answers every instance in that family"?
I may have been making this claim, I need to think about this for a while and re read what you have written.
This is very helpful though, thank you.
If I am wrong, please pardon. I suspect I am. But was this comment edited by Claude? I ask specifically because it is well written, substantive, all which is expected here, but the "push back" part, to me, must be a) an artifact of Claude, either by osmotic assimilation (Which is happening to many innocent users) or b) Claude itself.
Feel free to flag this comment if I get an answer. I do want to know.
No Claude was not involved in any way in me writing it, and honestly it's kind of getting depressing how many comments are constantly questioning peoples use of LLMs.
Just a heads up, "I want to push back on" is an idiom Claude frequently uses.
It is depressing though, writing feels like it's in part becoming a game of outpacing the latest LLM's idiosyncrasies so we can signal authenticity, which perversely, is achieved through using an LLM enough so that you can become familiar with its flavor of communication.
This is what makes me sad about the AI age; many articles now have the same phrasing, the same analogies, the same quips, structure, the same wording; once you start to see it there's no going back.
I actually laughed quite a lot to begin with, GPT models saying things like "...might look like P, but is NP wearing a hat and a lab coat..." and "...is a haunted house disguised as a git repository..."; but alas when you've heard them a million times everywhere it really starts to bite.
Yeah, that's why I invited the flag. But do not overlook how fucking depressing the endless LLM generated comments actually are too.
My apologies, and I do appreciate your reply.
It can be the case that both:
- The physics of the universe can be completely modeled as computation, and
- It's possible to pose undecidable problems about the way the universe unfolds
This is intrinsic to the idea of undecidability even for Turing machines, e.g. "we equate computation with the functioning of Turing machines, but there are real processes executable in Turing machines that are undecidable".
A key thing about the undecidability problem wrt physics is preparation of the initial state. In math and computer science it is relatively straightforward to prepare such problems now (though this represented an enormous leap conceptually), but the "undecidability" of all physical problems relies on construction of materials that are clearly unconstructable - systems of infinite negentropy (eg Turing machines), infinite mass (the lattice), bespoke local interactions etc. Problems standing in the way of physics decidability are typically chaos, far from equilibrium mechanics, elementary SNR considerations and so forth, not problems of logic.
Of course, if our universe is undecidable it must be the case that computable processes can be executed within it, and it might be the case that all of the processes that are ever executed within it are computable... but it might be that some of the processes that are executed are not computable... because the machine may.. or may not?
I think there's an equivocation of "computable" going on here. Mathematicians talk about a lot of things like "uncomputable sequences" but that is usually making a statement about the sequence, not necessarily any individual member. The Busy Beaver sequence is uncomputable. You can, however, quite trivially compute BB(2), even in your head if you're a bit careful. You can set up individual elements of an uncomputable sequence in our universe, and you may be unable to state in advance what the system would do with anything less than simply letting it run and see what happens due to the complexity of the system, but being a member of an uncomputable sequence doesn't mean that you can't in fact set those things up and watch them run. The Universe doesn't throw an "UncomputableCircumstance" exception or anything. It just keeps advancing to the next state. Your inability to make certain statements about that next state or some future state is not its problem.
The infinite lattice doesn't represent a "real" physical processes, it's just mathematical technique for closing a (fundamentally) quantized combinatorial sum over millions of interacting elements. The gap problem exists in the limit. For real systems the spectrum can be measured (in principle) by probing the ground state. The computational paradigm is incredibly general but only within what's apparently a pretty atypical thermodynamic regime (the ordered universe).
Undecidability is a problem of answer-extraction from a process, it doesn’t preclude the process from executing deterministically. The universe could well be the live execution of a deterministic, even basic algorithm, with all kinds of questions about its execution being undecidable.
One sentence I heard somewhere wraps up the totality of computing:
"If Mathematics is the 'what', Computer Science is the 'how'".
This applies to each and everything.
If two people agreed on that statement, its entirely unclear if they agree with each other and if they found something profound in the first place.
The imo much more foundational relationship not everybody is aware of is https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspon...
> Recently it's been shown that there are real, physical processes which are undecidable
According to the currently known laws of physics. Which we know are incomplete/incorrect in several places.
> up to the point that many computer scientists now seem to equate computation with the functioning of the universe.
Do you think that's a kind of tunnel vision? If the only thing you focus on is computation, you'll probably end up seeing computation everywhere - it became a way of seeing the world.
It is a common accusation. There's a somewhat famous quote I've seen a few times:
"It's interesting to look back through history on this one. Each age has its pinnacle of technology, and each age uses that technology as a metaphor for nature, for the universe. In ancient Greece, the technological marvels were musical instruments and the ruler and compass. The Greek philosophers tried to build an entire cosmology from number, harmony, proportion, form, and so on — from mathematics, basically. Remember the music of the spheres? The Pythagoreans believed that nature was a manifestation of rational mathematics. Later on the pinnacle of technology was the clockwork. Newton wanted a clockwork universe, the entire universe as a gigantic clockwork mechanism, with all the parts interlocking and ticking over with infinite precision. Then in the 19th century along came steam power, and the universe was then depicted as an enormous heat engine, or thermodynamic machine, running down toward its heat death. Today the computer is the pinnacle of technology, so it's now fashionable to talk about nature as a computational process."
Which seems to source from https://www.edge.org/conversation/paul_davies-time-loops .
While "computer" may give us impressions of something with "a CPU" and "RAM" and "a disk drive", it does at least seem plausible that the universe as computation is a plausible base level, though. Unlike "the music of the spheres", which to the extent that it made predictions of the world, it got them wrong in the most basic way, viewing it through a lens of computation allows us to put some quite subtle and interesting limits on things. "Computation" is a pretty flexible substrate; it is difficult to imagine how the proposition "the universe is a computation and subject to the limitations thereto" could be falsified, and if it could, it is difficult to imagine how we would be able to know it was so falsified. Nevertheless the math of computation allows us to say non-trivial things about the universe as a result; it is not a vacuous generalization, though it is certainly a loose one... being able to say yet more concrete things about the nature of the computation, such as "this is exactly how gravity works", has quite a bit more utility.
From my naive pov: Related to computation is the concept of state (I know, functional languages can get away without it, sort of). I always wondered how the universe “knows” the mass of the sun. If there are some underlying functions/computations “running” in the background to keep planets moving and so on, and if the mass of planets is a key element in such computations… then either: the mass is calculated “on the fly” every time (seems expensive) or it’s a variable (how is it updated? Where is it “stored”?)
The somewhat abbreviated answer is that the "state" is formalized into the concept of fields. All the physical properties we can observe are from coupling with the relevant fields. The speed at which changes can propagate in fields is C, hence the speed of light being the same value.
From the site's "About" section:
> "Ergo is a nonprofit that publishes long-form philosophical lecture courses with leading scholars. Everything we publish is freely available, without ads or paywalls."
I know what to do this weekend if it rains!
I really do think matter wants to be sentient, being sentient is natural. Why i think that exactly, i'm not sure why, it just seems intuitive.
Discrete math and Algorithms were two of my favorite college classes. They were really the only part of computer science that was mind blowing. The rest was software engineering, which was transparently "possible". Like, yes, big programs and OSs and numerical models exist, and yes I will graduate and work with them and add to them, someday, yeah sure.
But decidabilty, Godel's theorm, busy beaver numbers, etc... those were unexpected and worth the price of admission.
Thanks Prof Hadas, you made it fun to have my mind blown.
Is 'computation' really universal and fundamental? Turing machines, lambda calculus, algorithmic notations, they're all human-made formalisms. Are the halting problem and the limits of computability actually constraints that exist only within these human-made formal systems?
When we constrain a formalism to reduce complexity, it feels like necessity emerges from within those constraints. For example, when we say 'CRUD app,' we immediately think of a specific pattern. In the same way, once you adopt a 'form,' the constraints that come with that form progressively expand the state space. In that sense, it feels like both discovery and invention.
Famous mathematicians and scientists often distinguish between model and reality, yet we tend to mistake the model's shape for reality itself. People like John Wheeler and Stephen Wolfram argue that computation is a fundamental property of the universe. But can we really say that when we downcast reality to fit human cognition, losing information in the process, and then upcast it back, the information is fully restored? I always find this point difficult.
Landauer's principle says that abstract logical operations, information erasure, necessarily increase physical entropy. That shows there's a thermodynamic cost to physically implemented information processing. But I don't think that proves computation is fundamental.
Whether it's computation or geometry, they're all abstract formalisms created by humans. But when we actually measure things, they're subject to physical laws. Still, whether that makes them fundamental is a difficult question. I think these are just results of the process where humans name phenomena and constrain them. I don't think they're the cause.
You can define computation broadly enough, as 'a process where a state changes to another state according to rules,' to make almost everything look like computation. But being able to explain something with computation and claiming that computation is fundamental are different things, aren't they?
Meaning exists within the structures and constraints of human-made formalisms. We artificially lower cognitive complexity and translate things into human language. Whether that's fundamental, I'm not sure.
Maybe I'm a reductionist. Plenty of intellectually brilliant scholars make those claims, but people like me, with slower minds, end up thinking these kinds of stupid thoughts. I wish I could organize my own thoughts bette
Ahhh this is fantastic thank you; it _is_ hard to reconcile whether problems come with the original topic or whether they are introduced by the abstraction that we _need_ to make in order to quantify a thing/explain it to ourselves and others.
Regarding the downcast/upcast; I think it _can_ be possible to do this successfully;
> I have a glass, I throw it at a hard surface. What will happen? Well (duh) the glass will (most likely) break.
This hypothesis completely ignores nearly 100% of all relevant physics and the laws surrounding the problem; the arrangement of air molecules, the arrangement of the molecules in the glass, the physical forces governing me, it reduces the entire equation down to some really basic napkin physics.
But; does the outcome work? Has my interpretation of the universe and its physics actually predicted what will happen?
Probably a stupid example, but I think that a lossy picture of the universe can still yield a correct answer.
I can't physically run a simulation of the entire universe in my brain, as my brain is part of that same universe. Lossy representations/models are a necessity in the thinking-ham bound world in which we exist.
Something has always nagged me about the halting problem, might be my mis-understanding of the problem space but;
- You have a piece of software
- That software does in memory compute only
- The software does not touch any peripherals, networking, or any other external source which introduce unpredictability (x)
I'm convinced that somehow this can be solved/proven whether the execution will halt or not.
(x) The second you touch any external peripherals or networking, you're effectively asking the question of "If I phone my friend, will they pick up the phone?" -> to which the only answer is, "They'll pick it up, only if they pick it up/are there". You can't answer that question without trying it.
Am I missing the point? I'm sure you can introduce other edges even in the limited model above, e.g. where a memory stick stops responding or something; but all in if you have reliable kit and don't touch anything external, why can't this be solved?
For the finite case, the more relevant question is, can you predict whether or not the computation will halt in less time than 1. executing the algorithm and 2. checking whether or not the algorithm ever loops?
Bear in mind checking whether or not the algorithm ever loops means taking the full state of the system and checking against a database of all previous states of the system. Bear in mind that the Atari 2600, and its whopping 128 bytes of RAM, has with that amount of RAM more states than there are planck volumes * planck time intervals in the known universe... by over sixty orders of magnitude. And every three additional bits you add to the RAM of the system your are looking at adds an order of magnitude (minus a bit) to that, so, nearly 3 orders of magnitude more states per byte... not per megabyte or gigabyte, per byte. Call it 2 orders of magnitude per byte if you want to be conservative.
It can be solved, if by nothing else simply by running it, in the mathematical sense. In the practical sense it's not even close. That's why we use the Turing machine analysis... technically it's an approximation because we don't actually have real Turing machines. However the size of the finite state machines we have is such that it is far more productive to simply say "the halting problem is unsolvable" than to argue about how many orders of magnitude of orders of magnitude of resources it takes to solve the question of whether or a given program terminates.
Thank you for your insightful answer, in reduction; "Don't fight a god, you won't win, and you'll definitely die in the process!"
The approach you describe though is brute force. I don't think (if there even is an answer to this problem) that it can be brute forced; that's where you run into the limits of hardware/computation/energy and start talking about timeframes which exceed the life of the universe.
I think brute force might be a useful tool in places to validate results, but if there _is_ an answer to this problem it's purely mathematical.
Apologies for sounding both excited and naive; these sorts of challenges make me happy in strange ways that no other thing does!
There is no general solution other than brute force. That's not a terribly difficult extension of the halting problem, it just takes more paperwork to deal with the edge cases, but you'll get to that result. The same basic technique works: Your supposed solution to the problem is itself some finite program, and you can feed it the "I halt only if I don't halt" problem too. The difference is that brute force is a solution, because now instead of an infinite sequence of programs you have a bounded set of programs. So whatever concrete "I halt only if I don't halt" you pass to someone within the specified limits, there is definitely some answer, but your technique won't be able to tell what it is short of just running it.
For the same reason the halting problem doesn't even have a good heuristic, neither does this. Unpredictable chaos is not an exceptional case, it is the exponentially-normal case. You have to go the other way, and construct programs deliberately designed to have the ability to tell if they halt. The term for that if you want to learn more about it is "non-Turing complete programming language", sometimes called a "sub-Turing" programming language: https://increment.com/programming-languages/turing-incomplet...
You can read that as "this is how hard it is to construct code that we can make execution guarantees about". That focuses on code that is deliberately constructed to be finite in scope and may be something that can be strictly bounded in memory use or time or both. You'll note if you spend any time working with them how hard they are to work with. That's a reflection of the limits of generalizing any such proofs of time or space of a given program.
If there is a general algorithm that does what you think, we don't even have a clue what it would look like. And we have a lot of clues there can't be any such thing.
Imagine a program that generates the digits of pi, one after the other and stops when it is finished. A general purpose program analysing this program to decide if it stops or not would have to know about pi. And about every other possible algorithm.
This is a brilliant explanation thank you.
Related: the Busy Beaver problem https://news.ycombinator.com/item?id=40857041
Thank you internet stranger, for introducing me to hard-maths drugs; am hooked!! \o/
I love the idea of this. So the BB problems are individual iterations of the halting problem right? To truly solve the problem one would have to come up with a program which would operate on all possible BB numbers?
It can be solved if the memory is bounded. But unbounded memory comes with undecidable problems.
This truly leads into "computation"; when we're dealing with known quantities, yes, we can "solve" the halting problem. The second you move into "we don't know the answer yet", the can of worms opens. Thank you.
There remain undecidable problems even with finite memory/state space.
Linear bounded automata (LBA) the halting problem is decidable. But many properties of LBA are undecidable:
Emptiness: Does an LBA reject all possible inputs? Universality: Does an LBA accept all possible inputs over its alphabet? Equivalent: Do two LBA accept the same language? Finiteness: Does an LBA accept a finite number of strings.
Computation is the study of infinity. That is how I like to think about it. It doesn't seem that way when you're building a website (well, in some ways because it's not at that point), but every algorithm, data structure, etc is an investigation into a certain part of infinity. Think of the way in which we generally categorize algorithms (Big-O notation)... that's just characterizing infinity.
If the memory is bounded then your software is a simple finite automaton, and can be decided in finite time. The issue is with unbounded memory. The issue with the halting problem is a simple characteristic of infinity. This is actually what people are noticing when they say that computation is a fundamental part of the universe. They are correct! The universe deals with infinitisemals all the time. As humans, we have only discovered ways of dealing with certain classes of infinitesemals (calculus). The others remain beyond our ability to characterize. Indeed, some have been proven to be uncharacterizable.
Ahhh thank you it's effectively the known-vs-unknown space;
- How long does it take to get from A to B? => Easy if you know where A and B are, and what mode of transport you're taking to get there.
- How long does it take to get from A to _somewhere_ => As long as it takes!!
You might enjoy the book Escher Gödel Bach, the Eternal Golden Braid by Douglas Hofstadter, which will open up the world, power, and "danger" of proofs using contradiction to you.
Bonne lecture !
Thank you for the suggestions, I look forward to reading!
Related:
Ergo: Long Form Philosophy Lectures
https://news.ycombinator.com/item?id=48840497
What even is computation? State-based inference. But intelligence itself does not rely on computation, only its biological counterweight seems to and only in certain situations. If Computation is a "Universal Concept" then there are at least 4 or 5 more "Universal Concepts" analogous to intuition and spontaneity.