Proof using.
intros m n h ns f.
revert f.
induction ns; intros; auto.
simpl in *.
break_if; simpl.
- rewrite IHns.
* unfold update2.
break_if; auto.
break_and; subst.
contradict H.
left.
trivial.
* intro.
contradict H.
right.
assumption.
- rewrite IHns; auto.
Qed.

(* Specifications: *)
Lemma collate_map2snd_not_in_remove_all :
forall m n h ns (f : A -> A -> list B) ns',
~ In n ns ->
collate A_eq_dec h f (map2snd m (filter_rel R_dec h (remove_all A_eq_dec ns' ns))) h n = f h n.