The use of cut ( !/0) changes the search space while the program is running. We now introduce a family of predicates that can be used to change the search space during program execution. We do this with the strongest request: