(** Stronger variant of induction with assumptions [n >= 0] ([n < 0]) in the induction step *)
Section Induction.
Variable A : t -> Prop.
Hypothesis A_wd : Proper (eq==>iff) A.
Section Center.
Variable z : t. (* A z is the basis of induction *)
Section RightInduction.
Let A' (n : t) := forall m, z <= m -> m < n -> A m.
Let right_step :=   forall n, z <= n -> A n -> A (S n).
Let right_step' :=  forall n, z <= n -> A' n -> A n.
Let right_step'' := forall n, A' n <-> A' (S n).

(* Specifications: *)
Theorem strong_right_induction: right_step' -> forall n, z <= n -> A n.
Theorem right_induction : A z -> right_step -> forall n, z <= n -> A n.
Theorem right_induction' :
(forall n, n <= z -> A n) -> right_step -> forall n, A n.
Theorem strong_right_induction' :
(forall n, n <= z -> A n) -> right_step' -> forall n, A n.