*)
(* CH: We could create a super class UCheckable that includes the unsized assumption. And we could use sections to hide all the type class stuff from the paper. *)
(* CH: This will be affected by upcoming refactoring; proving it like this only because it appears in ITP submission *)

Lemma semForAllShrinkSize:
forall {A C} `{Checkable C} `{Show A}
(gen : G A) (f : A -> C) shrinker (size: nat),
semCheckerSize (forAllShrink gen shrinker f) size <->
forall a : A, semGenSize gen size a -> semCheckableSize (f a) size.