Section CoreDefinitions.
Variable A B : Type.
Implicit Types x y : TVar.
Implicit Types xs ys : list TVar.
Implicit Types v w : A.
Implicit Types vs ws : list A.
Implicit Types E F G : gen_env A.
Implicit Types f g : A -> B.
Definition eq_keys_dec := VarType.eq_dec.
(** Preliminary properties of eq_keys_dec. *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of singulars *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of get *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of dom *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of img *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of map *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of update_one *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of update *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of remove *)
(* ---------------------------------------------------------------------- *)
(** **** Properties of all_remove *)

Lemma all_remove_singles_not_in : forall xs ys vs,
List.Forall (fun x => ¬ List.In x xs) ys ->
(xs ∷ vs) ∖ ys = (xs ∷ vs).