A weird induction principle
Consider the following context :
Section weird_induc_proof.
Variable P : nat -> Prop.
Variable f : nat -> nat.
Hypothesis f_strict_mono : forall n p:nat, n < p -> f n < f p.
Hypothesis f_O : 0 < f 0.
Hypothesis P0 : P 0.
Hypothesis P_Sn_n : forall n:nat, P (S n) -> P n.
Hypothesis f_P : forall n:nat, P n -> P (f n).
Prove the following theorem :
Theorem weird_induc : forall n:nat, P n.
Hints and Notes
It would be a good idea to show some lemmas before proving yhe
theorem itself.
This exercise was suggested by H. Sudbrock.
Solution
Look at the file weird_induc.v.