(** A [combine] operation over the type [PTree.t L.t] that attempts to share its result with its arguments. *)
Variable f: option L.t -> option L.t -> option L.t.
Hypothesis f_none_none: f None None = None.
Definition opt_eq (ox oy: option L.t) : Prop :=
match ox, oy with
| None, None => True
| Some x, Some y => L.eq x y
| _, _ => False
end.

Lemma opt_eq_sym: forall ox oy, opt_eq ox oy -> opt_eq oy ox.