fact: Fixpoint select s : M (A * seq A)%type := if s isn't h :: t then fail else (Ret (h, t) [~] select t >>= (fun x => Ret (x.1, h :: x.2))).
imports: mathcomp(all_ssreflect) imonae_lib HB(structures) ihierarchy imonad_lib Equations(Equations)