Definition genChecker c := fmap successful c.
Class UnsizedChecker (c : Checker) :=
{
unsizedChecker :
forall s1 s2 : nat, semGenSize (genChecker c) s1 <--> semGenSize (genChecker c) s2
}.
Class SizeMonotonicChecker (c : Checker) :=
{
monotonicChecker :
forall s1 s2, s1 <= s2 ->
semGenSize (genChecker c) s1 \subset semGenSize (genChecker c) s2
}.

(* Specifications: *)
Lemma unsizedChecker_alt_def (c : Checker) `{UnsizedChecker c} :
forall s1 s2, semCheckerSize c s1 <-> semCheckerSize c s2.
Lemma monotonicChecker_alt_def (c : Checker) `{SizeMonotonicChecker c} :
forall s1 s2, s1 <= s2 -> semCheckerSize c s2 -> semCheckerSize c s1.