This simple applet can help finding maps that preserve a set of graphs. It uses a bounded width one algorithm, so even if you have no solution, the one consistency algorithm could give you a set of possibilities. You can also find a solution, which automatically searches all possibilities for you. You can run this program in command line mode if you simply save the GraphPoly.jar file and in that directory you run "java -jar GraphPoly".
You have to type in your input into the following field. A tuple is a sequence of digits starting from 0. A graph is a sequence of pairs separated by spaces. A list is a comma separated list of numbers. First you have to specify the arity of the operation, then the size of domain. You can restrict the domain of the operation to a connected component of a direct power of a graph. This can be followed by constraints on the operation we want to generate. The simplest restriction is a value specification with a list of possible values. You can also specify that the operation needs to be a (weak) near-unanimity, or it needs to be a polymorphism of a given graph. You can put a # mark infront of lines you want to comment out. The format of the input is the following.
arity <number> size <number> [ component <tuple> of <graph> ] [ value <tuple> = <list> ] [ weak-nu ] [ nu ] [ conservative ] [ idempotent ] [ cyclic ] [ symmetric ] [ preserves <graph> ]
arity 3 size 3 nu preserves 01 12 20 value 012=0,1