Efficiently Inducing Determinations: A Complete and Systematic Search Algorithm that Uses Optimal Pruning