I have:
1) a "starting set", a multiset, e.x. { x, y, z, z },
2) a set of transformations, e.x. {x,z} => {y}, {z,z} => {z}, {x} => {z}, {y} => {x}, and
3) a "target set" that I am trying to get by applying transformations to the starting set, e.x. { z }.
I'd like to find an algorithm to generate the (possibly infinite) possible applications of the transformations to the starting set that result in the target set. For example:
{ x, y, z, z }, y => x
{ x, x, z, z }, x => z
{ z, x, z, z }, x => z
{ z, z, z, z }, {z, z} => z
{ z, z, z }, {z, z} => z
{ z, z }, {z, z} => z
{ z }
The order of the elements is irrelevant everywhere.
This sounds like something that's probably an existing (named) problem, but I don't recognize it. Can anyone help me track it down, or suggest further reading on something similar?