Definition two_lists_rect x y: P x y := two_lists_rect_pre (x, y).Instance Reflexive_Permutation T: Reflexive Permutation := @Permutation_refl T.Instance Reflexive_Symmetric T: Symmetric Permutation := @Permutation_sym T.Instance Reflexive_Transitive T: Transitive Permutation := @perm_trans T.

Lemma concat_product T U V (f: U -> T -> list V) l l': Permutation (concat (map (fun x => concat (map (fun y => f y x) l')) l)) (concat (map (fun x => concat (map (f x) l)) l')).