After much more thought about this whole thing, I decided that, perhaps, we don't need
an infinite number of dimensions. In a certain sense, it's "good enough" to choose N dimensions for a sufficiently large N. When N is small, the difference between N dimensions and N+1 dimensions is very significant; but when N is large (and by large I mean EXTREMELY large... in the sense I'll describe below), N-space and (N-1)-space behaves more-or-less the same.
For us poor low-dimensional human beings, it's too easy to count 1, 2, 3, and then just take that quantum leap into infinity, as though we had any
idea what infinite actually means. In fact, I have this suspicion that for most people, their perception of infinity is actually far smaller than certain finite
What do I mean? If you are a child, you would "count to infinity" something along these lines: 1, 2, 3, ... infinity! If you had primary school education, your "count to infinity" might be more along the lines of: 1, 2, 3, 100, 200, 300, 1000, infinity! If you had high school education, your count might be: 1, 2, 3, 100, 1000, 1000000, infinity! If you had college education, your count might be: 1, 2, 3, 1000, 1000000, 1 billion, 1 trillion, 1 quadrillion, infinity! And if you had a graduate degree, your count might be, 1, 2, 3, 1000, 1 million, 1 billion, 1 googol (10^100), 1 googolplex (10^10^100), infinity!
But actually, these numbers (excepting the "infinity!"'s) are FAR FAR FAR FAR SMALLER than a LOT of finite
numbers. As a first step, we might transcend the commoner's count to infinity as follows:
Start with a number like 1 million or 1 billion. While their value is huge, we can still easily write them down as only 7 or 10 digits. So the next "logical" step is a number that has so many digits that it's hard to write down: 1 googol (10^100) has 100 digits. While in theory it *can* be written down, it's too long to be feasible, and we adopt scientific notation to indicate how many digits it has. Well, the next step, 1 googolplex (10^10^100) is so huge, that the number of digits it has cannot be easily written down; the number of digits in its number of digits is 100. But this is still very small... for example, we can easily construct the number 10^10^10^10^10^10^10^10^10^10 (a power tower of 10 levels). This
number is so huge that the number of digits in the number of digits in the number of digits in the number of digits in ... (10 levels) ... of its number of digits is 10. Think about that for a moment. That means, starting from a googolplex, we can construct a number of a googolplex digits. Then we construct another number with that
many digits. Then we construct another number of that
many digits. Then ... we have to repeat this 10 times in order to reach the value of that power tower. This has probably already exceeded most people's perception of infinity.
But we barely got started. The giveaway clue is that even though this number is already past most people's concept of infinity, we can easily write it down as a power tower of 10 levels. But why stop there? What if we now construct a number with a power tower, whose number of levels is that number? That is to say, our number is 10^10^10^.....^10 where the number of levels is 10^10^10^...^10 (10 levels high). This number surely has burst just about everyone's perception of infinity. In order to deal with such a number, we have to invent a new notation: let's denote a power tower of height H by NH, where N is the "base". So 1010 is 10^10^10^...^10 (10 levels high). Using this notation, the number we just made is 10(1010). For convenience let's agree on right-to-left associativity so that we can simply write 101010. Now, the reason I write  is because this notation is intended to be extensible: going backwards, we define 1010 = 10+10, 1010 = 10*10, and 1010 = 10^10. Since exponentiation = repeated multiplication, and multiplication = repeated addition, we can build a hierarchy of operators this way, indexed by their level. Exponentiation is 3rd order, so power towers are 4th order. That's why we write .
But now, armed with such a notation, we are ready to actually take the first step towards large numbers. (Yes, this is only a first step. Get ready for the ride of your life!) That last number we just made was merely 101010, which is a power tower of (power tower of 10 levels) levels deep. It's easy, using our new notation, to now take this resulting number, and use THAT as the number of levels in a power tower of the next number: 10101010. While it looks innocent in our new powerful notation, this beast is so huge, that the number of levels in its exponential tower cannot be described in digits, scientific notation, or even a power tower of a height that can be written down. The height
of its power tower is a number whose power tower is so high that it also cannot be described in scientific notation (i.e., the number of digits in the height of its power tower is too large to feasibly describe in terms of digits). You have to go 4 levels deep before you can actually describe how many levels this exponential tower has. And remember, every level of the exponential tower means a number is so large that its number of digits can only be described by an exponential tower.
Boggled yet? We've barely begun! Even though we're already far outside the realm of perception, our new notation lets us step on the gas real hard and shoot wayyy farther now. Since  is repeated exponentiation,  is repeated . That is,  is repeated (repeated exponentiation). So our last number is actually merely (har har) 104. We can easily construct 1010, which is 1010...10 (10 levels deep). But why stop there? We can easily go to 1010, which is 101010...10 (10 levels deep). But then we might as well go to 1010, or, for that matter, 1010.
By this point, even though 1010 is finite, it might as well be infinity for all we can perceive. I mean, even 1010 has already FAR exceed the number of particles in the universe, and 1011 the number of states
in the universe, but that is less than a speck compared to 1010. I mean, 109 is so miniscule compared to 1010, that for all intents and purposes, 109 might as well be equal to 0. Arithmetic involving these things is *entirely* dominated by the second operand to the  operator. For example, even though 2*1010 is in theory twice as large as 1010, for all intents and purposes they are both numbers so large that we can hardly tell the difference between them. Even though 109 is just as unimaginably huge, we find that 109 + 1010 is practically equal to 1010, because the former is so small compared to the latter that it's just roundoff error. For that matter, 109 * 1010 might as well be equal to 1010, simply because 1011 is so unimaginably larger that anything less than or equal to 1010 multiplied by itself is still practically zero by comparison. In fact, 1010 ^ 1010 is still pretty much "approximately equal to" 1010, in comparison with 1011. That is to say, exponentiating 1010 to itself has barely even budged in the direction of 1011. So we can see that at this level, even exponentiation itself barely makes a difference, needless to say any lower operations like * or +. They might as well be no-op for all we care.
But we haven't even gotten really
The hierarchy of [M] operators is called the Grzegorczyk hierarchy. They belong to a class of functions called the "primitive recursive" functions, which are a relatively slow-growing class of functions that can be computed by a programming language with a limited subset of recursion. It's a bit irrelevant to explain this statement here, but the point is that they are actually considered slow
-growing. Yes, slow!! And you thought we've already gone beyond the Land of Oz. Well, let's show you something that will blow your mind:
Why restrict ourselves to small numbers with these [M] operators? We can, for example, write 33, which if I'm not mistaken is in the vicinity of Graham's Number
, an insanely huge number that actually got used in a real math proof. But this is just a puny non-attempt at going higher. Why use poor numbers with only a few digits here? Let's recurse
the [M] operator! For example, take this number: 10[1010]10. That is, it's 10[M]10 where M = 1010. Now we're talking!
This last number that we just wrote has just shot past the famed Ackermann function, which one inevitably encounters in the quest for large numbers. But why stop at one nesting level? What about 10[10[1010]10]10? That's taking the number we last made, and sticking that inside our [M] operator. Now, not only the number of digits or the number of levels in the power towers are undescribably huge, even the order
of the operation we're using is so huge it cannot be feasibly described in any common notation.
But have no fear! That was only 3 levels of nestings inside the [M] operator. What if the number
of nestings is so huge it can only be described by another such number? For example, what is the number of levels
of nestings is 10[10[10[... (10 levels deep) ... ]10]10]10?
We can keep going, of course. At which point we'd inevitably encounter Jonathan Bowers' Array Notation
we're talking real large numbers! Look up Jonathan Bowers' "infinity scrapers" sometime. His names for these things are quite whimsical, but there is real mathematical weight to these things. They are HUGE!!!! They are so huge they explode your perception of infinity several (insert unimaginably large number here) times, and then some!
OK, the whole point of this is to articulate my point, that we don't need
to jump to an infinite-dimensional space so quickly. Simply pick the number of dimensions N to be a suitably-huge number, such as one of Jonathan Bowers' pentational arrays, for example. The number of coordinates a vector in such a space would have is, for all practical purposes, infinite. (Even though it is really still finite. I hope you now have a better idea of how huge a finite number can be!) You can enumerate its elements for several lifetimes of the universe, and you wouldn't even be close to getting started. An N-hypercube in such a space would have (N-1)-hypercubes as its facets, of course, but for all practical purposes, they might as well be N-hypercubes, since the difference between N and N-1 is not even worth an afterthought when N is so huge. So you see that, already, N-space is reflecting the behaviour of infinite-dimensional space pretty closely, even though N is still finite.
We can then do some actual geometry, and have the confidence that the results would reflect infinite-dimensional space very closely; in fact, so closely that we almost never see the difference. Such unmanageable things in an actual infinite-dimensional space as the radius of the N-hypercube's vertices are no longer a problem, since the radius would simply be sqrt(N), a finite number, which, given the magnitude of N, can be regarded pretty much as approximately equal to N. Taking dot products, measuring angles, etc., likewise would not run into the problem of actual infinities; we simply work out using finite algebra the numbers concerned, expressed in terms of N, and in the final result, simplify anything containing N to N itself (since pretty much NO geometrical operation will even begin
to approach the magnitude of operations that you need to significantly affect the value of N), and anything containing N in the denominator to be essentially equal to zero (since practically NO ordinary geometrical operation would be able to result in a numerator large enough to have a meaningful quotient after being divided by the insanely huge N, excepting expressions involving N itself).
In other words, even though N is a finite number, it essentially behaves like an infinite number, so in a sense we don't even need to specify its value, simply that it's a suitably large finite number. We can just treat it as a special "almost infinite" number that for all practical intents and purposes behave like an infinite number.
With this technique, then, we can actually do some geometry that, for all practical intents and purposes, is "infinite"-dimensional, except without the actual infinities that cause us grief when we draw analogies from the lower dimensions.