code: def evaluate_logical_form(self, logical_form: str, target_list: List[str]) -> bool:
          
          normalized_target_list = [TableQuestionContext.normalize_string(value) for value in
                                    target_list]
          target_value_list = evaluator.to_value_list(normalized_target_list)
          try:
              denotation = self.execute(logical_form)
          except ExecutionError:
              logger.warning(f'Failed to execute: {logical_form}')
              return False
          if isinstance(denotation, list):
              denotation_list = [str(denotation_item) for denotation_item in denotation]
          else:
              denotation_list = [str(denotation)]
          denotation_value_list = evaluator.to_value_list(denotation_list)
          return evaluator.check_denotation(target_value_list, denotation_value_list)
docs: Takes a logical form, and the list of target values as strings from the original lisp
          string, and returns True iff the logical form executes to the target list, using the
          official WikiTableQuestions evaluation script.