Definition gt (x y: T): M bool := liftM negb (le x y).

(* Specifications: *)
Lemma unfold: forall l, qs l = Fix_sub (list T) (MR lt (fun l0 : list T => length l0)) qs_obligation_3 (fun _ : list T => M (list T)) body l.
Lemma body_eq: forall (x0 : list T) (g h : {y : list T | length y < length x0} -> M (list T)), (forall (x1 : list T) (p p' : length x1 < length x0), g (exist (fun y : list T => length y < length x0) x1 p) = h (exist (fun y : list T => length y < length x0) x1 p')) -> body x0 g = body x0 h.
Lemma mon_det_nonmonadic_eq (X: Set) (Xle: X -> X -> Prop) (leb: X -> X -> IdMonad.M bool): forall l, mon_det.qs leb l = nonmonadic.qs leb l.