'Return True iff \'self\' subsumes \'other\', this is, if there is a
substitution such that every term in \'self\' can be unified with a term
in \'other\'.
:param other: ``Clause``
:return: bool'

def subsumes(self, other):

    negatedother = []
    for atom in other:
        if isinstance(atom, NegatedExpression):
            negatedother.append(atom.term)
        else:
            negatedother.append((- atom))
    negatedotherClause = Clause(negatedother)
    bindings = BindingDict()
    used = ([], [])
    skipped = ([], [])
    debug = DebugObject(False)
    return (len(_iterate_first(self, negatedotherClause, bindings, used, skipped, _subsumes_finalize, debug)) > 0)
