Machine Learning : A Constraint-Based Approach