induction arr; intuition; simpl in *.
discriminate.
remember (split arr) as z.
destruct z.
simpl.
case_eq (eqb a a0); intuition.
rewrite eqb_leibniz in H0.
intuition.
rewrite H0 in H.
right.
eapply IHarr; intuition.
eauto.
Qed.

(* Specifications: *)
Theorem arrayLookup_noCollision_eq_f :
forall (A B C : Set)(eqda : EqDec A)(eqdb : EqDec B)(x1 : list ((A * B) * C)) (a : A) (b : B) c,
arrayLookup_f _ x1 b = Some c ->
collidesWith _ _ (fst (split x1)) a b = false ->
arrayLookup _ x1 (a, b) = Some c.
Theorem arrayLookup_noCollision_eq_f :
forall (A B C : Set)(eqda : EqDec A)(eqdb : EqDec B)(x1 : list ((A * B) * C)) (a : A) (b : B) c,
arrayLookup_f _ x1 b = Some c ->
collidesWith _ _ (fst (split x1)) a b = false ->
arrayLookup _ x1 (a, b) = Some c.