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_l : forall xs ys zs, remove_all (xs ++ ys) zs = remove_all xs (remove_all ys zs).