Problem solving with upper and lower bounds