Hopefully you already know what backtracking is, but just in case: each decision the interpreter makes during execution represents a fork in the road. If a particular path ends in failure, it goes back down the road until it finds a fork it has never taken, and follows that.