(* $Id: EqTDep.v,v 1.2 1999/10/05 10:35:36 boulme Exp $ *)
Set Implicit Arguments.
Unset Strict Implicit.

Section Dependent_EqT.

Variable U : Type.
Variable P : U -> Type.

Inductive eqT_dep (p : U) (x : P p) : forall q : U, P q -> Prop :=
    eqT_dep_intro : eqT_dep x x.
Hint Resolve eqT_dep_intro: eqT_dep.

Lemma eqT_dep_sym :
 forall (p q : U) (x : P p) (y : P q), eqT_dep x y -> eqT_dep y x.
Proof.
  simple induction 1; auto with eqT_dep.
Qed.
Hint Immediate eqT_dep_sym: eqT_dep.

Lemma eqT_dep_trans :
 forall (p q r : U) (x : P p) (y : P q) (z : P r),
 eqT_dep x y -> eqT_dep y z -> eqT_dep x z.
Proof.
  simple induction 1; auto with eqT_dep.
Qed.

End Dependent_EqT.

Hint Resolve eqT_dep_intro eqT_dep_sym: eqT_dep.