def METHOD_NAME(self, words):
    """
    TODO - this needs a rewrite - see stuff in the matrix_grp
    directory.
    G and H are abelian groups, g in G, H is a subgroup of G generated
    by a list (words) of elements of G. If self is in H, return the
    expression for self as a word in the elements of (words).
    This function does not solve the word problem in Sage. Rather
    it pushes it over to GAP, which has optimized (non-deterministic)
    algorithms for the word problem.
    .. warning::
        Don't use E (or other GAP-reserved letters) as a generator
        name.
    EXAMPLES::
        sage: G = AbelianGroup(2,[2,3], names="xy")
        sage: x,y = G.gens()
        sage: x.word_problem([x,y])
        [[x, 1]]
        sage: y.word_problem([x,y])
        [[y, 1]]
        sage: v = (y*x).word_problem([x,y]); v #random
        [[x, 1], [y, 1]]
        sage: prod([x^i for x,i in v]) == y*x
        True
    """
    from sage.groups.abelian_gps.abelian_group import METHOD_NAME
    return METHOD_NAME(words, self)