intuition.
unfold arrayLookupList in *.
case_eq (arrayLookup eqda ls a); intuition;
rewrite H0 in H.
eapply arrayLookup_Some_impl_In in H0.
econstructor.
split.
eauto.
trivial.
simpl in *.
intuition.
Qed.

(* Specifications: *)
Theorem arrayLookupList_pred'
: forall (A B : Set) (eqda : EqDec A) (P : list B -> Type)
(ls : list (A * list B)) (a : A),
(forall x : list B, In (a, x) ls -> P x) ->
(arrayLookup _ ls a = None -> P nil) ->
P (arrayLookupList eqda ls a).