As for being viable or not, is a property of both the fitness function (a program might be unviable because one is using a very harsh fitness measure) and its mathematical output in the particular environment one is using (for example, the evaluation of a perfectly valid program with a division term, say x/y, might result in an unviable program if among the fitness cases one of them has y = 0.