'Apply reduction rules to `word` excluding the reduction rule
for the lhs equal to `exclude`'

def reduce(self, word, exclude=None):

    rules = {r: self.rules[r] for r in self.rules if (r != exclude)}
    again = True
    new = word
    while again:
        again = False
        for r in rules:
            prev = new
            if ((rules[r] ** (-1)) > (r ** (-1))):
                new = new.eliminate_word(r, rules[r], _all=True, inverse=False)
            else:
                new = new.eliminate_word(r, rules[r], _all=True)
            if (new != prev):
                again = True
    return new
