Admitted. (* OUT-OF-SCOPE *)
Inductive next_nat : nat -> nat -> Prop :=
| nn : forall n:nat, next_nat n (S n).
Derive ArbitrarySizedSuchThat for (fun n => next_nat n m).
Derive SizeMonotonicSuchThatOpt for (fun n => next_nat n m).
Derive GenSizedSuchThatSizeMonotonicOpt for (fun n => next_nat n m).
Derive SizedProofEqs for (fun n => next_nat n m).
Derive GenSizedSuchThatCorrect for (fun n => next_nat n m).
Derive ArbitrarySizedSuchThat for (fun n => next_nat m n).
Derive SizeMonotonicSuchThatOpt for (fun n => next_nat m n).
Derive GenSizedSuchThatSizeMonotonicOpt for (fun n => next_nat n m).
Derive SizedProofEqs for (fun n => next_nat n m).
Derive GenSizedSuchThatCorrect for (fun n => next_nat n m).
Inductive next_even : nat -> nat -> Prop :=
| ne_1 : forall n, ev (S n) -> next_even n (S n)
| ne_2 : forall n, ev (S (S n)) -> next_even n (S (S n)).
Derive ArbitrarySizedSuchThat for (fun n => next_even n m).
Derive SizeMonotonicSuchThatOpt for (fun n => next_even n m).
Derive GenSizedSuchThatSizeMonotonicOpt for (fun n => next_even n m).
Derive SizedProofEqs for (fun n => next_even n m).
Derive GenSizedSuchThatCorrect for (fun n => next_even n m).
Derive ArbitrarySizedSuchThat for (fun n => next_even m n).
Derive SizeMonotonicSuchThatOpt for (fun n => next_even m n).
Derive GenSizedSuchThatSizeMonotonicOpt for (fun n => next_even n m).
Derive SizedProofEqs for (fun n => next_even n m).
Derive GenSizedSuchThatCorrect for (fun n => next_even n m).

Theorem O_le_n : forall n,
0 <= n.