Are there algorithms for solving simple functional equations? So somebody posted yesterday asking a question for continuous solutions $f$ satisfying $f(x+y) = f(x)f(y)f(xy)$. Continuity could be used for a simpler proof but then somebody posted a solution showing that the only solutions (not just continuous) are $f=-1,0,1$. The proof was rather algorithmic, plugging in parameters multiple ways and then deriving identities. That got me thinking. Say we have a functional equation say only involving simple arithmetic operations in the equation and the arguments (addition, subtraction, multiplication, division), e.g. $f(x-y) = f(x)/f(y)$. Then say we want all differentiable solutions, or all continuous solutions, or just all solutions. Are there any algorithms to determine formulas for solutions, or sufficient conditions for solutions, e.g. $f(0)$ or $f(1)$ is anything and then $f(0)$ or $f(1)$ determines the rest of the solution based on the functional equation?
 A: Intuitively your algorithm would probably do something like :


*

*Identify silent variables in equation $x, y, ...$ and the problem's variable $f$

*Initiate a collection $C$ of formal equalities with the problem's equation $\mathfrak U (f,x,y) = \mathfrak R (f,x,y)$

*Perform a range of "smart" substitutions $(x,y) \rightarrow (0,y), (x,y)\rightarrow (x,0) $ ... on all equalities in $C$ and add resulting equalities to $C$

*If an equality $\alpha(f,x,y)=\beta(f,x,y)$ is in $C$ and $\alpha(f,x,y)$ is a subexpression of some other equality in $C$, say $\omega\{\alpha(f,x,y)\}=0$, then add $\omega\{\beta(f,x,y)\}=0$ to $C$

*Repeat until you find an expression of the desired form, say $f(x,y)=\zeta(x,y)$ with $\zeta$ a simple function, in $C$


So you're (roughly) using the formal equation $\mathfrak U = \mathfrak R$ and the ability to replace a silent variable by scope values as a grammar and you hope that by expanding your substitution rules in a smart way you'll find an element of a tiny subspace of your language.
Intuitively, I'd say such an algorithm would not finish almost always. If only because solving some of these equations (even super simple ones like this one which I answered) can't be done only with a smart series of substitutions and uses some properties of your variable function's origin or image spaces.
