I have a specific problem in mind, but I am more interested in how to "properly" convey to Mathematica the result that I want. To start with, I have a function $G$ that can be represented like
and I want to find an expression $G(x,y)$ such that
I know the form of $f$ and I want find $G(x,y)$. I know that $x$ and $y$ (also $(x_1,y_1)$ and $(x_2,y_2)$) are linearly independent variables.
How can I properly instruct Mathematica to make manipulations to $G$ for this purpose? It is possible this cannot be done analytically, and if that is true I would like Mathematica to respond in a way that I can be certain that it cannot be done, or at least that Mathematica cannot accomplish this.
So far I have tried methods involving built in functions like FullSimplify, TrigReduce, TrigExpand, etc., but these functions don't have the same end goal in mind. I have also browsed the stack exchange, but I don't think I have found a satisfactory answer. Essentially what I want is a "proper" way of telling Mathematica the end goal I want so that the result I get is either the function $G(x,y)$ or something that indicates failure to find it.
f[x1_,y1_] := Sinh[2 x1]/(Cosh[2 x1] + Cosh[2 y1]) G = f[x1,y1]+f[x2,y2]
and I am looking for an expression
G[x,y] = G[x1+x2,y1+y2]