Definition Injective {A B} (f : A->B) :=
 forall x y, f x = f y -> x = y.Implicit Types (A B: list X) (a b c: X).

(* Specifications: *)
Lemma rev_eq A B: List.rev A = List.rev B <-> A = B.
Lemma map_inj (Y:Type) A B (f: X -> Y) : Injective f -> map f A = map f B <-> A = B.
Lemma countSplit (A B: list nat) (x: nat) : count A x + count B x = count (A ++ B) x.
Lemma notInZero (x: nat) A : not (x el A) <-> count A x = 0.