proposition: Lemma mkrlist_cat T l1 l2 r : mkrlist T (l1++l2) r = mkrlist T l2 r >>= mkrlist T l1.
proof: Proof. elim: l1 => [|a l1 IH]; by [rewrite cat0s bindmret | rewrite /= IH bindA]. Qed.
imports: ZArith mathcomp(all_ssreflect) infotheo(ssrZ) monad_model HB(structures) monae_lib hierarchy monad_lib typed_store_lib