Never heard about anything like this. (Doesn’t mean much, I am not a professional mathematician.)
Just thinking out loud...
Trivial examples are: “g is identity”, “g is constant”, “f is constant”.
A non-trivial example would be “f = x^3”, “g = absolute value”.
Something in between: A is a binary representation of an integer, f is an operation where a lower bit of an input never has an impact on a higher bit of the output (for example: a square root, rounded down), g is setting the last K bits to some constant value.
Functions f and g cannot both be bijections, otherwise g◦f◦id◦f = g◦f◦g◦f would imply id=g .
If you have functions f1 and g1 : A → A with this property, and also f2 and g2 : B → B with this property, the functions f([a, b]) = [f1(a), f2(b)] and g([a, b]) = [g1(a), g2(b)] : A×B → A×B will also have this property.
But the commutativity is not necessary, in the case where f = “square root, rounded down” and g = “x rounded down to a multiple of K”. In such case, it is true that gg = g, but not always gf = fg, and yet always gfg = gf.
From that example, I would be tempted to generalize that gg = g and fg = f. But that would not be true for x^3 and absolute value.
So maybe gg = g and gfg = gf? Is it sufficient? gfgf = gff. gfgfgf = gfgff = gfff. Yes, it is. Is it necessary? No, for example if f is a constant then gg does not have to be equal to g and it will work anyway. There are also counter-examples if f is not a constant, for example if we have a bijection between N and NN, then let f([a, b]) = [a^3, K] and g([a, b]) = [|a|, whatever(b)]; then gfgf([a, b]) = gff([a, b]) = [|a^9|, whatever(K)].
This is the moment where I give up. It was tempting to translate g(f^n) = (gf)^n into a set of equations that does not include n, but apparently I can’t do it.
gf^n=(gf)^n trivially implies gff=gfgf. gff=gfgf implies gf^3=(gff)f=(gfgf)f=gf(gff)=gf(gfgf)=(gf)^3, and analogously for all n. Therefore you can summarize your property as gff=gfgf.
I suspect you discovered this property by studying specific g,f. ff=fgf implies gff=g(ff)=g(fgf)=gfgf. Therefore I suggest you check whether your g,f satisfy the stronger ff=fgf, which looks like a more natural property.
Let A be a set, f:A→A and g:A→A. We can now define a property for f and g: g∘fn=(g∘f)n. Does a name for this property already exist?
If I were making one up, I might say “g distributes over composition of f”.
I like it!
Is that equation supposed to hold for one specific value of n, or for each n?
For e.g. n = 2, am I parsing it correctly as “g(f(f(x))) = g(f(g(f(x))))”?
You’re parsing it correctly, and it’s supposed to hold for all n.
Never heard about anything like this. (Doesn’t mean much, I am not a professional mathematician.)
Just thinking out loud...
Trivial examples are: “g is identity”, “g is constant”, “f is constant”.
A non-trivial example would be “f = x^3”, “g = absolute value”.
Something in between: A is a binary representation of an integer, f is an operation where a lower bit of an input never has an impact on a higher bit of the output (for example: a square root, rounded down), g is setting the last K bits to some constant value.
Functions f and g cannot both be bijections, otherwise g◦f◦id◦f = g◦f◦g◦f would imply id=g .
If you have functions f1 and g1 : A → A with this property, and also f2 and g2 : B → B with this property, the functions f([a, b]) = [f1(a), f2(b)] and g([a, b]) = [g1(a), g2(b)] : A×B → A×B will also have this property.
...that’s all that comes to my mind.
This is an inspirational example. If g is idempotent (g^2 = g) and commutes with f (gf = fg), they will satisfy the property.
Wow, that is a nice generalization.
But the commutativity is not necessary, in the case where f = “square root, rounded down” and g = “x rounded down to a multiple of K”. In such case, it is true that gg = g, but not always gf = fg, and yet always gfg = gf.
From that example, I would be tempted to generalize that gg = g and fg = f. But that would not be true for x^3 and absolute value.
So maybe gg = g and gfg = gf? Is it sufficient? gfgf = gff. gfgfgf = gfgff = gfff. Yes, it is. Is it necessary? No, for example if f is a constant then gg does not have to be equal to g and it will work anyway. There are also counter-examples if f is not a constant, for example if we have a bijection between N and NN, then let f([a, b]) = [a^3, K] and g([a, b]) = [|a|, whatever(b)]; then gfgf([a, b]) = gff([a, b]) = [|a^9|, whatever(K)].
This is the moment where I give up. It was tempting to translate g(f^n) = (gf)^n into a set of equations that does not include n, but apparently I can’t do it.
Equivalently, gfgf=gff. Do you even have fgf=ff?
That is, admittedly, a bit terse for me. Could you elaborate?
gf^n=(gf)^n trivially implies gff=gfgf. gff=gfgf implies gf^3=(gff)f=(gfgf)f=gf(gff)=gf(gfgf)=(gf)^3, and analogously for all n. Therefore you can summarize your property as gff=gfgf.
I suspect you discovered this property by studying specific g,f. ff=fgf implies gff=g(ff)=g(fgf)=gfgf. Therefore I suggest you check whether your g,f satisfy the stronger ff=fgf, which looks like a more natural property.