Derivational analogy and its role in problem solving