<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_remove(self, key, value, **kwargs):
 """ Remove an item from a set. :param key: The docuent ID :param value: Value to remove :param kwargs: Arguments to :meth:`mutate_in` :return: A :class:`OperationResult` if the item was removed, false otherwise :raise: :cb_exc:`NotFoundError` if the set does not exist. .. seealso:: :meth:`set_add`, :meth:`map_add` """

        while True:
            rv = self.get(key)
            try:
                ix = rv.value.index(value)
                kwargs['cas'] = rv.cas
                return self.list_remove(key, ix, **kwargs)
            except E.KeyExistsError:
                pass
            except ValueError:
                return