(self, alpha, beta, schreier_vector=None)
Return a group element which sends ``alpha`` to ``beta``.

        If ``beta`` is not in the orbit of ``alpha``, the function returns
        ``False``. This implementation makes use of the schreier vector.
        For a proof of correctness, see [1], p.80

        Examples
        ========

        >>> from sympy.combinatorics import Permutation
        >>> Permutation.print_cyclic = True
        >>> from sympy.combinatorics.perm_groups import PermutationGroup
        >>> from sympy.combinatorics.named_groups import AlternatingGroup
        >>> G = AlternatingGroup(5)
        >>> G.orbit_rep(0, 4)
        Permutation(0, 4, 1, 2, 3)

        See Also
        ========

        schreier_vector
Return a group element which sends ``alpha`` to ``beta``.
Return a group element which sends alpha to beta .
def orbit_rep(self, alpha, beta, schreier_vector=None):
        """Return a group element which sends ``alpha`` to ``beta``.

        If ``beta`` is not in the orbit of ``alpha``, the function returns
        ``False``. This implementation makes use of the schreier vector.
        For a proof of correctness, see [1], p.80

        Examples
        ========

        >>> from sympy.combinatorics import Permutation
        >>> Permutation.print_cyclic = True
        >>> from sympy.combinatorics.perm_groups import PermutationGroup
        >>> from sympy.combinatorics.named_groups import AlternatingGroup
        >>> G = AlternatingGroup(5)
        >>> G.orbit_rep(0, 4)
        Permutation(0, 4, 1, 2, 3)

        See Also
        ========

        schreier_vector

        """
        if schreier_vector is None:
            schreier_vector = self.schreier_vector(alpha)
        if schreier_vector[beta] is None:
            return False
        k = schreier_vector[beta]
        gens = [x._array_form for x in self.generators]
        a = []
        while k != -1:
            a.append(gens[k])
            beta = gens[k].index(beta) # beta = (~gens[k])(beta)
            k = schreier_vector[beta]
        if a:
            return _af_new(_af_rmuln(*a))
        else:
            return _af_new(list(range(self._degree)))
def orbit_rep ( self , alpha , beta , schreier_vector = None ) : if schreier_vector is None : schreier_vector = self . schreier_vector ( alpha ) if schreier_vector [ beta ] is None : return False k = schreier_vector [ beta ] gens = [ x . _array_form for x in self . generators ] a = [ ] while k != - 1 : a . append ( gens [ k ] ) beta = gens [ k ] . index ( beta ) # beta = (~gens[k])(beta) k = schreier_vector [ beta ] if a : return _af_new ( _af_rmuln ( * a ) ) else : return _af_new ( list ( range ( self . _degree ) ) )