'Simplify :class:`SeqAdd` using known rules.
Iterates through all pairs and ask the constituent
sequences if they can simplify themselves with any other constituent.
Notes
adapted from ``Union.reduce``'

@staticmethod
def reduce(args):

    new_args = True
    while new_args:
        for (id1, s) in enumerate(args):
            new_args = False
            for (id2, t) in enumerate(args):
                if (id1 == id2):
                    continue
                new_seq = s._add(t)
                if (new_seq is not None):
                    new_args = [a for a in args if (a not in (s, t))]
                    new_args.append(new_seq)
                    break
            if new_args:
                args = new_args
                break
    if (len(args) == 1):
        return args.pop()
    else:
        return SeqAdd(args, evaluate=False)
