(* todo: use:

  Inductive UnordNatPair: Set := unord_nat_pair (x y: nat): x <= y -> UnordNatPair.

  Definition mk_unord_nat_pair (x y: nat): UnordNatPair :=
    match le_lt_dec x y with
    | left p => unord_nat_pair p
    | right p => unord_nat_pair (lt_le_weak _ _ p)
    end.

  *)

  Definition monoid := ListMonoid.M (nat * nat).Definition M: Monad := MonoidMonadTrans.M monoid ne_tree_monad.ext.

(* Specifications: *)
Lemma Mext: extMonad M.