Fixpoint forNats(n : nat) :=
  match n with
      | 0 => nil
      | S n' =>
        cons n' (forNats n')
  end.

Theorem combine_map_eq : forall (A B C : Type)(lsa : list A)(lsb : list B)(f : B -> C), combine lsa (map f lsb) = map (fun p => (fst p, f (snd p))) (combine lsa lsb).