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.

def evaluate_logical_form(self, logical_form: str, target_list: List[str]) -> bool:
        """
        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.
        """
        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)