(** Inductive definition of even and odd *)
Inductive Even_alt : nat -> Prop :=
| Even_alt_O : Even_alt 0
| Even_alt_S : forall n, Odd_alt n -> Even_alt (S n)
with Odd_alt : nat -> Prop :=
| Odd_alt_S : forall n, Even_alt n -> Odd_alt (S n).

Lemma Even_Odd_ind (P Q : nat -> Prop) :
(forall n, Even n -> Q n -> P (S n)) ->
Q 0 -> (forall n, Odd n -> P n -> Q (S n)) -> forall n, Even n -> Q n.