fact: Definition sequenceProd {A : Type} (ms : list (G A)) : G (list A) := foldr (fun m m' => x <- m;; xs <- m';; ret (x :: xs)) (ret nil) ms.
imports: ZArith List Lia mathcomp.ssreflect.ssreflect mathcomp(ssrfun ssrbool ssrnat seq eqtype) QuickChick(Sets Tactics RandomQC)