code: def del_rules(cls, *names, attr=None):
          
          if attr is None:
              attr = cls._rules_attr()
          if len(names) == 0:
              getattr(cls, attr)  # raise AttributeError if wrong attr
              setattr(cls, attr, OrderedDict())
          else:
              for name in names:
                  del getattr(cls, attr)[name]
docs: Delete algebraic rules used by :meth:`create`
  
          Remove the rules with the given `names`, or all rules if no names are
          given
  
          Args:
              names (str): Names of rules to delete
              attr (None or str): Name of the class attribute from which to
                  delete the rules. Cf. :meth:`add_rule`.
  
          Raises:
              KeyError: If any rules in `names` does not exist
              AttributeError: If invalid `attr`