Ask a silly question, get a silly answer. I have a somewhat naive yet interesting question to explore but I know that the answer is perhaps spurious. That won't stop me from exploring what the answer means. Furthermore, I'm keen to take something apart in order to understand it. Just as an engineer may take a machine apart in order to understand it, a hacker may take apart a piece of software in order to understand how it works. Similarly, but with less glamour, a mathematician can deconstruct mathematical functions and structures with the aim of understanding how they work. (updated 06 Dec 2011).
To begin with, I'm going to be coy and not tell you why I want to consider functional inverses. I'm presuming that if I told you why I was interested in functional inverses then you (the reader) would be predispositioned to assume that whatever I said was inherently wrong. I've learned from experience that people put up a mental barricade and are unwilling to answer the question or to even try to answer the question. Not a very philosophical mindset if you ask me.
So let's start by taking a set of numbers, say [1, 2, 3, 4, 5]. This is a finite set of numbers but we could take an infinite set of numbers such as the set of integers but let's keep things simple for now. Let's call this set X, and then write that as an equality: X = [1, 2, 3, 4, 5]. I now propose that we perform some operation upon this set. Let's try the function "2X". By this we mean that we should multiply all elements in X by 2. The resultant set, let's call it Y, is [2, 4, 6, 8, 10]. In equation form we would write: Y = 2X.
We could also write f(X) = 2X. This form is short hand for saying that our function, f, has X as its 'input'. In this simple case we can see that X = 0.5Y. This new equation expresses the inverse form of the first equation (Y = 2X). The first function maps the numbers in X to that in Y, while the inverse function maps the numbers in Y back to X.
The first equation we wrote in an alternative form as f(X) = 2X. We can similarly write the second equation in an alternative form as f(Y) = 0.5Y. So if Y = 2X then f(Y) = 0.5Y = 0.5 (2X) = X. Here we can see that by subsituting Y by its definition of 2X then we arrive back at the first set X. Hence, f(Y) truly is the inverse function of f(X). It is also common to write an inverse function as f^-1 and the previous equation as a "chain" of functions: f^-1 ( f(X) ) = f^-1 (2X) = X.
General Inversions
So now to get to the heart of the problem that interests me: generic inversions. That being the family of functions which have inverses. So then the first question that intrigues me is "How well can we apply an inversion procedure to an arbitrary function?" Naturally, this subject uses all the mathematical tools of groups and symmetry so is immediately of great interest to me. Groups are one of the most interesting pieces of mathematics. Previously, I've written about symmetry and have pointed to some pop-culture books that cover the ideas.
So what I really want to know is if there is a way of cheating the mathematical 'rule' that is 'cannot divide by zero', or to invert a function that has a zero in at least one element. With good reason it is impossible to divide by zero, it is essentially an axiom (afaik) for most fields of numbers (eg, intergers, reals, complex etc). Still I was curious to know if there was a way of cheating this requirement. However, even if it turns out to be possible I'd no longer be dealing with simple integers or reals but something else, something that is more complicated. I wanted to find if it was possible to have something that looked like integers (say) (( and thus having integers or reals as a subset)) but also allowed division by zero. I was curious to see if I could find a trick that would allow it but I haven't been able to find anything robust. For many this will seem like a waste of time but curiosity demanded that I, at least, enquire.
Thought experiment
One line of thought went like this:
If X is a set of some numbers, abstractly X = [A, B, C, D], then how might I write a computer code that transforms these numbers into something else. So in this case I just want to create a simple function that multiplies arbitrary numbers by 2 (as an example, see above). The function is simply -f = 2X = [2A, 2B, 2C, 2D]. I can store the original set X as an array in the computer and I can also store the output as a new array. Given that I know what the function is then it is easy to invert them. The inverse of the output will take me back to the set (array) that I started with: f^-1 = X = [A, B, C, D].
That part is easy, that is high school maths. But what if I didn't know what the function was? Is it still possible? The answer is not really, or not exactly. But I naively pondered the possibility of writing asking if X is transformed by some arbitrary function F and inverted by F^-1 then I may not need to know what F is.
If F was multiply X by zero, say, then my output set is [0,0,0,0]. When I say that I want to invert this I want to get back to what I started with, sorta like the 'undo' function in MS Word or Paint. I know that I started with X = [A,B,C,D] so can't there be an arbitrary function that takes me from [0,0,0,0] back to [A,B,C,D]? I can do that when I know what I started with. It is certainly possible to write a computer code that starts with X and then gives to Y (=[0,0,0,0]). Multiplicating each element by 0 would do it. This same code could then be told to 'invert' this result by giving the original array, X.
For example, I can simply add the original set on to the new set of zeros: ie 0 + A = A. If I start with Y (=[0,0,0,0]) then add A, B, C, D to each of the elements then I end up with X (=[A,B,C,D]). So naively, I've been able to 'invert' the function of multiplication by zero. Rather, perhaps, the word should be 'undo' rather than invert. This undoing I was naively stating that it might behave like division by zero, where I am assuming that division is the inverse of multiplication. If multiplication by zero yields zero then division by zero should take me back to where I was. This would be fitting with the definition of an inverse.
Let me walk you through an example of the logic: if I start with the number 5 and multiply by 0 then I arrive at 0. Simply: 5 * 0 = 0. However, if I want to 'invert' this and arrive back at 5 (my starting point) then I need a function that will allow this. Above I stated that adding 5 to 0 would do this: 0 + 5 = 5, which I could perhaps re-write in a functional form as f(0) = 5. Where this function f takes 0 as the input and returns 5. For clarity the function should probably have an appropriate subscript, such as _5. I will write this as I originally did 0_5(0) = 0 + 5 = 5. This new functions I'm calling zero-five, or "oh"-five.
As you would guess the o-7, or 0_7, operator would return 7, like so: 0_7 (0) = 0 + 7. Where I confused myself was when I tried to use this operator in combination with other operators such as 0_7 ( 0_5(0)), or 5 * 0_7. What would they mean? 5 * 0_7 should probably give 35, ie 5 * 0_7 = 5 * 7 = 35. So in this case the operator behaves as a number but what about in the case where the functions are used as function of a function? What does 0_7 ( 0_5(0)) mean? Well, I'm not sure it really means anything. Originally I just wanted the function to perform a naive and crude 'division by 0', the input to the function was always 0 so inputting anything else may be meaningless.
A few more examples: 0_7 + 0_5 = 7 + 5 = 12 and 0_7 - 0_5 = 2. As this set of functions was designed to take us back to the number we started with (before multipliying by zero) then this could leave us with an unsolved problem. Let's start with 0 * 0 = 0, therefore 0_0 (0) = 0 and hence 0_0 * 0_0 = 0, and then ask about the nature of 0_0 / 0_0. From the above I found that 0_ behaves like ordinary numbers so 0_0 / 0_0 = 0/0. I've seen some people define this as 1 and others state that it tends to infinity, I'm not sure I'm any the wiser here (although 1 is more natural to my system of beliefs ;-) ).
So my naive attempt to invert the multiplication by zero vaguely works but feels like a cheat. It is more an undo than a true inversion perhaps. I've had to rely upon a whole family of functions that individually invert each number back to its original, hence the countability of this set of functions is equal to that of the field of number you start with (say, integers)
There is also a way of writing this in terms of multiplication instead of addition but writing a computer code for it will take some more thought. This toy example is illustrated on wikipedia's page Division by zero. My naive attempts were interesting but I fear they yield nothing new.
Wheels
There is a more sophisticated way to deal with division by zero, one that has been developed by someone with far more mathematical knowledge than I. This method, which I found online, revolves around the notion of 'wheels', this is a new type of number system that allows division by zero. I must admit that I didn't fully comprehend the paper that proposed the idea, I leave that as an exercise for the reader.
Wikipedia is mildly more tractable in presenting the idea of wheels: Wheels. So as I suggested the resultant field of numbers is an extension to the underlying field of numbers. Not really a great mathematical guess on my part.