docs: def _satisfied(self, cl, model):
          """
              Given a clause (as an iterable of integers) and an assignment (as a
              list of integers), this method checks whether or not the assignment
              satisfies the clause. This is done by a simple clause traversal.
              The method is invoked from :func:`_filter_satisfied`.
  
              :param cl: a clause to check
              :param model: an assignment
  
              :type cl: iterable(int)
              :type model: list(int)
  
              :rtype: bool
          """
  
          for l in cl:
              if len(model) < abs(l) or model[abs(l) - 1] == l:
                  # either literal is unassigned or satisfied by the model
                  return True
  
          return False