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> ]
For example, to search for a near-unanimity operation on the three element cycle with the value of 012 set to 0 or 1 use the following input
arity 3
size 3
preserves 01 12 20
value 012=0,1