*)
(* 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 semForAllShrinkUnsized2 :
forall {A C} `{Checkable C} `{Show A}
(gen : G A) (f : A -> C) shrinker
`{forall a, UnsizedChecker (checker (f a))},
(semChecker (forAllShrink gen shrinker f) <->
forall a : A, semGen gen a -> semCheckable (f a)).