fact: Fixpoint showFoo' (x : Foo) := match x with | Foo1 => "Foo1" | Foo2 f => "Foo2 " ++ smart_paren (showFoo' f) | Foo3 n f => "Foo3 " ++ smart_paren (show n) ++ " " ++ smart_paren (showFoo' f) end%string.
imports: QuickChick(QuickChick Tactics) String mathcomp(ssreflect ssrfun ssrbool ssrnat eqtype seq) List ExtLib.Structures.Monads