(******************************************  Copied From Coq.Logic.JMeq.  No longer involving JMeq_eq, which is potentially inconsistenty with homotopy type theory.  TODO: let reflexivity, symmetry and transitivity work again.  ******************************************)
Definition JMeq {A:Type} (x:A) {B:Type} (y: B): Prop :=
{H: @eq Type A B | @eq_rect Type A (fun T: Type => T) x B H = y}.
Hint Resolve JMeq_refl.
Hint Immediate JMeq_sym.
(** [JMeq] is equivalent to [eq_dep Type (fun X => X)] *)

Lemma JMeq_eq_dep_id :
forall (A:Type) (B:Type) (x:A) (y:B), JMeq x y -> eq_dep Type (fun X:Type => X) A x B y.