1. A method for inferring a classification of the input data to a program or the data stored in a set of memory locations at a certain program point, where each class of data is described by a predicate and is known as a predicate class, by analyzing how the program uses the said input data.