Definition unordered_nat_pair (x y: nat): nat * nat :=
    if le_lt_dec x y then (x, y) else (y, x).Definition cmp (x y: Index e ol): M comparison
    := ret (unordered_nat_pair x y :: nil, Ecmp e (subscript x) (subscript y)).Definition homo: monoidHomo monoid NatAddMonoid (fun x => length x).Definition pick := monoid_tree_monad.pick monoid.

Theorem qs_ind: forall l, P l (qs cmp pick l).