Proof using.
induction l; intros; auto.
destruct a.
apply IHl.
unfold update2.
break_if; auto.
break_and.
subst.
apply in_or_app.
left.
assumption.
Qed.

Lemma collate_head_head :
forall l h n n' (f : A -> A -> list B) a,
head (f n' n) = Some a ->
head ((collate A_eq_dec h f l) n' n) = Some a.