Hacker News new | ask | show | jobs
by gunnihinn 1065 days ago
> they are objects (I call them oracles) that answer Yes or No when asked if the number ought to be between two given rational numbers.

So a real number is a function from pairs of rationals to a two-element set (plus some sanity conditions)? Why is that better than the other constructions?

1 comments

Yes. The basic reason is lazy evaluation and answering the primary question most people care about when using an actual real number in a computation.

The lazy evaluation is that defining the real number is about having a way of answering the question when presented with the rational interval, but one does not actually need to have the answers until asked.

From this perspective, a program that computes Yes or No when given a rational interval via the rule "a<b Yes iff a^2< 2 < b^2" can be said to be the square root of 2. For the usual presentations of the other definitions, they cannot be embodied in a computer. One cannot literally have all the infinite elements of a Cauchy sequence, or the infinite sequence of digits in a decimal representation, or the uncountably many elements of a Dedekind cut, represented in a computer memory. One can have a function in memory.

The other definitions can also be presented, in various ways, as functions as well, but I think, fundamentally, what we want in practice from a real number is an interval of small enough size to be of use in whatever we are doing with the real number. That is what the oracles facilitate.

One can have a function in memory when the real number is nice in some sense, your example is algebraic.

But what if I want to represent an uncomputable number?

Or regardless of that, under any reasonable encoding of programs that can be held in memory by a computer, there are only countably many programs.

We also cannot represent all natural numbers or rational numbers in a computer. But the ones we care about, we generally can. I guess one question is whether there are uncomputable numbers that we need to compute for some purpose other than just computing it as a challenge? And if there are such things, how is it usually done? The theoretical definition of an oracle is not problematized by being uncomputable by Turing machines, but it is in uncomfortable tension with the driving purpose of the definition. I think that is a bonus. I think we should pause to consider the relevance of numbers that are uncomputable.

There are a number of real numbers that one can define which can depend on whether we can prove something or not. It may turn out that we can never prove it and the number is never resolved.

My attitude, which may not be satisfactory, is that we do what we can and we should have a language/framework for facilitating that. I think the oracle approach highlights what we know and marks what we can't compute clearly. I call it the resolution of the oracle. I don't want known precision to be lacking just because of a poor definition of what a real number is.

As for the example being algebraic, it is a particularly nice example and it is the same example in every example of a Dedekind cut. Another example of such a rule, one which is not algebraic, would be whether pi is in an interval or not. Given a<b, one rule could be that it is No if b < 3 or a > 4 or sin(a)sin(b) > 0. Alternatively, it would say Yes if a >= 3 and b<= 4 and sin(a)sin(b) <= 0. To compute this, one needs to compute sine of a and b sufficiently precisely to determine their sign.

The flavor I am trying to convey is having a definition convey a useful goal. The interval approach says that we are trying to generate precision about our inaccuracy. I think this is something which would greatly benefit those learning about real numbers. Most of the time, the error is presented as secondary and an annoyance, the concerns of the error propagation in further computations is pushed to the side, and it is all relegated to experts or computers. The expansionary nature of arithmetic in error propagation is pushed to a usually unsatisfactory discussion about significant digits.

My goal here is to change the mental framework so that these concerns come to the forefront. Ideally, they also come with useful tools to handle the uncertainties such as ways to compute how narrow the input intervals need to be when doing a computation. And maybe, just maybe, students could become more comfortable with fractions.