End CuttingMap.
(**************************************************************)
(** ** Combining pairs of lists of possibly-different lengths *)
(**************************************************************)
Section Combining.
Variables (A B : Type).

(* Specifications: *)
Lemma combine_nil : forall (l : list A),
combine l (@nil B) = @nil (A*B).
Lemma combine_firstn_l : forall (l : list A) (l' : list B),
combine l l' = combine l (firstn (length l) l').
Lemma combine_firstn_r : forall (l : list A) (l' : list B),
combine l l' = combine (firstn (length l') l) l'.
Lemma combine_firstn : forall (l : list A) (l' : list B) (n : nat),
firstn n (combine l l') = combine (firstn n l) (firstn n l').