fact: Definition genGoodRec (n : nat) := let fix aux_arb (init_size size : nat) n : G (option Foo) := match size with | 0 => backtrack [(1, ret (Some Foo1)); (1, ret None)] | S size' => backtrack [ (1, ret (Some Foo1)) ; (1, bindOpt (aux_arb init_size size' 0) (fun foo => ret (Some (Foo2 foo)))) ] end in fun sz => aux_arb sz sz n.
imports: QuickChick(QuickChick Tactics) String mathcomp(ssreflect ssrfun ssrbool ssrnat eqtype seq) List ExtLib.Structures.Monads