Admitted. (* Higher Order *)
Instance testSuchThat_Disj {A B : Type} (P : A -> Prop) (Q : B -> Prop)
(prop : A -> B -> Prop)
`{Checkable (forall a, P a -> forall b, prop a b)}
`{Checkable (forall b, Q b -> forall a, prop a b)} :
Checkable (forall a b, P a \/ Q b -> prop a b) :=
{| checker f :=
disjoin (Datatypes.cons (checker (fun a P b => f a b _ ))
(Datatypes.cons (checker (fun b Q a => f a b _))
Datatypes.nil)) |}.

Lemma zero_or_succ :
forall n : nat, n = 0 \/ n = S (pred n).