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