unfold extMonad.
induction x using ne_tree.alt_ind; simpl...
replace (ne_list.map (fun x: C A => bind x f) l) with (ne_list.map (fun x: C A => bind x g) l)...
generalize H0. clear H0.
induction l; simpl; intros; rewrite H0...
rewrite IHl...
Qed.

(* Specifications: *)
Lemma bind_Leaf (A B: Set) (x: A) (f: A -> M B): bind (ne_tree.Leaf x) f = f x.
Definition deterministic (X: Set) (x: M X) (v: X): Prop := x = ne_tree.Leaf v.
Lemma deterministic_ret (A: Set) (a: A): deterministic (ret a) a.
Lemma bind_eq (X X' Y XM: Set)
(f: X -> M Y) (f': X' -> M Y)
(xm: X -> XM) (xm': X' -> XM):
(forall p q, xm p = xm' q -> f p = f' q) ->
forall (x: M X) (x': M X'),
ne_tree.map xm x = ne_tree.map xm' x' ->
bind x f = bind x' f'.