def _run_in_hypothesis(self, mma, w_string, index):
        """""
        Run the string in the hypothesis automaton for index steps and then
        return the access string for the state reached concatanated with the
        rest of the string w.
        Args:
            mma (DFA): The hypothesis automaton
            w_string (str): The examined string to be consumed
            index (int): The index value for selecting the prefix of w
        Return:
            str: The access string
        """
        state = mma[0]
        for i in range(index):
            for arc in state:
                if mma.isyms.find(arc.ilabel) == w_string[i]:
                    state = mma[arc.nextstate]
                    s_index = arc.nextstate

        # The id of the state is its index inside the Sm list
        access_string = self.observation_table.sm_vector[s_index]
        logging.debug(
            'Access string for %d: %s - %d ',
            index,
            access_string,
            s_index)

        return access_string