Section map2.
Variable A B C : Type.
Variable f : option A -> option B -> option C.
Arguments Leaf {A}.
Fixpoint xmap2_l (m : t A) : t C :=
match m with
| Leaf => Leaf
| Node l o r => Node (xmap2_l l) (f o None) (xmap2_l r)
end.

(* Specifications: *)
Lemma xgmap2_l : forall (i : key) (m : t A),
f None None = None -> find i (xmap2_l m) = f (find i m) None.