def prune_satisfied_clauses(clauses, variables):
    """Remove any clause that is already satisfied (i.e. is True) from the
    given clause set.

    Parameters
    ----------
    clauses: seq
        Sequence of clauses
    variables: dict
        variable name -> bool mapping

    Returns
    -------
    clauses: seq or None
        Sequence of clauses that are not yet satisfied. If None, it means at
        least one clause could not be satisfied
    """
    new_clauses = []

    for clause in clauses:
        evaluated_or_none = variables.satisfies_or_none(clause)
        if evaluated_or_none is None:
            new_clauses.append(clause)
        elif evaluated_or_none is False:
            return None

    return new_clauses