Program Instance unsizedMonotonicChecker (c : Checker) `{UnsizedChecker c} :
SizeMonotonicChecker c.
Next Obligation.
rewrite unsizedChecker. move => b Hb. by eauto.
Qed.

(* Specifications: *)
Lemma mapTotalResult_idSize {C} `{Checkable C} (f : Result -> Result) (c : C) s :
(forall res, resultSuccessful res = resultSuccessful (f res)) ->
(semCheckerSize (mapTotalResult f c) s <-> semCheckableSize c s).
Lemma mapTotalResult_id {C} `{Checkable C} (f : Result -> Result) (c : C) :
(forall res, resultSuccessful res = resultSuccessful (f res)) ->
(semChecker (mapTotalResult f c) <-> semCheckable c).
Lemma semCallback_idSize {C} `{Checkable C} (cb : Callback) (c : C) (s : nat) :
semCheckerSize (callback cb c) s <-> semCheckableSize c s.
Lemma semCallback_id {C} `{Checkable C} (cb : Callback) (c : C) :
semChecker (callback cb c) <-> semCheckable c.
Lemma semWhenFail_idSize {C} `{Checkable C} (str : String.string) (c : C) s :
semCheckerSize (whenFail str c) s <-> semCheckableSize c s.
Lemma semWhenFail_id {C} `{Checkable C} (str : String.string) (c : C) :
semChecker (whenFail str c) <-> semCheckable c.
Lemma semPrintTestCase_idSize {C} `{Checkable C} (str : String.string) (c : C) s :
semCheckerSize (printTestCase str c) s <-> semCheckableSize c s.
Lemma semPrintTestCase_id {C} `{Checkable C} (str : String.string) (c : C) :
semChecker (printTestCase str c) <-> semCheckable c.
Lemma semShrinking_idSize {C A} {HCheck : Checkable C}
(sh : A -> list A) (x : A) (pf : A -> C) (s : nat) :
semCheckerSize (shrinking sh x pf) s <->
semCheckableSize (pf x) s.
Lemma semShrinking_id {C A} {HCheck : Checkable C}
(sh : A -> list A) (x : A) (pf : A -> C)  :
semChecker (shrinking sh x pf) <->
semCheckable (pf x).