induction ls; intuition; simpl in *.
discriminate.
case_eq (eqb a a0); intuition;
rewrite H0 in H.
inversion H; clear H; subst.
rewrite eqb_leibniz in H0.
subst.
intuition.
right.
eauto.
Qed.

(* Specifications: *)
Theorem list_pred_impl_arrayLookup :
forall (A B C : Set) P (eqda : EqDec A)(ls1 : list (A * B))(ls2 : list (A * C)),
list_pred (fun x y => fst x = fst y /\ P (snd x) (snd y)) ls1 ls2 ->
(forall v z, arrayLookup _ ls1 v = Some z -> exists z', arrayLookup _ ls2 v = Some z' /\ P z z') /\
(forall v, arrayLookup _ ls1 v = None -> arrayLookup _ ls2 v = None).