induction lsa; destruct lsb; intuition; simpl in *; try omega.
unfold unzip in *.
simpl.
assert ((map (fst (B:=B)) (zip lsa lsb), map (snd (B:=B)) (zip lsa lsb)) =
(lsa, lsb)).
eapply IHlsa.
omega.
repeat f_equal.
congruence.
congruence.
Qed.
Notation "'foreach' '(' x 'in' ls ')' c " := (compMap _ (fun x => c) ls) (right associativity, at level 85, only parsing) : comp_scope.
Notation "'foreach' '(' x 'in' ls ')' c " := (map (fun x => c) ls) (right associativity, at level 85, only parsing).
Notation "'for' '(' x ''<' n ')' c " := (map (fun x => c) (allNatsLt n)) (right associativity, at level 86, only parsing).
Fixpoint removePresent (A : Set)(eqd : eq_dec A)(u ls : list A) :=
match ls with
| nil => nil
| a' :: ls' =>
ls'' <- removePresent eqd u ls';
if (in_dec eqd a' u) then ls'' else (a' :: ls'')
end.

Lemma removePresent_not_in :
forall (A : Set)(eqd : eq_dec A)(a : A) ls1 ls2,
In a (removePresent eqd ls1 ls2) ->
In a ls1 ->
False.