fact: Fixpoint gen_type_size (n : nat) : G type := match n with | 0 => returnGen N | S n' => do! m <- choose (0, n'); liftGen2 Arrow (gen_type_size (n' - m)) (gen_type_size (n' - (n' - m))) end.
imports: mathcomp(ssreflect ssrbool eqtype) Arith List String Lia Program Relations Wellfounded Lexicographic_Product QuickChick(QuickChick) QuickChick.stlc(monad)