Instance forAllMonotonic {A C} {_ : Checkable C} `{Show A} (g : G A) (f : A -> C)
        `{SizeMonotonic _ g} `{forall x, SizeMonotonicChecker (checker (f x))} :
  SizeMonotonicChecker (forAll g f).

(* Specifications: *)
Lemma unsized_printTestCase {A C} `{Checkable C} `{Show A} (c : A -> C) : (forall a, Unsized (checker (c a))) -> (forall a, Unsized (printTestCase (String.append (Show.show a) newline) (c a))).
Lemma curry_uncurry {A B C : Type} (f : A -> B -> C) : curry (uncurry f) = f.
Lemma uncurry_curry {A B C : Type} (f : A * B -> C) : uncurry (curry f) = f.
Lemma eq_to_impl : forall (a b : Prop), a = b -> a -> b.
Lemma mergeForAlls {A B C : Type} `{Checkable C} `{Show A} `{Show B} (ga : G A) (gb : G B) (f : A -> B -> C) : semChecker (forAll ga (fun a => forAll gb (f a))) <-> semChecker (forAll (genPair ga gb) (uncurry f)).
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.
Lemma semForAllShrinkUnsized1 : forall {A C} `{Checkable C} `{Show A} (gen : G A) (f : A -> C) shrinker `{Unsized _ gen}, (semChecker (forAllShrink gen shrinker f) <-> forall a : A, semGen gen a -> semCheckable (f a)).
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)).
Lemma semForAllShrinkMonotonic : forall {A C} `{Checkable C} `{Show A} (gen : G A) (f : A -> C) shrinker `{SizeMonotonic _ gen}, (forall a, SizeMonotonicChecker (checker (f a))) -> (semChecker (forAllShrink gen shrinker f) <-> forall a : A, semGen gen a -> semCheckable (f a)).
Lemma bool_successful : forall b, resultSuccessful (liftBool b) = b.
Lemma semCheckableBoolSize (b : bool) size : semCheckableSize b size <-> b.
Lemma semCheckableBool (b : bool) : semCheckable b <-> b.