Set Implicit Arguments.
Section remove_all.
Variable A : Type.
Hypothesis A_eq_dec : forall x y : A, {x = y} + {x <> y}.
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.

(* Specifications: *)
Lemma in_remove_all_was_in :
forall ds l x,
In x (remove_all ds l) ->
In x l.