Reasoning: Goal Trees and Problem Solving