'Test if the group is solvable.
``G`` is solvable if its derived series terminates with the trivial
group ([1], p.29).
Examples
>>> from sympy.combinatorics.named_groups import SymmetricGroup
>>> S = SymmetricGroup(3)
>>> S.is_solvable
True
See Also
is_nilpotent, derived_series'

@property
def is_solvable(self):

    if (self._is_solvable is None):
        ds = self.derived_series()
        terminator = ds[(len(ds) - 1)]
        gens = terminator.generators
        degree = self.degree
        identity = _af_new(list(range(degree)))
        if all(((g == identity) for g in gens)):
            self._is_solvable = True
            return True
        else:
            self._is_solvable = False
            return False
    else:
        return self._is_solvable
