Section bind_expecs.
Variables (T U: Set) (f: T -> nat).
Proof with auto.
induction m...
simpl in *.
repeat rewrite expec_Node_one...
simpl in *.
repeat rewrite expec_Node_cons.
rewrite IHm.
rewrite IHm0.
repeat rewrite ne_list.map_length...
Qed.

Lemma expec_bind_cons (x: ne_tree_monad.M U) t (g: U -> ne_tree_monad.M T):
expec f (@bind ne_tree_monad.M _ _  (ne_tree.Node (ne_list.cons x t)) g) =
(expec f (x >>= g) + expec f (@bind ne_tree_monad.M _ _ (ne_tree.Node t) g) * INR (length (ne_list.to_plain t))) * / INR (S (length (ne_list.to_plain t))).