One of the most powerful features of declarative languages is the feature of backtracking. Backtracking allows multiple solutions to be found to a given problem. When a solution is being found a search tree (also known as a proof tree) is created. Two things can happen as the tree is being evaluated. First of all a solution is found and the search stops or the search reaches a leaf. When either of these two things happen the language will backtrack up the tree. This way it can continue searching for a new solution. To understand how backtracking works you need to draw out a search tree, very similar to the one created in the last task.