Section Elt.
Variable elt:Type.
Implicit Types m r : t elt.
(** * Basic results about [MapsTo], [In], [lt_tree], [gt_tree], [height] *)
(** Facts about [MapsTo] and [In]. *)
Hint Resolve MapsTo_In : core.
Hint Immediate MapsTo_1 : core.
(** Results about [lt_tree] and [gt_tree] *)
Hint Resolve lt_leaf gt_leaf lt_tree_node gt_tree_node : core.
Hint Resolve lt_left lt_right gt_left gt_right : core.
Hint Resolve lt_tree_not_in lt_tree_trans gt_tree_not_in gt_tree_trans : core.
(** * Empty map *)
Definition Empty m := forall (a:key)(e:elt) , ~ MapsTo a e m.
(** * Emptyness test *)
(** * Membership *)
(** * Helper functions *)
Hint Resolve create_bst : core.
Hint Resolve bal_bst : core.
(** * Insertion *)
Hint Resolve add_bst : core.
(** * Extraction of minimum binding *)
Hint Resolve remove_min_bst : core.
Hint Resolve remove_min_gt_tree : core.
(** * Merging two trees *)
(** * Deletion *)
(** * join *)
Hint Resolve join_bst : core.
(** * split *)
(** * Concatenation *)
Hint Resolve concat_bst : core.

Lemma concat_find : forall m1 m2 y, bst m1 -> bst m2 ->
(forall y1 y2, In y1 m1 -> In y2 m2 -> X.lt y1 y2) ->
find y (concat m1 m2) =
match find y m2 with Some d => Some d | None => find y m1 end.