there must be a rule named Z containing terminal nodes only
terminal nodes are x, y, t, rgb (random color) and bw (random grey color)
unary nodes are sin(X), cos(X), tan(X), exp(X), sqrt(X)
binary nodes are sum(X,Y), mult(X,Y), mod(X,Y) (division remainder)
ternary nodes are triple(X,Y,Z) (build color taking red from X, green from Y and blue from Z), mix(X,Y,Z) (blend Y and Z, controlled by X), level(X,Y,Z) (choose Y or Z based on X value)
computations are scaled between -1 and 1, which mostly impacts tan, exp, sqrt and sum
sin and cos can accept a frequency argument, and even a phase argument; if omitted, they are randomly generated
level can accept a threshold argument; if omitted, it is randomly generated