Proof using.
induction ns; intros; auto.
assert (H_in': ~ In n ns).
intro.
contradict H.
right.
trivial.
assert (H_neq: n <> a).
intro.
subst.
contradict H.
left.
trivial.
simpl in *.
break_if; auto.
simpl in *.
assert (H_eq_f: update2 A_eq_dec f h a (f h a ++ [a0]) h n = f h n).
unfold update2.
break_if; auto.
break_and; subst.
intuition.
rewrite (collate_f_eq _ _ _ _ _ _ H_eq_f) in H0.
apply IHns; auto.
Qed.

Lemma not_in_map2snd :
forall n h (m : B) ns,
~ In n ns ->
~ In (n, m) (map2snd m (filter_rel R_dec h ns)).