def marginal_thiele_scores_remove(marginal_scorefct, profile, committee):
    """
    Return marginal score decreases from removing one candidate from the committee.

    The function returns a list of length `num_cand` where the i-th entry contains the
    marginal score decrease when removing candidate i.
    Candidates that are not in the committee receive a large value (max(marg_util_cand) + 1).

    Parameters
    ----------
        marginal_scorefct : func
            The marginal score function to be used.

        profile : abcvoting.preferences.Profile
            A profile.

        committee : set
            A committee.

    Returns
    -------
        list
            Marginal score decreases from removing candidates from the committee.
    """
    marg_util_cand = [0] * profile.num_cand
    #  marginal utility gained by adding candidate to the committee
    for voter in profile:
        satisfaction = len(voter.approved.intersection(committee))
        for cand in voter.approved:
            marg_util_cand[cand] += voter.weight * marginal_scorefct(satisfaction)
    for cand in profile.candidates:
        if cand not in committee:
            # do not choose candidates that already have been removed
            marg_util_cand[cand] = max(marg_util_cand) + 1
    return marg_util_cand