End AssortedListProperties.
(* ********************************************************************* *)
(** ** Properties of [map] and [dom] *)
(** The following lemmas are used mainly to simplify applications of [map] and [dom] to association lists.  See also the [simpl_alist] and [rewrite_alist] tactics below. *)
Section Properties.
Variables A B : Set.
Variables f1 : A -> A.
Variables f2 : B -> B.
Variables x : atom.
Variables b : A.
Variables a : B.
Variables E F G : list (asn A B).

(* Specifications: *)
Lemma map_nil :
map f1 f2 nil = nil.
Lemma disjoint_app_r :
forall A B (E F : list (asn A B)) (G : list (asn A B)),
disjoint G (E ++ F) <-> disjoint E G /\ disjoint F G.
Lemma uniq_app_1 :
uniq (E ++ F) -> uniq E.
Lemma uniq_app_2 :
uniq (E ++ F) -> uniq F.
Lemma uniq_app_3 :
uniq (E ++ F) -> disjoint E F.
Lemma uniq_app_4 :
uniq E ->
uniq F ->
disjoint E F ->
uniq (E ++ F).
Lemma uniq_app :
uniq (E ++ F) <-> uniq E /\ uniq F /\ disjoint E F.
Lemma uniq_map_1 :
uniq (map f1 f2 E) ->
uniq E.
Lemma uniq_map_2 :
uniq E ->
uniq (map f1 f2 E).
Lemma uniq_map :
uniq (map f1 f2 E) <-> uniq E.