(From my understanding) this result actually
relies on this lack of unique representations. Phrased in terms of diagonalisation, the classic argument is this:
- We write a function 'diagonal: List[List[Digit]] -> List[Digit]' which returns the first entry of the first list, followed by the second entry of the second list, and so on for the ith entry of the ith list
- The function 'map (+1) ∘ diagonal' will accept a List[List[Digit]] and return a List[Digit] which is guaranteed to not appear in that given input, even if the lists extend forever
This new approach replaces that List[Digit] representation; instead representing a real number as a set of all 'oracles' which output that number's digits. As you say, there will be numbers with multiple oracles (outputting different digits, which nevertheless correspond to the same number, e.g. 0.1999... and 0.2000...).
The new result is that there are no such functions which treat all of a number's oracles the same; i.e. that return the same sequence of digits for '0.1999...' as for '0.2000...', etc.