Set Implicit Arguments.
Unset Standard Proposition Elimination Names.
Require qs_parts.
Require Vector.
Require ne_tree_monad.
Section contents.
Variable (e: E) (ol: list e).
(* 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.
Proof MonoidMonadTrans.Mext monoid ne_tree_monad.ext.