Notation permutation := (permutation _ eq_dec).Notation list_contents := (list_contents _ eq_dec).

(* Specifications: *)
Lemma multiplicity_In : forall l a, In a l <-> 0 < multiplicity (list_contents l) a.
Lemma multiplicity_In_O : forall l a, ~ In a l -> multiplicity (list_contents l) a = 0.
Lemma multiplicity_In_S : forall l a, In a l -> multiplicity (list_contents l) a >= 1.
Lemma multiplicity_NoDup : forall l, NoDup l <-> (forall a, multiplicity (list_contents l) a <= 1).
Lemma NoDup_permut : forall l l', NoDup l -> NoDup l' -> (forall x, In x l <-> In x l') -> permutation l l'.
Lemma permut_In_In : forall l1 l2 e, permutation l1 l2 -> In e l1 -> In e l2.
Lemma permut_cons_In : forall l1 l2 e, permutation (e :: l1) l2 -> In e l2.
Lemma permut_nil : forall l, permutation l nil -> l = nil.
Lemma permutation_Permutation : forall l l', Permutation l l' <-> permutation l l'.
Lemma permut_length_1: forall a b, permutation (a :: nil) (b :: nil) -> a=b.
Lemma permut_length_2 : forall a1 b1 a2 b2, permutation (a1 :: b1 :: nil) (a2 :: b2 :: nil) -> (a1=a2) /\ (b1=b2) \/ (a1=b2) /\ (a2=b1).
Lemma permut_length : forall l1 l2, permutation l1 l2 -> length l1 = length l2.
Lemma permutation_map : forall f l1 l2, permutation l1 l2 -> PermutSetoid.permutation _ eqB_dec (map f l1) (map f l2).