fact: Fixpoint merge (m : t elt) : t elt' -> t elt'' := match m with | nil => merge_r | (k,e) :: l => fix merge_aux (m' : t elt') : t elt'' := match m' with | nil => merge_l m | (k',e') :: l' => match X.compare k k' with | Lt => option_cons k (f k (Some e) None) (merge l m') | Eq => option_cons k (f k (Some e) (Some e')) (merge l l') | Gt => option_cons k' (f k' None (Some e')) (merge_aux l') end end end.
imports: Coq(OrdersFacts OrdersLists)