Section projection.
Variable A : Set.
Variable P : A -> Prop.
Definition projP1 (H : sig P) := let (x, h) := H in x.
Definition projP2 (H : sig P) :=
let (x, h) as H return (P (projP1 H)) := H in h.
End projection.
(*###########################################################################*)
(* Declaring some realtions on natural numbers for stepl and stepr tactics.  *)
(*###########################################################################*)

(* Specifications: *)
Lemma le_stepl: forall x y z, le x y -> x=z -> le z y.
Lemma le_stepr: forall x y z, le x y -> y=z -> le x z.
Lemma lt_stepl: forall x y z, lt x y -> x=z -> lt z y.
Lemma lt_stepr: forall x y z, lt x y -> y=z -> lt x z.
Lemma neq_stepl:forall (x y z:nat), x<>y -> x=z -> z<>y.
Lemma neq_stepr:forall (x y z:nat), x<>y -> y=z -> x<>z.
Declare Left Step le_stepl.