An incremental learning algorithm for constructing Boolean functions from positive and negative examples