proposition: Theorem map2_app : forall l1 l2 l3 l4, length l1 = length l2 -> map2 (l1 ++ l3) (l2 ++ l4) = map2 l1 l2 ++ map2 l3 l4.
proof: Proof. intros l1; elim l1; auto. intros l2; case l2; simpl in |- *; auto; intros; discriminate. intros a l H l2 l3 l4; case l2. simpl in |- *; intros; discriminate. intros b l0 H0. apply trans_equal with (f a b :: map2 (l ++ l3) (l0 ++ l4)). simpl in |- *; auto. rewrite H; auto. Qed.
imports: Coq(Inverse_Image Wf_nat Sorting.Permutation)