From (iii), G(A) * G(0) = 2*G(A), so G(0) = 2.
Not clear why the problem needs to specify that G(0) is not 0
G(A)*G(A) = G(2A)+G(0), so G(2A) = G(A)^2 - 2
G(2) = 17/4 = 4 + 1/4
G(4) = 257/16 = 16 + 1/16
It looks like G(A) = 2^A + 2^(-A)
Yes, that works!
G(A)*G(B) = (2^A + 2^(-A))*(2^B + 2^(-B))
= 2^(A+B) + 2^(A-B) + 2^(B-A) + 2^(-B-A)
= G(A+B) + G(A-B)
In fact, the property that G(A)*G(B) = G(A+B) + G(A-B)
is true if G(A) = x^A + x^(-A)
So it is just a matter of solving for the initial condition.
G(1) = x + 1/x = 2 + 1/2 means that x = 2 or 1/2
And the function is symmetric around 0, which we actually noticed initially because G(A)*G(A) = G(A)*G(-A)
Also, it looks like the range can be bigger than just integers