Declare Right Step le_stepr.
Declare Left Step lt_stepl.
Declare Right Step lt_stepr.
Declare Left Step neq_stepl.
Declare Right Step neq_stepr.
(*###########################################################################*)
(** Some random facts about natural numbers, positive numbers and integers   *)
(*###########################################################################*)

(* Specifications: *)
Lemma not_O_S : forall n : nat, n <> 0 -> {p : nat | n = S p}.
Lemma lt_minus_neq : forall m n : nat, m < n -> n - m <> 0.
Lemma lt_minus_eq_0 : forall m n : nat, m < n -> m - n = 0.
Lemma le_plus_Sn_1_SSn : forall n : nat, S n + 1 <= S (S n).
Lemma le_plus_O_l : forall p q : nat, p + q <= 0 -> p = 0.
Lemma le_plus_O_r : forall p q : nat, p + q <= 0 -> q = 0.
Lemma minus_pred : forall m n : nat, 0 < n -> pred m - pred n = m - n.
(*###########################################################################*)
(* Declaring some realtions on integers for stepl and stepr tactics.         *)
(*###########################################################################*)
Lemma Zle_stepl: forall x y z, (x<=y)%Z -> x=z -> (z<=y)%Z.
Lemma Zle_stepr: forall x y z, (x<=y)%Z -> y=z -> (x<=z)%Z.
Lemma Zlt_stepl: forall x y z, (x<y)%Z -> x=z -> (z<y)%Z.
Lemma Zlt_stepr: forall x y z, (x<y)%Z -> y=z -> (x<z)%Z.
Lemma Zneq_stepl:forall (x y z:Z), (x<>y)%Z -> x=z -> (z<>y)%Z.
Lemma Zneq_stepr:forall (x y z:Z), (x<>y)%Z -> y=z -> (x<>z)%Z.
Declare Left Step Zle_stepl.