(* Anomaly see Issue #15413 Combined Scheme Even_Odd_mutsind from Even_Odd_sind, Odd_Even_sind. *)
(** additional versions of parity predicates in [Type] useful for eliminating into [Type], but still with opaque proofs *)
Definition EvenT n := { m | n = 2 * m }.
Definition OddT n := { m | n = 2 * m + 1 }.

(* Specifications: *)
Lemma EvenT_0 : EvenT 0.
Lemma OddT_1 : OddT 1.
Lemma EvenT_S_OddT n : EvenT (S n) -> OddT n.
Lemma OddT_S_EvenT n : OddT (S n) -> EvenT n.
Lemma even_EvenT : forall n, even n = true -> EvenT n.
Lemma odd_OddT : forall n, odd n = true -> OddT n.
Lemma EvenT_Even n : EvenT n -> Even n.
Lemma OddT_EvenT_rect (P Q : nat -> Type) :
(forall n, EvenT n -> Q n -> P (S n)) ->
Q 0 -> (forall n, OddT n -> P n -> Q (S n)) -> forall n, OddT n -> P n.
Lemma EvenT_OddT_rect (P Q : nat -> Type) :
(forall n, EvenT n -> Q n -> P (S n)) ->
Q 0 -> (forall n, OddT n -> P n -> Q (S n)) -> forall n, EvenT n -> Q n.