fact: Fixpoint shrink_foo x := match x with | Foo1 => [] | Foo2 f => ([f] ++ map (fun f' => Foo2 f') (shrink_foo f) ++ []) ++ [] | Foo3 n f => (map (fun n' => Foo3 n' f) (shrink n) ++ []) ++ ([f] ++ map (fun f' => Foo3 n f') (shrink_foo f) ++ []) ++ [] end.
imports: QuickChick(QuickChick Tactics) String mathcomp(ssreflect ssrfun ssrbool ssrnat eqtype seq) List ExtLib.Structures.Monads