5 ms·
That's because the author is using constructive mathematics (i.e. computable analysis instead of standard real analysis). It is true that all computable functio
by throwawaymath 7y ago
That's because the author is using constructive mathematics (i.e. computable analysis instead of standard real analysis). It is true that all computable functions are continuous. Likewise discontinuous real functions aren't computable.
The continuum hypothesis is tangentially related to this topic and makes for fun reading.
- alain94040 7y agoBut this is begging the question. The author uses the definition that numbers have infinite decimals, and all you are allowed to do is ask for decimal n to find out a number. You can never grasp the full number, since you are given a finite amount of time (compute) to discover an infinite sequence of decimals. From that definition, it's quite obvious that everything you compute has to be continuous, because you are never sure of what other decimals may be coming up, so whatever you compute has to be close enough. That sounds more like an argument that representing numbers that way is not particularly useful since you can't do much with them (you can't even provide an equality operator).
- edflsafoiewq 7y agoA constructive response is that the ability to examine a real number to arbitrary precision is already highly idealized. In the real world you will quickly exhaust your ability to measure a real quantity to ever higher precision. > you can't even provide an equality operator If you are given two rods, there is no way to tell if the two rods are of the same length.
- throwawaymath 7y agoI'm not sure I'm following you. I'm also not arguing for or against the results here. I'm just giving you the background to understand the author's point; it's not something they just came up with, it's been under study for quite a while in constructivist mathematics. I also don't really think you're using the right definition of computable here. You make it sound as though we're estimating, or truncating uncomputable numbers to make them computable when you say: > From that definition, it's quite obvious that everything you compute has to be continuous, because you are never sure of what other decimals may be coming up, so whatever you compute has to be close enough. It's not about being close enough or estimating, they're categorically different things. You can't obtain an uncomputable number, even by estimating, to any meaningful precision with a finite amount of time. So what are you saying here?
- jayd16 7y ago>In fact, no finite amount of computation will guarantee that we will be able to tell whether x=0 or x>0 Hmm, I'm still stuck at this assertion. Why can we not assume the number is finite? If we assume an infinitely long number takes an infinite amount of time to read, can we not also assume it must take an infinite amount of time to write? If we only have finite time, can we not assume all numbers given to the function in that time are finite?
- danharaj 7y agoA program that takes an integer n and outputs the n'th digit of the number it represents is a finite representation of an infinite stream of digits.
- afc 7y agoYeah, I'm also stuck here. The article seems to say that, because you can't produce an upper bound to the amount of time the sgn function will take to run (for all possible inputs), sgn isn't a function. But then... isn't it the same for every single other function? I think the article is conflating "given a fixed amount of time, one can find an input for which the function will take longer to run" with "the function takes infinite time". The later isn't true: for any given input, no matter how big, one can compute a time such that the function will finish in that time; in other words, the function always finishes, in finite time, for every possible input, no matter how large. It's possible we're both confused, I suppose. :-)
- Ericson2314 7y agoHere's the thing: the "discrete vs continuous" most people were taught is wrong. Discrete is [can always be construed as] continuous. Only infinite things can be discontinuous. State is finite but time is countably infinite for our purposes, so we model infinite/unbounded things with programs that can run arbitrary long. Finally, this abstract math stuff is in fact a really good UI point that most programmers miss. In non "real time" applications, you should aim to be able to dynamically tradeoff tardiness and richness; e.g. a fancy diagram that is rendered at low res and then higher res. Likewise all your caches should be evictable under memory pressure. Computing should feel fluid. It's a pity most people only paleolithic state machine math or terminating thing math. This falsely implies that "real world programs" which hardly ever terminate are beyond theory, or that the smartypants thing to do is break them down into little terminating programs and some big spooky event loop whateverthefuck (browser, apache, framework du jour, etc etc.). Build codata out of codata!