def prove_one_wrapper( self, task: proof_assistant_pb2.ProverTask) -> deephol_pb2.ProofLog: """Wrapper of prove_one methods for single goal use cases. This wrapper handles, timeout, error management and can set the prover into a mode that does not accept tasks anymore. Args: task: ProverTask to be performed. Returns: A proof log of the task performed. """ # Note that this changes the prover options in place. _sample_bfs_options(self.prover_options) log = check_task(task, self.prover_options) if log is not None: tf.logging.info('Task did not fit the prover.') return log goal_thm = task.goals[0] tree = proof_search_tree.ProofSearchTree(self.hol_wrapper, goal_thm) error_message = None if self.accept_tasks: try: self.start_time = time.time() tf.logging.info('Attempting task %s.', text_format.MessageToString(task)) error_message = self.prove_one(tree, task) except error.StatusNotOk as exception: tf.logging.error('Prover stopped accepting tasks due to "%s"', exception.message) self.error = exception.message error_message = exception.message self.accept_tasks = False else: tf.logging.warning('Prover does not accept tasks anymore.') error_message = 'Prover stopped accepting tasks due to %s.' % self.error proof_log = tree.to_proto() if not self.accept_tasks: proof_log.rejected = True proof_log.time_spent = int( round((time.time() - self.start_time) * 1000.0)) if tree.nodes[0].closed: proof_log.num_proofs = 1 else: proof_log.num_proofs = 0 proof_log.error_message = error_message or 'No proof.' proof_log.prover_options.CopyFrom(self.prover_options) proof_log.prover_task.CopyFrom(task) tf.logging.info('Pruning theorem nodes...') if self.pruner is not None: for node in proof_log.nodes: if node.status == deephol_pb2.ProofNode.PROVED: self.pruner.prune_closed_tactic_applications(node) return proof_log
def setUp(self): tf.logging.info('Setting up tree...') self.tree = proof_search_tree.ProofSearchTree(MOCK_WRAPPER, MOCK_THEOREM)
def setUp(self): self.tree = proof_search_tree.ProofSearchTree(MOCK_WRAPPER, MOCK_THEOREM) self.node = proof_search_tree.ProofSearchNode(self.tree, 0, self.test_goal)