fact: Definition bindOpt {A B} (g : G (option A)) (f : A -> G (option B)) : G (option B) := bind g (fun ma => match ma with | None => ret None | Some a => f a end).
imports: ZArith List Lia mathcomp.ssreflect.ssreflect mathcomp(ssrfun ssrbool ssrnat seq eqtype) QuickChick(Sets Tactics RandomQC)