<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_successors(self, tail):
 """Given a tail set of nodes, get a list of edges of which the node set is the tail of each edge. :param tail: set of nodes that correspond to the tails of some (possibly empty) set of edges. :returns: set -- hyperedge_ids of the hyperedges that have tail in the tail. """

        frozen_tail = frozenset(tail)
        # If this node set isn't any tail in the hypergraph, then it has
        # no successors; thus, return an empty list
        if frozen_tail not in self._successors:
            return set()

        return set(self._successors[frozen_tail].values())