proposition: Lemma mem_rcons_cat (A : eqType) (b : seq A) h : h \in b -> exists b1 b2, b = rcons b1 h ++ b2.
proof: Proof. move=> hb; exists (take (index h b) b), (drop (index h b).+1 b). rewrite -cats1 -catA -{1}(cat_take_drop (index h b) b); congr (_ ++ _) => /=. by rewrite -{2}(nth_index h hb) -drop_nth // index_mem. Qed.
imports: mathcomp(all_ssreflect) imonae_lib HB(structures) ihierarchy imonad_lib Equations(Equations)