Section strong.
Variable P : nat -> Prop.
Hypothesis PH : forall n, (forall m, m < n -> P m) -> P n.
induction n; simpl; intuition; apply PH; intuition.
elimtype False; omega.
Qed.
intros; eapply strong'; eauto.
Qed.
End strong.
induction n as [n] using strong; simpl; intuition.
destruct n as [|n]; simpl in *; intuition.
discriminate.
destruct n as [|n]; simpl in *; intuition.
do 2 f_equal.
replace (div2 n + S (div2 n + 0)) with (S (div2 n + (div2 n + 0))); auto.
Qed.
induction n as [n] using strong; simpl; intuition.
destruct n as [|n]; simpl in *; intuition.
destruct n as [|n]; simpl in *; intuition.
discriminate.
f_equal.
replace (div2 n + S (div2 n + 0)) with (S (div2 n + (div2 n + 0))); auto.
Qed.

Theorem drop_mod2 : forall n k,
2 * k <= n
-> mod2 (n - 2 * k) = mod2 n.