Proof using.
intros.
revert f.
induction l; intros; auto.
simpl in *.
break_let.
destruct a.
find_injection.
rewrite IHl; unfold update2.
- break_if.
* break_and; subst.
simpl in *.
contradict H.
left.
trivial.
* intros.
trivial.
- intro.
contradict H.
right.
assumption.
Qed.

(* Specifications: *)
Lemma collate_app :
forall h' l1 l2 (f : A -> A -> list B),
collate A_eq_dec h' f (l1 ++ l2) = collate A_eq_dec h' (collate A_eq_dec h' f l1) l2.