induction ls; intuition; simpl in *.
rewrite H.
destruct (f2 a); eauto.
f_equal;
eauto.
Qed.
(* definitions related to the program logic *)
Definition marginal_l(A B : Set){eqd : EqDec A}(c : Comp (A * B))(a : A) :=
Pr[x <-$ c; ret eqb (fst x) a].
Definition marginal_r(A B : Set){eqd : EqDec B}(c : Comp (A * B))(b : B) :=
Pr[x <-$ c; ret eqb (snd x) b].

Theorem in_support_marginal_l :
forall (A B : Set){eqd: EqDec A}(c1 : Comp (A * B))(c2 : Comp A),
(forall a, evalDist c2 a == marginal_l c1 a) ->
forall p,
In p (getSupport c1) ->
In (fst p) (getSupport c2).