>>11301549I totally get your point and I agree with you when the inputs and outputs are R.
Now, I want to look at functions which in- and outputs are N.
Let's look at the functions g(a)=a*0 and f(b)=2b
g(0) = 0, and g(1) = 0. f(0) = 0 and f(1) = 2.
So, your argument would now be: For h to exist, h(g(0)) = f(0) and h(g(1)) = f(1) by the definition of h
Substituting: h(0) = 0 and h(0) = 2 shows the error
What I am now proposing now is to introduce a third function k(x)=x
And we're extending g and f so that they take a touple t as input and we work on the elements of that touple:
g(t:=(a,k(a)))=t[0]*0 , example: g(t:=(0,k(0))) = 0*0 and g(t:=(1,k(1))) = 1*0
t[0] means the first element of the touple. We don't do anything with the second element, we just carry it along in the touple.
Now we write down the result in the first element of the output touple - we have 2 different touples as a result from g:
gt1 = (0,0) and gt2 = (0,1)
Let's do the same for f(t:=(b,k(b))) = t[0]*2:
f(t:=(b,k(b)))=t[0]*2
which gives us these touples:
ft1=(0,0) and ft2=(2,1)
now, let h be a function that doesn't has a calculation after the "=" sign and the only purpose of it is to "carry the result of the second touple". We can now see that we can always find a bijection between the second touple element of all functions. Since we carry the result in the first touple element we can differentiate supposably same-looking results by their second touple element. It's like we're giving every single calculation an ID's and we then map the IDs