Fixpoint remove_all (to_delete l : list A) : list A :=
    match to_delete with
    | [] => l
    | d :: ds => remove_all ds (remove A_eq_dec d l)
    end.

Lemma remove_all_app_r : forall xs ys zs, remove_all xs (ys ++ zs) = remove_all xs ys ++ remove_all xs zs.