fact: Definition genGoodPrec (n : nat) : nat -> G (option (Foo)):= let fix aux_arb init_size size (n : nat) : G (option (Foo)) := match size with | O => backtrack [ (1, ret (Some Foo1)) ; (1, match @decOpt (goodFooPrec O Foo1) _ init_size with | Some true => foo <- arbitrary;; ret (Some foo) | _ => ret None end) ] | S size' => backtrack [ (1, ret (Some Foo1)) ; (1, match @decOpt (goodFooPrec O Foo1) _ init_size with | Some true => foo <- arbitrary;; ret (Some foo) | _ => ret None end )] 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